@Override public <RT> CloseableIterator<RT> iterate(Expression<RT> projection) { return projectable.iterate(projection); }
@Override public CloseableIterator<Tuple> iterate(Expression<?>... args) { return projectable.iterate(args); }
@Override public CloseableIterator<T> iterate() { return projectable.iterate(projection); }
expr = withoutGroupExpressions(expr); final CloseableIterator<Tuple> iter = projectable.iterate(expr);
@Override public Map<K, V> transform(Projectable projectable) { Map<K, Group> groups = new LinkedHashMap<K, Group>(); // create groups FactoryExpression<Tuple> expr = FactoryExpressionUtils.wrap(new QTuple(expressions)); boolean hasGroups = false; for (Expression<?> e : expr.getArgs()) { hasGroups |= e instanceof GroupExpression; } if (hasGroups) { expr = withoutGroupExpressions(expr); } CloseableIterator<Tuple> iter = projectable.iterate(expr); try { while (iter.hasNext()) { Object[] row = iter.next().toArray(); K groupId = (K) row[0]; GroupImpl group = (GroupImpl)groups.get(groupId); if (group == null) { group = new GroupImpl(groupExpressions, maps); groups.put(groupId, group); } group.add(row); } } finally { iter.close(); } // transform groups return transform(groups); }
expr = withoutGroupExpressions(expr); final CloseableIterator<Tuple> iter = projectable.iterate(expr);