From 2b9d09632ccd2802a89541a03d0eb5f9c9b81b40 Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Wed, 15 Jul 2015 10:49:47 +0200 Subject: [PATCH] [Major] refactorings of Paging --- .../ch/eitchnet/utils/collections/Paging.java | 58 +++++++++++-------- 1 file changed, 35 insertions(+), 23 deletions(-) diff --git a/src/main/java/ch/eitchnet/utils/collections/Paging.java b/src/main/java/ch/eitchnet/utils/collections/Paging.java index a7e906677..a649217a7 100644 --- a/src/main/java/ch/eitchnet/utils/collections/Paging.java +++ b/src/main/java/ch/eitchnet/utils/collections/Paging.java @@ -22,32 +22,33 @@ import java.util.List; */ public class Paging { - private int resultsPerPage; - private int indexOfPageToReturn; + private int pageSize; + private int pageToReturn; private int nrOfPages; + private int nrOfElements; private List input; private List page; - private Paging(int resultsPerPage, int indexOfPageToReturn) { - this.resultsPerPage = resultsPerPage; - this.indexOfPageToReturn = indexOfPageToReturn; + private Paging(int pageSize, int indexOfPageToReturn) { + this.pageSize = pageSize; + this.pageToReturn = indexOfPageToReturn; } - public int getResultsPerPage() { - return this.resultsPerPage; + public int getPageSize() { + return this.pageSize; } - public void setResultsPerPage(int resultsPerPage) { - this.resultsPerPage = resultsPerPage; + public void setPageSize(int pageSize) { + this.pageSize = pageSize; } - public int getIndexOfPageToReturn() { - return this.indexOfPageToReturn; + public int getPageToReturn() { + return this.pageToReturn; } - public void setIndexOfPageToReturn(int indexOfPageToReturn) { - this.indexOfPageToReturn = indexOfPageToReturn; + public void setPageToReturn(int pageToReturn) { + this.pageToReturn = pageToReturn; } public int getNrOfPages() { @@ -58,6 +59,14 @@ public class Paging { this.nrOfPages = nrOfPages; } + public int getNrOfElements() { + return this.nrOfElements; + } + + public void setNrOfElements(int nrOfElements) { + this.nrOfElements = nrOfElements; + } + public List getInput() { return this.input; } @@ -71,19 +80,22 @@ public class Paging { * * @param list * the list to paginate - * @param resultsPerPage + * @param pageSize * The number of items to return in each page * @param page * the page to return - start index is 1 * * @return a {@link Paging} instance from which the selected page (list) can be retrieved */ - public static Paging asPage(List list, int resultsPerPage, int page) { + public static Paging asPage(List list, int pageSize, int page) { - Paging paging = new Paging(resultsPerPage, page); + Paging paging = new Paging(pageSize, page); + paging.nrOfElements = list.size(); - if (paging.resultsPerPage < 0 || paging.indexOfPageToReturn < 0) { - paging.nrOfPages = -1; + if (paging.pageSize <= 0 || paging.pageToReturn <= 0) { + paging.nrOfPages = 1; + paging.pageSize = list.size(); + paging.pageToReturn = 1; paging.input = list; paging.page = list; return paging; @@ -92,16 +104,16 @@ public class Paging { int size = list.size(); // calculate maximum number of pages - paging.nrOfPages = size / paging.resultsPerPage; - if (size % paging.resultsPerPage != 0) + paging.nrOfPages = size / paging.pageSize; + if (size % paging.pageSize != 0) paging.nrOfPages++; // and from this validate requested page - paging.indexOfPageToReturn = Math.min(paging.indexOfPageToReturn, paging.nrOfPages); + paging.pageToReturn = Math.min(paging.pageToReturn, paging.nrOfPages); // now we can calculate the start and end of the page - int start = Math.max(0, paging.resultsPerPage * paging.indexOfPageToReturn - paging.resultsPerPage); - int end = Math.min(size, paging.resultsPerPage * paging.indexOfPageToReturn); + int start = Math.max(0, paging.pageSize * paging.pageToReturn - paging.pageSize); + int end = Math.min(size, paging.pageSize * paging.pageToReturn); // and return the list paging.page = list.subList(start, end);