"<%s>; rel=\"%s\"", ub.clone() .replaceQueryParam("skipCount", refPair.second.getItemsBefore()) .replaceQueryParam("maxItems", refPair.second.getPageSize()) .build() .toString(),
/** * Retrieves next permissions page for given stack. * * @param stackId id of stack to which permissions will be obtained * @param permissionsPage previous permissions page * @return next permissions page for given stack or null if next page doesn't exist * @throws ServerException when any error occurs during permissions fetching */ @VisibleForTesting Page<AbstractPermissions> getNextPermissionsPage( String stackId, Page<AbstractPermissions> permissionsPage) throws NotFoundException, ServerException { if (!permissionsPage.hasNextPage()) { return null; } final Page.PageRef nextPageRef = permissionsPage.getNextPageRef(); return permissionsManager.getByInstance( DOMAIN_ID, stackId, nextPageRef.getPageSize(), nextPageRef.getItemsBefore()); } }
@Override public boolean hasNext() { if (delegate.hasNext()) { return true; } if (!page.hasNextPage()) { return false; } fetchPage(page.getNextPageRef().getItemsBefore()); return delegate.hasNext(); }
/** * Returns a reference to the next page. * * <p>Note: This method was designed to be used in couple with {@link #hasNextPage()}. Returns * reference to the next page even when {@link #hasNextPage()} returns false. */ public PageRef getNextPageRef() { return new PageRef(itemsBefore + pageSize, pageSize); }
private static <E, X extends Exception> List<E> eagerFetch(PageSupplier<E, X> supplier, int size) throws X { Page<? extends E> page = supplier.getPage(size, 0); ArrayList<E> container = new ArrayList<>(page.hasNextPage() ? page.getItemsCount() * 2 : page.getItemsCount()); while (page.hasNextPage()) { container.addAll(page.getItems()); PageRef next = page.getNextPageRef(); page = supplier.getPage(next.getPageSize(), next.getItemsBefore()); } container.addAll(page.getItems()); return container; }
/** * Returns a reference to the previous page. * * <p>Note: This method was designed to be used in couple with {@link #hasPreviousPage()}. Returns * reference to the first page when {@link #hasPreviousPage()} returns false. */ public PageRef getPreviousPageRef() { final long skipItems = itemsBefore <= pageSize ? 0 : itemsBefore - pageSize; return new PageRef(skipItems, pageSize); }
/** Returns the reference to the first page. */ public PageRef getFirstPageRef() { return new PageRef(0, pageSize); }
/** Returns the reference to the last page. */ public PageRef getLastPageRef() { final long lastPageItems = totalCount % pageSize; if (lastPageItems == 0) { return new PageRef(totalCount <= pageSize ? 0 : totalCount - pageSize, pageSize); } return new PageRef(totalCount - lastPageItems, pageSize); }