@Test public void testGetRequestsCount() throws Exception { final List<Object> aggs = new ArrayList(); RequestDataVisitor v = new RequestDataVisitor() { public void visit(RequestData data, Object... aggregates) { aggs.addAll(Arrays.asList(aggregates)); } }; dao.getRequests(new Query().aggregate("count()").filter("path","/foo", Comparison.EQ), v); assertEquals(1, aggs.size()); assertEquals(4, ((Number)aggs.get(0)).intValue()); }
public long getCount(Query q) { q = q.clone(); q.getAggregates().clear(); q.getProperties().clear(); q.getGroupBy().clear(); q.setSortBy(null); q.setSortOrder(null); q.aggregate("count()"); org.hibernate.Query query = toQuery(q); long count = ((Number) query.uniqueResult()).longValue(); // factor in offset, count if (q.getOffset() != null) { count = Math.max(0, count - q.getOffset()); } if (q.getCount() != null) { count = Math.min(count, q.getCount()); } return count; }
@Test public void testGetRequestsJoinIN() throws Exception { List<String> resources = Arrays.asList("widgets", "things"); List<RequestData> datas = dao.getRequests(new Query().properties("resource") .aggregate("count()").filter("resource", resources, Comparison.IN) .group("resource").sort("resource", SortOrder.ASC)); assertEquals(2, datas.size()); assertEquals("things", datas.get(0).getResources().get(0)); assertEquals("widgets", datas.get(1).getResources().get(0)); }
@Test public void testGetRequestsJoin2() throws Exception { final List<RequestData> datas = new ArrayList(); final List<Object> aggs = new ArrayList(); dao.getRequests(new Query().properties("resource").aggregate("count()") .filter("resource", null, Comparison.NEQ).group("resource"), new RequestDataVisitor() { public void visit(RequestData data, Object... aggregates) { datas.add(data); aggs.add(aggregates[0]); } }); //assertEquals(3, datas.size()); for (RequestData data : datas) { System.out.println(data.getResources()); } }