List of usage examples for org.apache.cassandra.db.marshal AbstractType isCollection
public boolean isCollection()
From source file:com.impetus.client.cassandra.CassandraClientBase.java
License:Apache License
/** * Compose column value.//from w w w . j a v a 2 s. c o m * * @param cqlMetadata * the cql metadata * @param thriftColumnValue * the thrift column value * @param thriftColumnName * the thrift column name * @return the object */ private Object composeColumnValue(CqlMetadata cqlMetadata, byte[] thriftColumnValue, byte[] thriftColumnName) { Map<ByteBuffer, String> schemaTypes = cqlMetadata.getValue_types(); AbstractType<?> type = null; try { type = TypeParser.parse(schemaTypes.get(ByteBuffer.wrap(thriftColumnName))); } catch (SyntaxException | ConfigurationException ex) { log.error(ex.getMessage()); throw new KunderaException("Error while deserializing column value " + ex); } if (type.isCollection()) { return ((CollectionSerializer) type.getSerializer()) .deserializeForNativeProtocol(ByteBuffer.wrap(thriftColumnValue), 2); } return type.compose(ByteBuffer.wrap(thriftColumnValue)); }
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 a v a2 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.index.schema.ColumnMapper.java
License:Apache License
/** * Returns {@code true} if the specified Cassandra type/marshaller is supported, {@code false} otherwise. * * @param type A Cassandra type/marshaller. * @return {@code true} if the specified Cassandra type/marshaller is supported, {@code false} otherwise. *//*w ww. ja v a2s. c o m*/ public boolean supports(final AbstractType<?> type) { AbstractType<?> checkedType = type; if (type.isCollection()) { if (type instanceof MapType<?, ?>) { checkedType = ((MapType<?, ?>) type).values; } else if (type instanceof ListType<?>) { checkedType = ((ListType<?>) type).elements; } else if (type instanceof SetType) { checkedType = ((SetType<?>) type).elements; } } for (AbstractType<?> n : supportedTypes) { if (checkedType.getClass() == n.getClass()) { return true; } } return false; }
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; }//w w w.ja v a2 s .c o m 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.schema.mapping.Mapper.java
License:Apache License
/** * Returns {@code true} if the specified Cassandra type/marshaller is supported, {@code false} otherwise. * * @param type A Cassandra type/marshaller. * @return {@code true} if the specified Cassandra type/marshaller is supported, {@code false} otherwise. *///from w w w . ja va2 s. c o m protected boolean supports(final AbstractType<?> type) { AbstractType<?> checkedType = type; if (type.isCollection()) { if (type instanceof MapType<?, ?>) { checkedType = ((MapType<?, ?>) type).getValuesType(); } else if (type instanceof ListType<?>) { checkedType = ((ListType<?>) type).getElementsType(); } else if (type instanceof SetType) { checkedType = ((SetType<?>) type).getElementsType(); } } if (type instanceof ReversedType) { ReversedType reversedType = (ReversedType) type; checkedType = reversedType.baseType; } for (AbstractType<?> n : supportedTypes) { if (checkedType.getClass() == n.getClass()) { return true; } } return false; }
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 . jav a2 s. 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.CassandraUtils.java
License:Apache License
private static void addFieldType(String columnName, AbstractType validator, Properties properties, Map<String, NumericConfig> numericFieldOptions, Map<String, FieldType> fieldDocValueTypes, Map<String, FieldType> collectionFieldDocValueTypes, Map<String, FieldType> fieldTypes, Map<String, FieldType[]> collectionFieldTypes) { if (validator.isCollection()) { if (validator instanceof MapType) { properties.setType(Properties.Type.map); MapType mapType = (MapType) validator; AbstractType keyValidator = mapType.keys; AbstractType valueValidator = mapType.values; Properties keyProps = properties.getFields().get("_key"); Properties valueProps = properties.getFields().get("_value"); if (keyProps == null) { keyProps = new Properties(); keyProps.setAnalyzer(properties.getAnalyzer()); properties.getFields().put("_key", keyProps); }/* w w w. j a va 2 s .c o m*/ if (valueProps == null) { valueProps = new Properties(); valueProps.setAnalyzer(properties.getAnalyzer()); properties.getFields().put("_value", valueProps); } setFromAbstractType(keyProps, keyValidator); setFromAbstractType(valueProps, valueValidator); FieldType keyFieldType = fieldType(keyProps, keyValidator); FieldType valueFieldType = fieldType(valueProps, valueValidator); if (valueProps.getStriped() == Properties.Striped.only || valueProps.getStriped() == Properties.Striped.also) { FieldType docValueType = LuceneUtils.docValueTypeFrom(valueFieldType); collectionFieldDocValueTypes.put(columnName, docValueType); } if (!(valueProps.getStriped() == Properties.Striped.only)) collectionFieldTypes.put(columnName, new FieldType[] { keyFieldType, valueFieldType }); } else if (validator instanceof ListType || validator instanceof SetType) { AbstractType elementValidator; if (validator instanceof SetType) { SetType setType = (SetType) validator; elementValidator = setType.elements; } else { ListType listType = (ListType) validator; elementValidator = listType.elements; } setFromAbstractType(properties, elementValidator); FieldType elementFieldType = fieldType(properties, elementValidator); if (properties.getStriped() == Properties.Striped.only || properties.getStriped() == Properties.Striped.also) { FieldType docValueType = LuceneUtils.docValueTypeFrom(elementFieldType); collectionFieldDocValueTypes.put(columnName, docValueType); } if (!(properties.getStriped() == Properties.Striped.only)) collectionFieldTypes.put(columnName, new FieldType[] { elementFieldType }); } } else { setFromAbstractType(properties, validator); FieldType fieldType = fieldType(properties, validator); if (fieldType.numericType() != null) { numericFieldOptions.put(columnName, LuceneUtils.numericConfig(fieldType)); } if (properties.getStriped() == Properties.Striped.only || properties.getStriped() == Properties.Striped.also) { FieldType docValueType = LuceneUtils.docValueTypeFrom(fieldType); fieldDocValueTypes.put(columnName, docValueType); } if (properties.getStriped() != Properties.Striped.only) fieldTypes.put(columnName, fieldType); } }
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;/* ww w . j a v a 2s . 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 {/*from w ww . j av a 2 s .co m*/ return ByteBufferUtil.EMPTY_BYTE_BUFFER; } }