List of usage examples for org.apache.cassandra.db.marshal CollectionType valueComparator
public abstract AbstractType<?> valueComparator();
From source file:com.stratio.cassandra.index.RegularCellsMapper.java
License:Apache License
@SuppressWarnings("rawtypes") public Columns columns(Row row) { ColumnFamily columnFamily = row.cf;/*from w w w . j av a 2 s. c om*/ Columns columns = new Columns(); // Get row's columns iterator skipping clustering column Iterator<Cell> cellIterator = columnFamily.iterator(); cellIterator.next(); // Stuff for grouping collection columns (sets, lists and maps) String name; CollectionType collectionType; while (cellIterator.hasNext()) { Cell cell = cellIterator.next(); CellName cellName = cell.name(); ColumnDefinition columnDefinition = metadata.getColumnDefinition(cellName); if (columnDefinition == null) { continue; } AbstractType<?> valueType = columnDefinition.type; ByteBuffer cellValue = cell.value(); name = cellName.cql3ColumnName(metadata).toString(); if (valueType.isCollection()) { collectionType = (CollectionType<?>) valueType; switch (collectionType.kind) { case SET: { AbstractType<?> type = collectionType.nameComparator(); ByteBuffer value = cellName.collectionElement(); columns.add(new Column(name, value, type)); break; } case LIST: { AbstractType<?> type = collectionType.valueComparator(); columns.add(new Column(name, cellValue, type)); break; } case MAP: { AbstractType<?> type = collectionType.valueComparator(); ByteBuffer keyValue = cellName.collectionElement(); AbstractType<?> keyType = collectionType.nameComparator(); String nameSufix = keyType.compose(keyValue).toString(); columns.add(new Column(name, nameSufix, cellValue, type)); break; } } } else { columns.add(new Column(name, cellValue, valueType)); } } return columns; }
From source file:com.stratio.cassandra.lucene.column.ColumnsMapper.java
License:Apache License
private void addColumns(Columns columns, Cell cell) { if (cell != null) { ColumnDefinition columnDefinition = cell.column(); String name = columnDefinition.name.toString(); AbstractType<?> type = cell.column().type; ByteBuffer value = cell.value(); ColumnBuilder builder = Column.builder(name); if (type.isCollection() && !type.isFrozenCollection()) { CollectionType<?> collectionType = (CollectionType<?>) type; switch (collectionType.kind) { case SET: { type = collectionType.nameComparator(); value = cell.path().get(0); addColumns(columns, builder, type, value); break; }//from w w w. ja v a 2 s.com case LIST: { type = collectionType.valueComparator(); addColumns(columns, builder, type, value); break; } case MAP: { type = collectionType.valueComparator(); ByteBuffer keyValue = cell.path().get(0); AbstractType<?> keyType = collectionType.nameComparator(); String nameSuffix = keyType.compose(keyValue).toString(); addColumns(columns, builder.withMapName(nameSuffix), type, value); break; } default: { throw new IndexException("Unknown collection type %s", collectionType.kind); } } } else { addColumns(columns, Column.builder(name), type, value); } } }
From source file:com.stratio.cassandra.lucene.column.ColumnsMapper.java
License:Apache License
private void addColumns(Columns columns, ColumnBuilder builder, AbstractType type, ByteBuffer value) { if (type.isCollection()) { value = ByteBufferUtil.clone(value); CollectionType<?> collectionType = (CollectionType<?>) type; switch (collectionType.kind) { case SET: { AbstractType<?> nameType = collectionType.nameComparator(); int colSize = CollectionSerializer.readCollectionSize(value, Server.CURRENT_VERSION); for (int j = 0; j < colSize; j++) { ByteBuffer itemValue = CollectionSerializer.readValue(value, Server.CURRENT_VERSION); addColumns(columns, builder, nameType, itemValue); }/*from ww w . j a va2s . c om*/ break; } case LIST: { AbstractType<?> valueType = collectionType.valueComparator(); int colSize = CollectionSerializer.readCollectionSize(value, Server.CURRENT_VERSION); for (int j = 0; j < colSize; j++) { ByteBuffer itemValue = CollectionSerializer.readValue(value, Server.CURRENT_VERSION); addColumns(columns, builder, valueType, itemValue); } break; } case MAP: { AbstractType<?> keyType = collectionType.nameComparator(); AbstractType<?> valueType = collectionType.valueComparator(); int colSize = MapSerializer.readCollectionSize(value, Server.CURRENT_VERSION); for (int j = 0; j < colSize; j++) { ByteBuffer mapKey = MapSerializer.readValue(value, Server.CURRENT_VERSION); ByteBuffer mapValue = MapSerializer.readValue(value, Server.CURRENT_VERSION); String itemName = keyType.compose(mapKey).toString(); collectionType.nameComparator(); addColumns(columns, builder.withMapName(itemName), valueType, mapValue); } break; } default: { throw new IndexException("Unknown collection type %s", collectionType.kind); } } } else if (type instanceof UserType) { UserType userType = (UserType) type; ByteBuffer[] values = userType.split(value); for (int i = 0; i < userType.fieldNames().size(); i++) { String itemName = userType.fieldNameAsString(i); AbstractType<?> itemType = userType.fieldType(i); // This only occurs in UDT not fully composed if (values[i] != null) { addColumns(columns, builder.withUDTName(itemName), itemType, values[i]); } } } else if (type instanceof TupleType) { TupleType tupleType = (TupleType) type; ByteBuffer[] values = tupleType.split(value); for (Integer i = 0; i < tupleType.size(); i++) { String itemName = i.toString(); AbstractType<?> itemType = tupleType.type(i); addColumns(columns, builder.withUDTName(itemName), itemType, values[i]); } } else { if (value != null) { columns.add(builder.buildWithDecomposed(value, type)); } } }
From source file:com.stratio.cassandra.lucene.service.RegularCellsMapper.java
License:Apache License
/** * Returns the columns contained in the regular cells specified {@link Row}. Note that not all the contained columns * are returned, but only the regular cell ones. * * @param row A {@link Row}./*from w w w . java 2s.c o m*/ * @return The columns contained in the regular cells specified {@link Row}. */ @SuppressWarnings("rawtypes") public Columns columns(Row row) { ColumnFamily columnFamily = row.cf; Columns columns = new Columns(); // Stuff for grouping collection columns (sets, lists and maps) String name; CollectionType collectionType; for (Cell cell : columnFamily) { CellName cellName = cell.name(); ColumnDefinition columnDefinition = metadata.getColumnDefinition(cellName); if (columnDefinition == null) { continue; } AbstractType<?> valueType = columnDefinition.type; ByteBuffer cellValue = cell.value(); name = cellName.cql3ColumnName(metadata).toString(); if (valueType.isCollection()) { collectionType = (CollectionType<?>) valueType; switch (collectionType.kind) { case SET: { AbstractType<?> type = collectionType.nameComparator(); ByteBuffer value = cellName.collectionElement(); columns.add(Column.fromDecomposed(name, value, type, true)); break; } case LIST: { AbstractType<?> type = collectionType.valueComparator(); columns.add(Column.fromDecomposed(name, cellValue, type, true)); break; } case MAP: { AbstractType<?> type = collectionType.valueComparator(); ByteBuffer keyValue = cellName.collectionElement(); AbstractType<?> keyType = collectionType.nameComparator(); String nameSufix = keyType.compose(keyValue).toString(); columns.add(Column.fromDecomposed(name, nameSufix, cellValue, type, true)); break; } } } else { columns.add(Column.fromDecomposed(name, cellValue, valueType, false)); } } return columns; }
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])); }/* w w w.j a v a2 s . c o 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.TableMapper.java
License:Apache License
public void load(Map<String, Integer> positions, Tuple tuple, Row row) { ColumnFamily cf = row.cf;//from w w w . ja va2 s . c o m ByteBuffer rowKey = row.key.getKey(); Collection<Cell> cols = cf.getSortedColumns(); boolean keyColumnsAdded = false; for (Cell column : cols) { if (!keyColumnsAdded) { addKeyColumns(positions, tuple, rowKey); keyColumnsAdded = true; } String actualColumnName = column.name().cql3ColumnName(table.metadata).toString(); ByteBuffer colValue = column.value(); AbstractType<?> valueValidator = table.metadata.getValueValidator(column.name()); if (valueValidator.isCollection()) { CollectionType validator = (CollectionType) valueValidator; AbstractType keyType = validator.nameComparator(); AbstractType valueType = validator.valueComparator(); ByteBuffer keyBuf = column.name().collectionElement(); 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.getTuple()[positions.get(field)] = valueValidator.compose(colValue); } } } }
From source file:com.tuplejump.stargate.Fields.java
License:Apache License
public static ByteBuffer defaultValue(AbstractType type, boolean min) { CQL3Type cqlType = type.asCQL3Type(); if (cqlType == CQL3Type.Native.INT || cqlType == CQL3Type.Native.VARINT) { return ByteBufferUtil.bytes(min ? Integer.MIN_VALUE : Integer.MAX_VALUE); } else if (cqlType == CQL3Type.Native.BIGINT) { return ByteBufferUtil.bytes(min ? Long.MIN_VALUE : Long.MAX_VALUE); } else if (cqlType == CQL3Type.Native.DECIMAL || cqlType == CQL3Type.Native.DOUBLE) { return ByteBufferUtil.bytes(min ? Double.MIN_VALUE : Double.MAX_VALUE); } else if (cqlType == CQL3Type.Native.FLOAT) { return ByteBufferUtil.bytes(min ? Float.MIN_VALUE : Float.MAX_VALUE); } else if (cqlType == CQL3Type.Native.TEXT || cqlType == CQL3Type.Native.VARCHAR) { return ByteBufferUtil.bytes(""); } else if (cqlType == CQL3Type.Native.UUID) { return ByteBufferUtil.bytes(UUID.randomUUID()); } else if (cqlType == CQL3Type.Native.TIMEUUID) { return ByteBufferUtil.bytes(UUIDGen.getTimeUUID(0)); } else if (cqlType == CQL3Type.Native.TIMESTAMP) { return ByteBufferUtil.bytes(0l); } else if (cqlType == CQL3Type.Native.BOOLEAN) { return BooleanType.instance.decompose(min ? false : true); } else if (type.isCollection()) { CollectionType collectionType = (CollectionType) type; List<Pair<ByteBuffer, Column>> collection = new ArrayList<>(); ByteBuffer dummyColumn = defaultValue(collectionType.nameComparator()); collection.add(Pair.create(dummyColumn, new Column(dummyColumn, defaultValue(collectionType.valueComparator(), min)))); return collectionType.serialize(collection); } else {/* w w w . j a v a 2 s . c o m*/ return ByteBufferUtil.EMPTY_BYTE_BUFFER; } }