Example usage for org.apache.cassandra.db.marshal CompositeType split

List of usage examples for org.apache.cassandra.db.marshal CompositeType split

Introduction

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

Prototype

@Override
    public ByteBuffer[] split(ByteBuffer name) 

Source Link

Usage

From source file:com.stratio.cassandra.index.util.ByteBufferUtils.java

License:Apache License

/**
 * Returns a {@code String} representation of {@code byteBuffer} validated by {@code type}.
 *
 * @param byteBuffer the {@link java.nio.ByteBuffer} to be converted to {@code String}.
 * @param type       {@link AbstractType} of {@code byteBuffer}.
 * @return a {@code String} representation of {@code byteBuffer} validated by {@code type}.
 *///  w ww.  j av  a  2 s .  c om
public static String toString(ByteBuffer byteBuffer, AbstractType<?> type) {
    if (type instanceof CompositeType) {
        CompositeType composite = (CompositeType) type;
        List<AbstractType<?>> types = composite.types;
        ByteBuffer[] components = composite.split(byteBuffer);
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < components.length; i++) {
            AbstractType<?> componentType = types.get(i);
            ByteBuffer component = components[i];
            sb.append(componentType.compose(component));
            if (i < types.size() - 1) {
                sb.append(':');
            }
        }
        return sb.toString();
    } else {
        return type.compose(byteBuffer).toString();
    }
}

From source file:com.tuplejump.stargate.cassandra.RowIndexSupport.java

License:Apache License

public Pair<Pair<CompositeType.Builder, StringBuilder>, String> primaryKeyAndActualColumnName(
        boolean withPkBuilder, ByteBuffer rowKey, Column column) {
    AbstractType<?> rowKeyComparator = table.metadata.getKeyValidator();
    CompositeType baseComparator = (CompositeType) table.getComparator();
    CFDefinition cfDef = table.metadata.getCfDef();
    int prefixSize = baseComparator.types.size() - (cfDef.hasCollections ? 2 : 1);
    List<AbstractType<?>> types = baseComparator.types;
    int idx = types.get(types.size() - 1) instanceof ColumnToCollectionType ? types.size() - 2
            : types.size() - 1;/*from  w w  w. j av  a  2 s .  co  m*/
    ByteBuffer[] components = baseComparator.split(column.name());
    String colName = CFDefinition.definitionType.getString(components[idx]);
    if (withPkBuilder) {
        Pair<CompositeType.Builder, StringBuilder> builder = pkBuilder(rowKeyComparator, rowKey, baseComparator,
                prefixSize, components);
        return Pair.create(builder, colName);
    } else {
        return Pair.create(null, colName);
    }
}

From source file:com.tuplejump.stargate.cassandra.RowIndexSupport.java

License:Apache License

protected List<Field> collectionFields(CollectionType validator, String colName, Column column) {
    CompositeType baseComparator = (CompositeType) table.getComparator();
    ByteBuffer[] components = baseComparator.split(column.name());
    List<Field> fields = new ArrayList<>();
    FieldType[] fieldTypesArr = options.collectionFieldTypes.get(colName);
    FieldType docValueType = options.collectionFieldDocValueTypes.get(colName);
    AbstractType keyType = validator.nameComparator();
    AbstractType valueType = validator.valueComparator();
    if (validator instanceof MapType) {
        ByteBuffer keyBuf = components[components.length - 1];
        if (fieldTypesArr != null) {
            fields.add(Fields.field(colName + "._key", keyType, keyBuf, fieldTypesArr[0]));
            fields.add(Fields.field(colName + "._value", valueType, column.value(), fieldTypesArr[1]));
            fields.add(Fields.field((colName + "." + keyType.getString(keyBuf)).toLowerCase(), valueType,
                    column.value(), fieldTypesArr[1]));
        }//from  ww w . jav  a  2s  .  co m
        if (docValueType != null)
            fields.add(Fields.field((colName + "." + keyType.getString(keyBuf)).toLowerCase(), valueType,
                    column.value(), docValueType));
    } else if (validator instanceof SetType) {
        if (fieldTypesArr != null)
            fields.add(Fields.field(colName, keyType, components[components.length - 1], fieldTypesArr[0]));
        if (docValueType != null)
            fields.add(Fields.field(colName, keyType, components[components.length - 1], docValueType));
    } else if (validator instanceof ListType) {
        if (fieldTypesArr != null)
            fields.add(Fields.field(colName, valueType, column.value(), fieldTypesArr[0]));
        if (docValueType != null)
            fields.add(Fields.field(colName, valueType, column.value(), docValueType));
    } else
        throw new UnsupportedOperationException("Unsupported collection type " + validator);

    return fields;
}

From source file:com.tuplejump.stargate.cassandra.RowScanner.java

License:Apache License

protected Column getMetaColumn(Column firstColumn, String colName, Float score) {
    CompositeType baseComparator = (CompositeType) table.getComparator();
    ByteBuffer[] components = baseComparator.split(firstColumn.name());
    int prefixSize = baseComparator.types.size() - (table.metadata.getCfDef().hasCollections ? 2 : 1);
    CompositeType.Builder builder = baseComparator.builder();
    for (int i = 0; i < prefixSize; i++)
        builder.add(components[i]);/*from   ww w.  ja  va 2 s . c  o  m*/
    builder.add(UTF8Type.instance.decompose(colName));
    ByteBuffer finalColumnName = builder.build();
    return new Column(finalColumnName, UTF8Type.instance.decompose("{\"score\":" + score.toString() + "}"));
}

From source file:com.tuplejump.stargate.cassandra.RowScanner.java

License:Apache License

public static ByteBuffer[] getCompositePKComponents(ColumnFamilyStore baseCfs, ByteBuffer pk) {
    CompositeType baseComparator = (CompositeType) baseCfs.getComparator();
    return baseComparator.split(pk);
}

From source file:com.tuplejump.stargate.Fields.java

License:Apache License

public static String toString(ByteBuffer byteBuffer, AbstractType<?> type) {
    if (type instanceof CompositeType) {
        CompositeType composite = (CompositeType) type;
        List<AbstractType<?>> types = composite.types;
        ByteBuffer[] components = composite.split(byteBuffer);
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < components.length; i++) {
            AbstractType<?> componentType = types.get(i);
            ByteBuffer component = components[i];
            sb.append(componentType.compose(component));
            if (i < types.size() - 1) {
                sb.append(':');
            }//from   w  ww . ja  v a  2  s.c om
        }
        return sb.toString();
    } else {
        return type.compose(byteBuffer).toString();
    }
}

From source file:com.tuplejump.stargate.lucene.query.function.AggregateFunction.java

License:Apache License

public void load(Tuple tuple, Row row, ColumnFamilyStore table) {
    CompositeType baseComparator = (CompositeType) table.getComparator();
    ColumnFamily cf = row.cf;/*from   w  w w.j  a v a2  s  .  com*/
    CFDefinition cfDef = table.metadata.getCfDef();
    ByteBuffer rowKey = row.key.key;
    AbstractType<?> keyValidator = table.metadata.getKeyValidator();
    Collection<Column> cols = cf.getSortedColumns();
    boolean keyColumnsAdded = false;
    for (Column column : cols) {
        if (!keyColumnsAdded) {
            ByteBuffer[] keyComponents = cfDef.hasCompositeKey
                    ? ((CompositeType) table.metadata.getKeyValidator()).split(rowKey)
                    : new ByteBuffer[] { rowKey };
            List<AbstractType<?>> keyValidators = keyValidator.getComponents();
            for (Map.Entry<Integer, Pair<String, ByteBuffer>> entry : options.partitionKeysIndexed.entrySet()) {
                ByteBuffer value = keyComponents[entry.getKey()];
                AbstractType<?> validator = keyValidators.get(entry.getKey());
                String actualColumnName = entry.getValue().left;
                for (String field : positions.keySet()) {
                    if (actualColumnName.equalsIgnoreCase(field)) {
                        tuple.tuple[this.positions.get(field)] = validator.compose(value);
                    }
                }
            }
            keyColumnsAdded = true;
        }
        String actualColumnName = CassandraUtils.getColumnNameStr(baseComparator, column.name());
        ByteBuffer colValue = column.value();
        AbstractType<?> valueValidator = table.metadata.getValueValidatorFromColumnName(column.name());
        if (valueValidator.isCollection()) {
            CollectionType validator = (CollectionType) valueValidator;
            AbstractType keyType = validator.nameComparator();
            AbstractType valueType = validator.valueComparator();
            ByteBuffer[] components = baseComparator.split(column.name());
            ByteBuffer keyBuf = components[components.length - 1];
            if (valueValidator instanceof MapType) {
                actualColumnName = actualColumnName + "." + keyType.compose(keyBuf);
                valueValidator = valueType;
            } else if (valueValidator instanceof SetType) {
                colValue = keyBuf;
                valueValidator = keyType;
            } else {
                valueValidator = valueType;
            }
        }
        for (String field : positions.keySet()) {
            if (actualColumnName.equalsIgnoreCase(field)) {
                tuple.tuple[this.positions.get(field)] = valueValidator.compose(colValue);
            }
        }
    }
}