@Override public void refresh() { query = null; currentPageDocuments = null; super.refresh(); }
@Override protected void pageChanged() { pageGroups = null; super.pageChanged(); }
@Override public boolean isLastPageAvailable() { long resultsCount = getResultsCount(); if (resultsCount < 0) { return false; } return isNextPageAvailable(); }
@Override public void nextPage() { long pageSize = getPageSize(); if (pageSize == 0) { // do nothing return; } long offset = getCurrentPageOffset(); offset += pageSize; setCurrentPageOffset(offset); pageChanged(); }
@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 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 void setSortInfos(List<SortInfo> sortInfo) { if (sortInfoChanged(this.sortInfos, sortInfo)) { this.sortInfos = sortInfo; refresh(); } }
@Override public void setSearchDocumentModel(DocumentModel searchDocumentModel) { if (searchDocumentModelChanged(this.searchDocumentModel, searchDocumentModel)) { refresh(); } this.searchDocumentModel = searchDocumentModel; }
@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; } }
@Override public void setSortInfo(String sortColumn, boolean sortAscending, boolean removeOtherSortInfos) { if (removeOtherSortInfos) { SortInfo sortInfo = new SortInfo(sortColumn, sortAscending); setSortInfo(sortInfo); } else { if (getSortInfoIndex(sortColumn, sortAscending) != -1) { // do nothing: sort on this column is not set } else if (getSortInfoIndex(sortColumn, !sortAscending) != -1) { // change direction List<SortInfo> newSortInfos = new ArrayList<>(); for (SortInfo sortInfo : getSortInfos()) { if (sortColumn.equals(sortInfo.getSortColumn())) { newSortInfos.add(new SortInfo(sortColumn, sortAscending)); } else { newSortInfos.add(sortInfo); } } setSortInfos(newSortInfos); } else { // just add it addSortInfo(sortColumn, sortAscending); } } }
@Override public void addSortInfo(String sortColumn, boolean sortAscending) { SortInfo sortInfo = new SortInfo(sortColumn, sortAscending); List<SortInfo> sortInfos = getSortInfos(); if (sortInfos == null) { setSortInfo(sortInfo); } else { sortInfos.add(sortInfo); setSortInfos(sortInfos); } }
@Override public boolean isNextPageAvailable() { if ((getCurrentPageOffset() + 2 * getPageSize()) <= getMaxResultWindow()) { return super.isNextPageAvailable(); } return false; }
@Override public int getSortInfoIndex(String sortColumn, boolean sortAscending) { List<SortInfo> sortInfos = getSortInfos(); if (sortInfos == null || sortInfos.isEmpty()) { return -1; } else { SortInfo sortInfo = new SortInfo(sortColumn, sortAscending); return sortInfos.indexOf(sortInfo); } }
@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 nextEntry() { long pageSize = getPageSize(); long resultsCount = getResultsCount(); if (pageSize == 0) { if (resultsCount < 0) { long currentPageSize = getCurrentPageSize(); if (currentEntryIndex < currentPageSize - 1) { currentEntryIndex++; long currentPageSize = getCurrentPageSize(); if (currentEntryIndex < currentPageSize - 1) { currentEntryIndex++; if (isNextPageAvailable()) { nextPage(); currentEntryIndex = 0; return;
@Override public boolean isLastPageAvailable() { if ((getResultsCount() + getPageSize()) <= getMaxResultWindow()) { return super.isNextPageAvailable(); } return false; }
@Override public List<SortInfo> getSortInfos() { // because ContentView can reuse PageProVider without redefining columns // ensure compat for ContentView configured with JPA log.* sort syntax List<SortInfo> sortInfos = super.getSortInfos(); for (SortInfo si : sortInfos) { if (si.getSortColumn().startsWith("log.")) { si.setSortColumn(si.getSortColumn().substring(4)); } } return sortInfos; }
@Override public void refresh() { pageGroups = null; super.refresh(); }