Search in sources :

Example 6 with Column

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;
}
Also used : UDTValue(com.datastax.driver.core.UDTValue) Column(org.jnosql.diana.api.column.Column) ArrayList(java.util.ArrayList)

Example 7 with Column

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");
    }
}
Also used : ColumnCondition(org.jnosql.diana.api.column.ColumnCondition) Condition(org.jnosql.diana.api.Condition) Column(org.jnosql.diana.api.column.Column) ArrayList(java.util.ArrayList) List(java.util.List) ColumnCondition(org.jnosql.diana.api.column.ColumnCondition)

Example 8 with Column

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;
}
Also used : ColumnEntity(org.jnosql.diana.api.column.ColumnEntity) HashMap(java.util.HashMap) Column(org.jnosql.diana.api.column.Column)

Example 9 with Column

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));
}
Also used : ColumnQuery(org.jnosql.diana.api.column.ColumnQuery) ColumnEntity(org.jnosql.diana.api.column.ColumnEntity) Column(org.jnosql.diana.api.column.Column) Value(org.jnosql.diana.api.Value) Test(org.junit.jupiter.api.Test)

Example 10 with Column

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")));
}
Also used : ColumnQuery(org.jnosql.diana.api.column.ColumnQuery) ColumnEntity(org.jnosql.diana.api.column.ColumnEntity) Column(org.jnosql.diana.api.column.Column) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) Collections.singletonList(java.util.Collections.singletonList) Arrays.asList(java.util.Arrays.asList) List(java.util.List) Collectors.toList(java.util.stream.Collectors.toList) Test(org.junit.jupiter.api.Test)

Aggregations

Column (org.jnosql.diana.api.column.Column)41 Test (org.junit.jupiter.api.Test)33 ColumnCondition (org.jnosql.diana.api.column.ColumnCondition)23 ColumnQuery (org.jnosql.diana.api.column.ColumnQuery)16 ColumnEntity (org.jnosql.diana.api.column.ColumnEntity)14 List (java.util.List)13 ColumnDeleteQuery (org.jnosql.diana.api.column.ColumnDeleteQuery)12 ArrayList (java.util.ArrayList)10 Arrays.asList (java.util.Arrays.asList)6 HashMap (java.util.HashMap)4 Collections.singletonList (java.util.Collections.singletonList)3 Collectors.toList (java.util.stream.Collectors.toList)3 Value (org.jnosql.diana.api.Value)3 DataType (com.datastax.driver.core.DataType)2 IOException (java.io.IOException)2 TypeReference (org.jnosql.diana.api.TypeReference)2 ColumnDefinitions (com.datastax.driver.core.ColumnDefinitions)1 ConsistencyLevel (com.datastax.driver.core.ConsistencyLevel)1 LocalDate (com.datastax.driver.core.LocalDate)1 Session (com.datastax.driver.core.Session)1