private void setSortParams(QueryBuilder builder, SortParameter... params) { for(SortParameter sortParam: params) { builder.sortBy(sortParam); } }
private void setSortParams(QueryBuilder builder, SortParameter... params) { for(SortParameter sortParam: params) { builder.sortBy(sortParam); } }
public QueryBuilder sortBy(String field) { sortBy(field, Order.ASCENDING); return this; }
private void setOrderingParams(QueryBuilder queryBuilder, List<OrderParam> orderParams) { if(!orderParams.isEmpty()) { for(OrderParam orderParam : orderParams) { Order order = orderParam.getSortDirection() == OrderParam.DIRECTION.ASC ? Order.ASCENDING : Order.DESCENDING; queryBuilder.sortBy(orderParam.getField(), order); } } }
@Test public void testRangeQuerySortByOtherFieldNaturalOrdering() throws Exception { DBSession pojoDb = sessionFactory.createSession(); EntityBag bag = pojoDb.createOrGetBag("inverted"); try { QueryExecutor executor = bag.find(QueryBuilder.createBuilder().field("field5").greaterThan(10).field("field5").smallerThan(30).sortBy("field1")); try (QueryResult result = executor.execute()) { assertNotNull(result); assertTrue("There should be a result", result.hasNext()); int start = 11; int amount = 18; List<String> keysInOrder = assertResult(start, amount, result); List<String> expectedOrder = new ArrayList<>(); for (int i = start; i < amount + start; i++) { String id = valueToId.get("value" + i); expectedOrder.add(id); LOG.info("Expected key: {} with value: {}", id, "value" + i); } assertListOrder(keysInOrder, expectedOrder); } } finally { pojoDb.closeSession(); JasDBMain.shutdown(); } }
@Test public void testRangeQuerySortByOtherField() throws Exception { DBSession pojoDb = sessionFactory.createSession(); EntityBag bag = pojoDb.createOrGetBag("inverted"); try { QueryBuilder query = QueryBuilder.createBuilder().field("field5").greaterThan(10).field("field5").smallerThan(30).sortBy("field6", Order.ASCENDING); List<Entity> entities = getEntities(bag, query); List<String> field6Values = getEntityValue(entities, "field6"); long previous = 0; for(String stringValue : field6Values) { long value = Long.parseLong(stringValue); assertThat(value >= previous, is(true)); previous = value; } } finally { pojoDb.closeSession(); JasDBMain.shutdown(); } }
@Test public void testSortByNonExistingField() throws Exception { DBSession session = sessionFactory.createSession(); try{ EntityBag bag = session.createOrGetBag("Bag"); SimpleEntity entity = new SimpleEntity(); entity.addProperty("name", "xxx"); entity.addProperty("v", "1"); bag.addEntity(entity); entity = new SimpleEntity(); entity.addProperty("name", "xxx"); entity.addProperty("v", "2"); bag.addEntity(entity); QueryBuilder innerQuery = QueryBuilder.createBuilder(); innerQuery.field("name").value("xxx").sortBy("_id",Order.DESCENDING).sortBy("id", Order.DESCENDING); QueryExecutor executor = bag.find(innerQuery); QueryResult result = executor.execute(); assertThat(result.size(), is(2l)); } finally { JasDBMain.shutdown(); } }
@Test public void testEqualsOrQuery() throws Exception { DBSession pojoDb = sessionFactory.createSession(); EntityBag bag = pojoDb.createOrGetBag("inverted"); try { String queryKey1 = "value1"; String queryKey2 = "value50"; String expectedId1 = valueToId.get(queryKey1); String expectedId2 = valueToId.get(queryKey2); QueryExecutor executor = bag.find(QueryBuilder.createBuilder().field("field1").value(queryKey1) .or(QueryBuilder.createBuilder().field("field1").value(queryKey2)).sortBy("field1")); long start = System.nanoTime(); QueryResult result = executor.execute(); long end = System.nanoTime(); long passed = end - start; LOG.info("Query execution took: {}", passed); assertNotNull(result); assertTrue("There should be a result", result.hasNext()); Entity entity1 = result.next(); assertTrue("There should be a result", result.hasNext()); Entity entity2 = result.next(); assertNotNull("There should be a returned entity", entity1); assertEquals("The id's should match", expectedId1, entity1.getInternalId()); assertNotNull("There should be a returned entity", entity2); assertEquals("The id's should match", expectedId2, entity2.getInternalId()); } finally { pojoDb.closeSession(); JasDBMain.shutdown(); } }
@Test public void testSortDescendingInvalidType() throws Exception { DBSession session = sessionFactory.createSession(); try{ EntityBag bag = session.createOrGetBag("Bag"); SimpleEntity entity = new SimpleEntity(); entity.addProperty("name", "xxx"); entity.addProperty("v", "3"); bag.addEntity(entity); entity = new SimpleEntity(); entity.addProperty("name", 1); entity.addProperty("v", "1"); bag.addEntity(entity); entity = new SimpleEntity(); entity.addProperty("name", "xxx"); entity.addProperty("v", "2"); bag.addEntity(entity); QueryBuilder innerQuery = QueryBuilder.createBuilder(); innerQuery.field("name").value("xxx").sortBy("v", Order.DESCENDING); QueryExecutor executor = bag.find(innerQuery); QueryResult result = executor.execute(); assertThat(result.size(), is(2l)); assertThat(result.next().getValue("v"), is("3")); assertThat(result.next().getValue("v"), is("2")); } finally { JasDBMain.shutdown(); } }