@Override public BoundStatement bindValues(PreparedStatement pStatement, CqlColumnQueryImpl<?> columnQuery) { List<Object> values = new ArrayList<Object>(); values.add(columnQuery.getRowKey()); ColumnFamily<?,?> cf = columnQuery.getCF(); AnnotatedCompositeSerializer<?> compSerializer = (AnnotatedCompositeSerializer<?>) cf.getColumnSerializer(); List<ComponentSerializer<?>> components = compSerializer.getComponents(); Object columnName = columnQuery.getColumnName(); for (ComponentSerializer<?> component : components) { values.add(component.getFieldValueDirectly(columnName)); } return pStatement.bind(values.toArray()); } };
private static Object getCompositeColumn(Row row, AnnotatedCompositeSerializer<?> compositeSerializer, ColumnFamily<?,?> cf) { Class<?> clazz = compositeSerializer.getClazz(); Object obj = null; try { obj = clazz.newInstance(); } catch (Exception e) { throw new RuntimeException(e); } CqlColumnFamilyDefinitionImpl cfDef = (CqlColumnFamilyDefinitionImpl) cf.getColumnFamilyDefinition(); List<ColumnDefinition> cluseringKeyList = cfDef.getClusteringKeyColumnDefinitionList(); int componentIndex = 0; for (ComponentSerializer<?> component : compositeSerializer.getComponents()) { Object value = getDynamicColumn(row, component.getSerializer(), cluseringKeyList.get(componentIndex).getName(), cf); try { component.setFieldValueDirectly(obj, value); componentIndex++; } catch (Exception e) { throw new RuntimeException(e); } } return obj; } }
private void processCompositeComparator() { int colIndex = 1; for (ComponentSerializer<?> componentSerializer : compositeSerializer.getComponents()) { String typeName = componentSerializer.getSerializer().getComparatorType().getTypeName(); ColumnDefinition column = new CqlColumnDefinitionImpl().setName("column" + colIndex++).setValidationClass(typeName); clusteringKeyList.add(column); } }
@Override public BoundStatement bindValues(PreparedStatement pStatement, CqlColumnMutationImpl<?, ?> mutation) { int size = 1 + cfDef.getPartitionKeyColumnDefinitionList().size() + cfDef.getClusteringKeyColumnDefinitionList().size(); Object[] arr = new Object[size]; int index = 0; arr[index++] = mutation.columnValue; arr[index++] = mutation.getRowKey(); ColumnFamily<?,?> cf = mutation.cfContext.getColumnFamily(); boolean isCompositeColumn = cf.getColumnSerializer().getComparatorType() == ComparatorType.COMPOSITETYPE; if (isCompositeColumn) { AnnotatedCompositeSerializer<?> compSerializer = (AnnotatedCompositeSerializer<?>) cf.getColumnSerializer(); for (ComponentSerializer<?> component : compSerializer.getComponents()) { try { arr[index++] = component.getFieldValueDirectly(mutation.columnName); } catch (Exception e) { throw new RuntimeException(e); } } } else { arr[index++] = mutation.columnName; } return pStatement.bind(arr); } };
for (ComponentSerializer<?> component : compSerializer.getComponents()) { try { arr[index++] = component.getFieldValueDirectly(colMutation.columnName);