use of org.jnosql.diana.api.column.Column in project jnosql-diana-driver by eclipse.
the class QueryUtils method getUdtValue.
private static Object getUdtValue(UserType userType, Iterable elements) {
List<Object> udtValues = new ArrayList<>();
UDTValue udtValue = userType.newValue();
for (Object object : elements) {
if (Column.class.isInstance(object)) {
Column column = Column.class.cast(object);
Object convert = ValueUtil.convert(column.getValue());
TypeCodec<Object> objectTypeCodec = CodecRegistry.DEFAULT_INSTANCE.codecFor(convert);
udtValue.set(getName(column), convert, objectTypeCodec);
} else if (Iterable.class.isInstance(object)) {
udtValues.add(getUdtValue(userType, Iterable.class.cast(Iterable.class.cast(object))));
}
}
if (udtValues.isEmpty()) {
return udtValue;
}
return udtValues;
}
use of org.jnosql.diana.api.column.Column in project jnosql-diana-driver by eclipse.
the class QueryUtils method createClause.
private static void createClause(Optional<ColumnCondition> columnConditionOptional, List<Clause> clauses) {
if (!columnConditionOptional.isPresent()) {
return;
}
ColumnCondition columnCondition = columnConditionOptional.get();
Column column = columnCondition.getColumn();
Condition condition = columnCondition.getCondition();
Object value = column.getValue().get();
switch(condition) {
case EQUALS:
clauses.add(QueryBuilder.eq(getName(column), value));
return;
case GREATER_THAN:
clauses.add(QueryBuilder.gt(getName(column), value));
return;
case GREATER_EQUALS_THAN:
clauses.add(QueryBuilder.gte(getName(column), value));
return;
case LESSER_THAN:
clauses.add(QueryBuilder.lt(getName(column), value));
return;
case LESSER_EQUALS_THAN:
clauses.add(QueryBuilder.lte(getName(column), value));
return;
case IN:
clauses.add(QueryBuilder.in(getName(column), getIinValue(value)));
return;
case LIKE:
clauses.add(QueryBuilder.like(getName(column), value));
return;
case AND:
for (ColumnCondition cc : column.get(new TypeReference<List<ColumnCondition>>() {
})) {
createClause(Optional.of(cc), clauses);
}
return;
case OR:
default:
throw new UnsupportedOperationException("The columnCondition " + condition + " is not supported in cassandra column driver");
}
}
use of org.jnosql.diana.api.column.Column in project jnosql-diana-driver by eclipse.
the class CassandraColumnFamilyManagerAsyncTest method getColumnFamily.
private ColumnEntity getColumnFamily() {
Map<String, Object> fields = new HashMap<>();
fields.put("name", "Cassandra");
fields.put("version", 3.2);
fields.put("options", asList(1, 2, 3));
List<Column> columns = Columns.of(fields);
ColumnEntity columnFamily = ColumnEntity.of(COLUMN_FAMILY, singletonList(Columns.of("id", 10L)));
columns.forEach(columnFamily::add);
return columnFamily;
}
use of org.jnosql.diana.api.column.Column in project jnosql-diana-driver by eclipse.
the class CassandraColumnFamilyManagerTest method shouldFindByIdWithConsistenceLevel.
@Test
public void shouldFindByIdWithConsistenceLevel() {
entityManager.insert(getColumnFamily());
ColumnQuery query = select().from(COLUMN_FAMILY).where("id").eq(10L).build();
List<ColumnEntity> columnEntity = entityManager.select(query, CONSISTENCY_LEVEL);
assertFalse(columnEntity.isEmpty());
List<Column> columns = columnEntity.get(0).getColumns();
assertThat(columns.stream().map(Column::getName).collect(toList()), containsInAnyOrder("name", "version", "options", "id"));
assertThat(columns.stream().map(Column::getValue).map(Value::get).collect(toList()), containsInAnyOrder("Cassandra", 3.2, asList(1, 2, 3), 10L));
}
use of org.jnosql.diana.api.column.Column in project jnosql-diana-driver by eclipse.
the class CassandraColumnFamilyManagerTest method shouldSupportAnUDTElement.
@Test
public void shouldSupportAnUDTElement() {
ColumnEntity entity = ColumnEntity.of("users");
entity.add(Column.of("nickname", "Ioda"));
List<Column> columns = new ArrayList<>();
columns.add(Column.of("firstname", "Ioda"));
UDT udt = UDT.builder("fullname").withName("name").addUDT(columns).build();
entity.add(udt);
entityManager.insert(entity);
ColumnQuery query = select().from("users").where("nickname").eq("Ioda").build();
ColumnEntity columnEntity = entityManager.singleResult(query).get();
Column column = columnEntity.find("name").get();
udt = UDT.class.cast(column);
List<Column> udtColumns = (List<Column>) udt.get();
assertEquals("name", udt.getName());
assertEquals("fullname", udt.getUserType());
assertThat(udtColumns, Matchers.containsInAnyOrder(Column.of("firstname", "Ioda")));
}
Aggregations