package com.dgex.offspring.config; public class Paginator { private int pageSize; private int page; private int startingIndex; private int endingIndex; private int maxPages; private final int count; public Paginator(int page, int pageSize, int count) { this.page = page; this.pageSize = pageSize; this.maxPages = 1; this.count = 1; calculatePages(); setPage(page); } private void calculatePages() { if (pageSize > 0) { if (count % pageSize == 0) { maxPages = count / pageSize; } else { maxPages = (count / pageSize) + 1; } } } public int getStartingIndex() { return startingIndex; } public int getEndIndex() { return endingIndex; } public int getPageSize() { return this.pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; calculatePages(); } public int getPage() { return this.page; } public void setPage(int p) { if (p >= maxPages) { this.page = maxPages; } else if (p <= 1) { this.page = 1; } else { this.page = p; } // now work out where the sub-list should start and end startingIndex = pageSize * (page - 1); if (startingIndex < 0) { startingIndex = 0; } endingIndex = startingIndex + pageSize; if (endingIndex > count) { endingIndex = count; } } public int getMaxPages() { return this.maxPages; } public int getPreviousPage() { if (page > 1) { return page - 1; } else { return 0; } } public int getNextPage() { if (page < maxPages) { return page + 1; } else { return 0; } } }