public QueryBuilder<T> options(QueryOptions options) { if (options.getCondition() != null) { where(options.getCondition()); } if (options.getPreOrders() != null) { preOrders.addAll(options.getPreOrders()); } if (options.getPostOrders() != null) { postOrders.addAll(options.getPostOrders()); } if (options.getLimit() != null) { limit(options.getLimit()); } if (options.getCursor() != null) { cursor(options.getCursor()); } return this; }
@Test public void testWhereWithIn() { String q = "{ where: [ 'id', 'in', ['1', '3', '5'] ] }"; QueryOptions options = QueryOptions.parse(q); assertSimpleCondition(options.getCondition(), "id", WhereOperator.IN, Arrays.asList("1", "3", "5")); }
@Test public void testWhereSimpleCondition() { String q = "{where: {p: 'longValue', op: '=', v: 1}}"; QueryOptions options = QueryOptions.parse(q); assertSimpleCondition(options.getCondition(), "longValue", WhereOperator.EQUAL, 1l); }
@Test public void testBooleanCodition() { String q = "{where: {p: 'booleanValue', op: '=', v: true}}"; QueryOptions options = QueryOptions.parse(q); assertSimpleCondition(options.getCondition(), "booleanValue", WhereOperator.EQUAL, true); }
@Test public void testQueryOptions() { String q = "{where: ['longValue', '=', 1, 'intValue', '=', 3, 'doubleValue', '=', 4.3], order: [{p:'stringValue', d:'desc'}], sort: [{p:'longValue', d:'desc'}], limit: 2}"; QueryOptions options = QueryOptions.parse(q); JoinedCondition conditions = assertJoinedCondition(options.getCondition(), LogicalOperator.AND, 3); assertSimpleCondition(conditions.getConditions()[0], "longValue", WhereOperator.EQUAL, 1l); assertSimpleCondition(conditions.getConditions()[1], "intValue", WhereOperator.EQUAL, 3l); assertSimpleCondition(conditions.getConditions()[2], "doubleValue", WhereOperator.EQUAL, 4.3); List<QueryOrder> order = options.getPreOrders(); assertEquals(1, order.size()); assertOrderEquals("stringValue", "desc", order.get(0)); List<QueryOrder> sort = options.getPostOrders(); assertEquals(1, sort.size()); assertOrderEquals("longValue", "desc", sort.get(0)); assertEquals(new Integer(2), options.getLimit()); }
@Test public void testWhereJoinedConditions() { String q = "{where: {op: 'and', c: [{p: 'longValue', op: '=', v: 1}, {p: 'intValue', op: '=', v: 3}]}}"; QueryOptions options = QueryOptions.parse(q); JoinedCondition condition = assertJoinedCondition(options.getCondition(), LogicalOperator.AND, 2); assertSimpleCondition(condition.getConditions()[0], "longValue", WhereOperator.EQUAL, 1l); assertSimpleCondition(condition.getConditions()[1], "intValue", WhereOperator.EQUAL, 3l); }
@Test public void testWhereJoinedConditionsWithPrecedence() { String q = "{where: {op: 'and', c: [{p: 'longValue', op: '=', v: 1}, {op: 'or', c: [{p: 'intValue', op: '=', v: 3}, {p: 'doubleValue', op: '=', v: 4.3}]}]}}"; QueryOptions options = QueryOptions.parse(q); JoinedCondition condition1 = assertJoinedCondition(options.getCondition(), LogicalOperator.AND, 2); assertSimpleCondition(condition1.getConditions()[0], "longValue", WhereOperator.EQUAL, 1l); JoinedCondition condition2 = assertJoinedCondition(condition1.getConditions()[1], LogicalOperator.OR, 2); assertSimpleCondition(condition2.getConditions()[0], "intValue", WhereOperator.EQUAL, 3l); assertSimpleCondition(condition2.getConditions()[1], "doubleValue", WhereOperator.EQUAL, 4.3); }