@Override public List<Long> getPageSizeOptions() { List<Long> res = new ArrayList<>(); if (pageSizeOptions != null) { res.addAll(pageSizeOptions); } // include the actual page size of page provider if not present long ppsize = getPageSize(); if (ppsize > 0 && !res.contains(ppsize)) { res.add(Long.valueOf(ppsize)); } Collections.sort(res); return res; }
@Override public long getCurrentPageIndex() { long pageSize = getPageSize(); if (pageSize == 0) { return 0; } long offset = getCurrentPageOffset(); return offset / pageSize; }
@Override public void setPageSize(long pageSize) { long localPageSize = getPageSize(); if (localPageSize != pageSize) { this.pageSize = pageSize; // reset offset too setCurrentPageOffset(0); refresh(); } }
@Override public void setCurrentPageIndex(long currentPageIndex) { long pageSize = getPageSize(); long offset = currentPageIndex * pageSize; setCurrentPageOffset(offset); pageChanged(); }
@Override public void previousEntry() { if (currentEntryIndex > 0) { currentEntryIndex--; return; } if (!isPreviousPageAvailable()) { return; } previousPage(); List<T> currentPage = getCurrentPage(); if (currentPage == null || currentPage.isEmpty()) { // things may have changed since last query currentEntryIndex = 0; } else { currentEntryIndex = (new Long(getPageSize() - 1)).intValue(); } }
@Override public long getNumberOfPages() { long pageSize = getPageSize(); // ensure 1 if no pagination if (pageSize == 0) { return 1; } // take max page size into into account pageSize = getMinMaxPageSize(); if (pageSize == 0) { return 1; } long resultsCount = getResultsCount(); if (resultsCount < 0) { return 0; } else { return (1 + (resultsCount - 1) / pageSize); } }
/** * Returns the minimal value for the max page size, taking the lower value between the requested page size and the * maximum accepted page size. * * @since 5.4.2 */ public long getMinMaxPageSize() { long pageSize = getPageSize(); long maxPageSize = getMaxPageSize(); if (maxPageSize < 0) { maxPageSize = getDefaultMaxPageSize(); } if (pageSize <= 0) { return maxPageSize; } if (maxPageSize > 0 && maxPageSize < pageSize) { return maxPageSize; } return pageSize; }
@Override public void nextPage() { long pageSize = getPageSize(); if (pageSize == 0) { // do nothing return; } long offset = getCurrentPageOffset(); offset += pageSize; setCurrentPageOffset(offset); pageChanged(); }
@Override public void firstPage() { long pageSize = getPageSize(); if (pageSize == 0) { // do nothing return; } long offset = getCurrentPageOffset(); if (offset != 0) { setCurrentPageOffset(0); pageChanged(); } }
@Override public void previousPage() { long pageSize = getPageSize(); if (pageSize == 0) { // do nothing return; } long offset = getCurrentPageOffset(); if (offset >= pageSize) { offset -= pageSize; setCurrentPageOffset(offset); pageChanged(); } }
@Override public void lastPage() { long pageSize = getPageSize(); long resultsCount = getResultsCount(); if (pageSize == 0 || resultsCount < 0) { // do nothing return; } if (resultsCount % pageSize == 0) { setCurrentPageOffset(resultsCount - pageSize); } else { setCurrentPageOffset(resultsCount - resultsCount % pageSize); } pageChanged(); }
@Override public boolean isNextEntryAvailable() { long pageSize = getPageSize(); long resultsCount = getResultsCount(); if (pageSize == 0) { if (resultsCount < 0) { // results count unknown long currentPageSize = getCurrentPageSize(); return currentEntryIndex < currentPageSize - 1; } else { return currentEntryIndex < resultsCount - 1; } } else { long currentPageSize = getCurrentPageSize(); if (currentEntryIndex < currentPageSize - 1) { return true; } if (resultsCount < 0) { // results count unknown => do not look for entry in next page return false; } else { return isNextPageAvailable(); } } }
@Override public boolean isNextPageAvailable() { long pageSize = getPageSize(); if (pageSize == 0) { return false; } long resultsCount = getResultsCount(); if (resultsCount < 0) { long currentPageIndex = getCurrentPageIndex(); return currentPageIndex < getCurrentHigherNonEmptyPageIndex() + getMaxNumberOfEmptyPages(); } else { long offset = getCurrentPageOffset(); return resultsCount > pageSize + offset; } }
props.put("pageSize", getPageSize()); props.put("pageIndex", getCurrentPageIndex()); props.put("principal", principal.getName());
@Override public void nextEntry() { long pageSize = getPageSize(); long resultsCount = getResultsCount(); if (pageSize == 0) {