int pageSize = isUnlimited() ? Integer.MAX_VALUE : getPageSize();
boolean useJoinFetch = projection == null && pc.isUnlimited() && !fetchFields.isEmpty();
@Override public PageList<Resource> findGroupMemberCandidateResources(Subject subject, ResourceCriteria criteria, int[] alreadySelectedResourceIds) { PageControl originalPageControl = getPageControl(criteria); if (originalPageControl.isUnlimited()) { throw new UnsupportedOperationException("Supplied criteria has an unlimited PageControl"); } Set<Integer> alreadySelectedResourceIdSet = new HashSet<Integer>( ArrayUtils.wrapInList(alreadySelectedResourceIds == null ? new int[0] : alreadySelectedResourceIds)); PageControl pageControl = (PageControl) originalPageControl.clone(); criteria.setPageControl(pageControl); int requiredPageSize = pageControl.getPageSize(); criteria.setRestriction(COUNT_ONLY); int totalSize = findResourcesByCriteria(subject, criteria).getTotalSize(); int totalPages = (totalSize / requiredPageSize) + (((totalSize % requiredPageSize) > 0) ? 1 : 0); criteria.setRestriction(COLLECTION_ONLY); List<Resource> candidates = new LinkedList<Resource>(); for (int pageNumber = 0; candidates.size() < requiredPageSize && pageNumber < totalPages; pageNumber++) { pageControl.setPageNumber(pageNumber); PageList<Resource> foundResources = findResourcesByCriteria(subject, criteria); Collection<Resource> filteredResources = filterOutAlreadySelectedResources(foundResources, alreadySelectedResourceIdSet); candidates.addAll(filteredResources); } if (candidates.size() > requiredPageSize) { candidates = candidates.subList(0, requiredPageSize); } return new PageList<Resource>(candidates, totalSize, originalPageControl); }
if (!pc.isUnlimited()) { int lastPage = (resultList.getTotalSize() / pc.getPageSize() ) -1;
if (!pc.isUnlimited() && criteria.isSupportsAddSortId()) { pc.addDefaultOrderingField("id");
if (!pageControl.isUnlimited()) {