public Iterator<E> graphIterator( EntityManager em ) { try { if ( uuid != null && type != null ) { return new PagingResultsIterator( getHeadResults( em ), query.getResultsLevel(), null); }else { return new NotificationGraphIterator(em, source.refIterator(em, true), query); } } catch ( Exception e ) { throw new RuntimeException( e ); } }
@Override public boolean hasNext() { if (source == null) { return false; } if (currentIterator != null && currentIterator.hasNext()) { return true; } while (source.hasNext()) { Object next = source.next(); Results r; EntityRef ref = (EntityRef) next; r = getResultsFor(ref); if (r.size() > 0) { if(ref.getType().equals(Group.ENTITY_TYPE)) { currentIterator = new PagingResultsIterator(r, query.getResultsLevel(), Query.Level.REFS); }else{ currentIterator = new PagingResultsIterator(r, query.getResultsLevel(), null); } return currentIterator.hasNext(); } } currentIterator = null; source = null; return false; }
protected Iterator refIterator(EntityManager em, boolean useGraph) throws Exception { if ( query.getQl() == null && query.getSingleNameOrEmailIdentifier() != null){ return new PagingResultsIterator( getHeadResults( em ), Level.REFS, null); } if ( type != null && uuid != null) { return new PagingResultsIterator( getHeadResults( em ), Level.REFS, null); } else { Query q = query; if ( query.getResultsLevel() != Level.REFS ) { // ensure REFS level q = new Query( q ); q.setResultsLevel( Level.REFS ); } if( useGraph){ return new NotificationGraphIterator( em, source.refIterator( em, true), q ); }else{ return new MultiQueryIterator( em, source.refIterator( em, false ), q ); } } }