// ======================================================================== // Copyright (C) zeroth Project Team. All rights reserved. // GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 // http://www.gnu.org/licenses/agpl-3.0.txt // ======================================================================== package zeroth.framework.screen.iface.jsf; import java.util.Collection; /** * Pagination implementation. * @param <T> entity type * @author nilcy */ abstract class AbstractPagination<T> implements Pagination<T> { /** page size. */ private final int pageSize; /** current page. */ private final int page; /** * コンストラクタ * @param aPageSize {@link #pageSize} * @param aPage {@link #page} */ public AbstractPagination(final int aPageSize, final int aPage) { this.pageSize = aPageSize; this.page = aPage; } @Override public abstract Collection<T> createCollection(); @Override public abstract int getItemsCount(); /** * {@inheritDoc} * @return {@link #page} * {@link #pageSize} */ @Override public int getFirstIndex() { return this.page * this.pageSize; } /** * {@inheritDoc} * @return {@link #getFirstIndex()} + {@link #pageSize} -1 */ @Override public int getLastIndex() { int i = (getFirstIndex() + this.pageSize) - 1; final int count = getItemsCount() - 1; if (i > count) { i = count; } else if (i < 0) { i = 0; } return i; } /** * {@inheritDoc} * @return {@link #pageSize} */ @Override public int getPageSize() { return this.pageSize; } /** * {@inheritDoc} * @return true if ((({@link #page} + 1) * {@link #pageSize}) + 1) * <= {@link #getItemsCount}() */ @Override public boolean isHasNext() { return (((this.page + 1) * this.pageSize) + 1) <= getItemsCount(); } /** * {@inheritDoc} * @return true if {@link #page} > 0 */ @Override public boolean isHasPrev() { return this.page > 0; } // /** // * {@inheritDoc} {@link #page} += 1. // */ // @Override // public void nextPage() { // if (isHasNext()) { // this.page += 1; // } // } // /** {@inheritDoc} {@link #page} -= 1. */ // @Override // public void prevPage() { // if (isHasPrev()) { // this.page -= 1; // } // } }