package kernel.web; import java.io.Serializable; import java.util.ArrayList; import java.util.List; public class Page implements Serializable { private static final long serialVersionUID = 1L; private List elements = new ArrayList(); private int pageSize = 10; public static final int DEFAULT_PAGE_SIZE = 10; private int thisPageNumber = 1; private int totalElements = 0; public static final Page EMPTY_PAGE = new Page(); public Page() { } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public void setThisPageNumber(int thisPageNumber) { if (thisPageNumber > 0) { this.thisPageNumber = thisPageNumber; } if (this.thisPageNumber > getTotalPage()) this.thisPageNumber = getTotalPage(); } public Page(int thisPageNumber, int pageSize, int totalElements) { if (thisPageNumber > 0) { this.thisPageNumber = thisPageNumber; } if (pageSize > 0) { this.pageSize = pageSize; } if (totalElements > 0) this.totalElements = totalElements; } public boolean isFirstPage() { return getThisPageNumber() == 1; } public boolean isLastPage() { return getThisPageNumber() >= getTotalPage(); } public boolean hasNextPage() { return getTotalPage() > getThisPageNumber(); } public boolean hasPreviousPage() { return getThisPageNumber() > 1; } public int getTotalPage() { return this.totalElements % this.pageSize == 0 ? this.totalElements / this.pageSize : this.totalElements / this.pageSize + 1; } public List getElements() { return this.elements; } public void setElements(List elements) { this.elements = elements; } public int getTotalElements() { return this.totalElements; } public void setTotalElements(int totalElements) { if (totalElements > 0) { this.totalElements = totalElements; } if (this.thisPageNumber > getTotalPage()) this.thisPageNumber = getTotalPage(); } public int getFirstElementNumber() { return (getThisPageNumber() - 1) * getPageSize(); } public int getLastElementNumber() { int fullPage = getFirstElementNumber() + getPageSize() - 1; return getTotalElements() < fullPage ? getTotalElements() : fullPage; } public int getNextPageNumber() { return getThisPageNumber() + 1; } public int getPreviousPageNumber() { return getThisPageNumber() - 1; } public int getPageSize() { return this.pageSize; } public int getThisPageNumber() { return this.thisPageNumber; } public int getFirstPage() { return 1; } }