public static void setDataPage(Query query, PageControl pageControl) { if (pageControl.getPageSize() > 0) { query.setFirstResult(pageControl.getStartRow()); query.setMaxResults(pageControl.getPageSize()); } }
public boolean isUnlimited() { return getPageNumber() == 0 && getPageSize() == SIZE_UNLIMITED; }
private static String addLimitOffsetToQuery(String query, PageControl pageControl) { StringBuilder queryWithPagingSorting = new StringBuilder(query.length() + 50); queryWithPagingSorting.append(query); // for postgres, first order by queryWithPagingSorting.append(getOrderByFragment(pageControl.getOrderingFieldsAsArray())); // for postgres, then paginate queryWithPagingSorting.append(" LIMIT ").append(pageControl.getPageSize()); queryWithPagingSorting.append(" OFFSET ").append(pageControl.getStartRow()); return queryWithPagingSorting.toString(); } }
public static String addOracleNativePagingSortingToQuery(String query, PageControl pageControl) { StringBuilder queryWithPagingSorting = new StringBuilder(query.length() + 50); int minRowNum = pageControl.getStartRow() + 1; int maxRowNum = minRowNum + pageControl.getPageSize() - 1; // pagination calculations based off of double-projection of the results queryWithPagingSorting.append("SELECT outerResults.* FROM ( "); queryWithPagingSorting.append("SELECT innerResults.*, ROWNUM rnum FROM ( "); queryWithPagingSorting.append(query); // for oracle, order by occurs at the end of the original query, whether grouped or not queryWithPagingSorting.append(getOrderByFragment(pageControl.getOrderingFieldsAsArray())); queryWithPagingSorting.append(" ) innerResults "); // for oracle, paginate high off of the inner projection queryWithPagingSorting.append(" WHERE ROWNUM <= ").append(maxRowNum); // for oracle, paginate low off of the outer projection queryWithPagingSorting.append(" ) outerResults "); queryWithPagingSorting.append(" WHERE rnum >= ").append(minRowNum); return queryWithPagingSorting.toString(); }
public void clearPaging() { PageControl unlimited = PageControl.getUnlimitedInstance(); this.pageNumber = unlimited.getPageNumber(); this.pageSize = unlimited.getPageSize(); this.pageControlOverrides = null; }
public static String addSQLServerNativePagingSortingToQuery(String query, PageControl pageControl, boolean alternatePagingStyle) { StringBuilder queryWithPagingSorting = new StringBuilder(query.length() + 50); int minRowNum = pageControl.getStartRow() + 1; int maxRowNum = minRowNum + pageControl.getPageSize() - 1; String orderByClause = getOrderByFragment(pageControl.getOrderingFieldsAsArray()); if (alternatePagingStyle) { int index = findSelectListEndIndex(query); String selectList = query.substring(0, index); String restOfQuery = query.substring(index); queryWithPagingSorting.append("SELECT singleResults.* FROM ( "); queryWithPagingSorting.append(selectList); queryWithPagingSorting.append(", ROW_NUMBER() OVER( " + orderByClause + " ) AS rownum "); queryWithPagingSorting.append(restOfQuery); queryWithPagingSorting.append(") AS singleResults "); } else { queryWithPagingSorting.append("SELECT outerResults.* FROM ( "); queryWithPagingSorting.append(" SELECT innerResults.*, "); queryWithPagingSorting.append(" ROW_NUMBER() OVER( " + orderByClause + " ) AS rownum "); queryWithPagingSorting.append(" FROM ( " + query + " ) AS innerResults "); queryWithPagingSorting.append(" ) AS outerResults "); } queryWithPagingSorting.append("WHERE rownum <= ").append(maxRowNum); queryWithPagingSorting.append(" AND rownum >= ").append(minRowNum); return queryWithPagingSorting.toString(); }
private Query buildQuery(String queryString, PageControl pageControl) { boolean first = true; StringBuilder queryBuilder = new StringBuilder(queryString); for (OrderingField orderingField : pageControl.getOrderingFieldsAsArray()) { if (first) { // TODO GH: We could see if there already is an order by clause and contribute or override it queryBuilder.append(" ORDER BY "); first = false; } else { queryBuilder.append(", "); } queryBuilder.append(orderingField.getField()).append(" ").append(orderingField.getOrdering()); } Query query = entityManager.createQuery(queryBuilder.toString()); if (pageControl.getPageSize() > 0) { query.setFirstResult(pageControl.getStartRow()); query.setMaxResults(pageControl.getPageSize()); } return query; }
int pageSize = isUnlimited() ? Integer.MAX_VALUE : getPageSize();
String pageSize = String.valueOf(pageControl.getPageSize()); boolean hasValidSize = false; for (SelectItem validPageSize : getPageSizeSelectItems()) {
@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); }
int page = pc.getPageNumber(); if (resultList.getTotalSize()> (pc.getPageNumber() +1 ) * pc.getPageSize()) { int nextPage = page+1; int lastPage = (resultList.getTotalSize() / pc.getPageSize() ) -1;
if (pageControl.getPageSize() > 0) { query.setFirstResult(pageControl.getPageNumber() * pageControl.getPageSize()); query.setMaxResults(pageControl.getPageSize());
try { if (pageControl.getPageSize() == PageControl.SIZE_UNLIMITED && pageControl.getPageNumber() != 0) {
pColl.setTotalSize(originalList.getTotalSize()); PageControl pageControl = originalList.getPageControl(); pColl.setPageSize(pageControl.getPageSize()); int page = pageControl.getPageNumber(); pColl.setCurrentPage(page); int lastPage = (originalList.getTotalSize() / pageControl.getPageSize()) -1 ; // -1 as page # is 0 based pColl.setLastPage(lastPage); if (originalList.getTotalSize() > (page +1 ) * pageControl.getPageSize()) { int nextPage = page +1;
if (pageControl.getPageSize() == PageControl.SIZE_UNLIMITED && pageControl.getPageNumber() != 0) {
@Override public PageList<Alert> findAlertsByCriteria(Subject subject, AlertCriteria criteria) { CriteriaQueryGenerator generator = new CriteriaQueryGenerator(subject, criteria); if (!authorizationManager.isInventoryManager(subject)) { generator.setAuthorizationResourceFragment(CriteriaQueryGenerator.AuthorizationTokenType.RESOURCE, "alertDefinition.resource", subject.getId()); } Query query = generator.getQuery(entityManager); if (log.isDebugEnabled()) { QueryImpl queryImpl = (QueryImpl) query; PageControl pageControl = CriteriaQueryGenerator.getPageControl(criteria); log.debug("*Executing JPA query: " + queryImpl.getHibernateQuery().getQueryString() + ", selection=[" + pageControl.getStartRow() + ".." + (pageControl.getStartRow() + pageControl.getPageSize() - 1) + "]..."); } CriteriaQueryRunner<Alert> queryRunner = new CriteriaQueryRunner<Alert>(criteria, generator, entityManager); PageList<Alert> alerts = queryRunner.execute(); fetchCollectionFields(alerts); return alerts; } }