Example usage for org.apache.cassandra.db.marshal InetAddressType fromString

List of usage examples for org.apache.cassandra.db.marshal InetAddressType fromString

Introduction

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

Prototype

public ByteBuffer fromString(String source) throws MarshalException 

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 va  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;
}