Example usage for org.apache.cassandra.db.marshal CounterColumnType decompose

List of usage examples for org.apache.cassandra.db.marshal CounterColumnType decompose

Introduction

In this page you can find the example usage for org.apache.cassandra.db.marshal CounterColumnType decompose.

Prototype

@Override
    public ByteBuffer decompose(Long value) 

Source Link

Usage

From source file:org.pentaho.cassandra.legacy.CassandraColumnMetaData.java

License:Apache License

/**
 * Static utility to decompose a Kettle value to a ByteBuffer. Note - does not check if the kettle value is null.
 *
 * @param vm/*from w  ww .j  a v  a 2  s  .  c o m*/
 *          the ValueMeta for the Kettle value
 * @param value
 *          the actual Kettle value
 * @return a ByteBuffer encapsulating the bytes for the decomposed value
 * @throws KettleException
 *           if a problem occurs
 */
public ByteBuffer kettleValueToByteBuffer(ValueMetaInterface vm, Object value, boolean isKey)
        throws KettleException {

    String fullTransCoder = m_defaultValidationClass;

    // check the key first
    if (isKey) {
        fullTransCoder = m_keyValidator;
    } else {
        fullTransCoder = m_columnMeta.get(vm.getName());
        if (fullTransCoder == null) {
            // use default if not in column meta data
            fullTransCoder = m_defaultValidationClass;
        }
    }

    // we can safely strip off ReversedType, as the base type
    // is what we need in this case
    fullTransCoder = stripReversedTypeIfNecessary(fullTransCoder);

    String transCoder = fullTransCoder;

    // if it's a composite type make sure that we check only against the
    // primary type
    if (transCoder.indexOf('(') > 0) {
        transCoder = transCoder.substring(0, transCoder.indexOf('('));
    }

    ByteBuffer decomposed = null;
    if (transCoder.indexOf("UTF8Type") > 0) { //$NON-NLS-1$
        UTF8Type u = UTF8Type.instance;
        decomposed = u.decompose(vm.getString(value));
    } else if (transCoder.indexOf("AsciiType") > 0) { //$NON-NLS-1$
        AsciiType at = AsciiType.instance;
        decomposed = at.decompose(vm.getString(value));
    } else if (transCoder.indexOf("InetAddressType") > 0) { //$NON-NLS-1$
        InetAddressType it = InetAddressType.instance;
        decomposed = it.fromString(vm.getString(value));
    } else if (transCoder.indexOf("LongType") > 0) { //$NON-NLS-1$
        LongType lt = LongType.instance;
        decomposed = lt.decompose(vm.getInteger(value));
    } else if (transCoder.indexOf("DoubleType") > 0) { //$NON-NLS-1$
        DoubleType dt = DoubleType.instance;
        decomposed = dt.decompose(vm.getNumber(value));
    } else if (transCoder.indexOf("DateType") > 0) { //$NON-NLS-1$
        DateType dt = DateType.instance;
        decomposed = dt.decompose(vm.getDate(value));
    } else if (transCoder.indexOf("TimestampType") > 0) { //$NON-NLS-1$
        AbstractType<java.util.Date> tt = getTimestampType();
        if (tt == null) {
            throw new KettleException(BaseMessages.getString(PKG,
                    "CassandraColumnMetaData.Error.Cassandra1ClientAgainstCassandra2Server")); //$NON-NLS-1$
        }
        decomposed = tt.decompose(vm.getDate(value));
    } else if (transCoder.indexOf("IntegerType") > 0) { //$NON-NLS-1$
        IntegerType it = IntegerType.instance;
        decomposed = it.decompose(vm.getBigNumber(value).toBigInteger());
    } else if (transCoder.indexOf("CounterColumnType") > 0) { //$NON-NLS-1$
        CounterColumnType cct = CounterColumnType.instance;
        decomposed = cct.decompose(vm.getInteger(value));
    } else if (transCoder.indexOf("FloatType") > 0) { //$NON-NLS-1$
        FloatType ft = FloatType.instance;
        decomposed = ft.decompose(vm.getNumber(value).floatValue());
    } else if (transCoder.indexOf("LexicalUUIDType") > 0) { //$NON-NLS-1$
        LexicalUUIDType lt = LexicalUUIDType.instance;
        UUID uuid = UUID.fromString((vm.getString(value)));
        decomposed = lt.decompose(uuid);
    } else if (transCoder.indexOf("UUIDType") > 0) { //$NON-NLS-1$
        UUIDType ut = UUIDType.instance;
        UUID uuid = UUID.fromString((vm.getString(value)));
        decomposed = ut.decompose(uuid);
    } else if (transCoder.indexOf("BooleanType") > 0) { //$NON-NLS-1$
        BooleanType bt = BooleanType.instance;
        decomposed = bt.decompose(vm.getBoolean(value));
    } else if (transCoder.indexOf("Int32Type") > 0) { //$NON-NLS-1$
        Int32Type it = Int32Type.instance;
        decomposed = it.decompose(vm.getInteger(value).intValue());
    } else if (transCoder.indexOf("DecimalType") > 0) { //$NON-NLS-1$
        DecimalType dt = DecimalType.instance;
        decomposed = dt.decompose(vm.getBigNumber(value));
    } else if (transCoder.indexOf("BytesType") > 0) { //$NON-NLS-1$
        BytesType bt = BytesType.instance;
        decomposed = bt.decompose(ByteBuffer.wrap(vm.getBinary(value)));
    } else if (transCoder.indexOf("DynamicCompositeType") > 0) { //$NON-NLS-1$
        AbstractType<?> serializer = null;
        if (vm.isString()) {
            try {
                serializer = TypeParser.parse(fullTransCoder);
                decomposed = ((DynamicCompositeType) serializer).fromString(vm.getString(value));

            } catch (Exception e) {
                throw new KettleException(e.getMessage(), e);
            }
        } else {
            throw new KettleException(
                    BaseMessages.getString(PKG, "CassandraColumnMetaData.Error.CantConvertTypeThrift", //$NON-NLS-1$
                            vm.getTypeDesc(), fullTransCoder));
        }
    } else if (transCoder.indexOf("CompositeType") > 0) { //$NON-NLS-1$
        AbstractType<?> serializer = null;
        if (vm.isString()) {
            try {
                serializer = TypeParser.parse(fullTransCoder);
                decomposed = ((CompositeType) serializer).fromString(vm.toString());
            } catch (Exception e) {
                throw new KettleException(e.getMessage(), e);
            }
        } else {
            throw new KettleException(
                    BaseMessages.getString(PKG, "CassandraColumnMetaData.Error.CantConvertTypeThrift", //$NON-NLS-1$
                            vm.getTypeDesc(), fullTransCoder));
        }
    }

    if (decomposed == null) {
        throw new KettleException(BaseMessages.getString(PKG,
                "CassandraColumnMetaData.Error.UnableToConvertValue", vm.getName())); //$NON-NLS-1$
    }

    return decomposed;
}