+++ /dev/null
-package com.indexdata.pz2utils4jsf.controls;\r
-\r
-import java.io.Serializable;\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-import com.indexdata.pz2utils4jsf.controls.PageLink;\r
-import com.indexdata.pz2utils4jsf.pazpar2.Pz2Session;\r
-import com.indexdata.pz2utils4jsf.pazpar2.data.ShowResponse;\r
-\r
-public class ResultsPager implements Serializable {\r
-\r
- private static final long serialVersionUID = 8854795222615583071L;\r
- private Pz2Session pz2session = null;\r
- private int pageRangeLength = 13;\r
- \r
- public ResultsPager(Pz2Session session) {\r
- this.pz2session = session; \r
- }\r
- \r
- public ResultsPager(Pz2Session session, int pageRange) {\r
- this.pz2session = session;\r
- this.pageRangeLength = pageRange;\r
- }\r
- \r
- private boolean hasHits () {\r
- return (getShow().getMerged()>0);\r
- }\r
- \r
- public int getCurrentPageNum () {\r
- if (hasHits() && getShow().getNum()>0) { \r
- return (getShow().getStart()/getShow().getNum())+1;\r
- } else {\r
- return 0;\r
- }\r
- }\r
- \r
- public int getPageSize() {\r
- return getShow().getNum();\r
- }\r
- \r
- public int getFirstDisplayedPageNum () {\r
- if (hasHits()) {\r
- if (getCurrentPageNum() - (pageRangeLength/2) < 1) {\r
- return 1;\r
- } else {\r
- return (getCurrentPageNum()-(pageRangeLength/2));\r
- }\r
- } else {\r
- return 0;\r
- }\r
- }\r
- \r
- public int getLastDisplayedPageNum () {\r
- if (hasHits()) {\r
- if ((getFirstDisplayedPageNum() + pageRangeLength-1) > getLastPageNum()) {\r
- return getLastPageNum();\r
- } else {\r
- return getFirstDisplayedPageNum() + pageRangeLength - 1;\r
- }\r
- } else {\r
- return 0;\r
- }\r
- }\r
- \r
- public int getLastPageNum () {\r
- if (hasHits()) {\r
- return (int) Math.ceil(new Double(getShow().getMerged())/new Double(getShow().getNum()));\r
- } else {\r
- return 0;\r
- }\r
- }\r
- \r
- public List<PageLink> setPageLinks (int rangeLength) {\r
- this.pageRangeLength = rangeLength;\r
- return getPageLinks();\r
- }\r
- \r
- public List<PageLink> getPageLinks () { \r
- ArrayList<PageLink> range = new ArrayList<PageLink>();\r
- if (hasHits()) {\r
- for (int i = getFirstDisplayedPageNum(); i>0 && i<=getLastDisplayedPageNum();i++) {\r
- range.add(new PageLink(i+"",i,this));\r
- }\r
- }\r
- return range;\r
- }\r
-\r
- \r
- public PageLink getPreviousPageLink (String text) { \r
- String linkText = (text!=null && text.length()>0 ? text : "Prev");\r
- if (hasHits() && getCurrentPageNum()>1) { \r
- return new PageLink(linkText,getCurrentPageNum()-1,this);\r
- } else {\r
- return new PageLink(linkText,0,this);\r
- }\r
- }\r
- \r
- public PageLink getNextPageLink (String text) { \r
- String linkText = (text!=null && text.length()>0 ? text : "Next");\r
- if (hasHits() && getCurrentPageNum()<getLastPageNum()) {\r
- return new PageLink(linkText,getCurrentPageNum()+1,this);\r
- } else {\r
- return new PageLink(linkText,0,this);\r
- } \r
- }\r
- \r
- public int getCurrentPage() {\r
- return (getShow().getStart()/getPageSize()+1);\r
- }\r
- \r
- public void goToPage(int page) { \r
- pz2session.setStart((page-1)*getPageSize());\r
- }\r
- \r
- public void goToPreviousPage() {\r
- if (hasPreviousPage()) {\r
- goToPage(getCurrentPage()-1); \r
- } \r
- }\r
- \r
- public void goToNextPage() {\r
- if (hasNextPage()) {\r
- goToPage(getCurrentPage()+1);\r
- }\r
- }\r
- \r
- public boolean hasPreviousPage() {\r
- return getCurrentPage()>1;\r
- }\r
- \r
- public boolean hasNextPage () {\r
- return getCurrentPage() < getLastPageNum();\r
- }\r
- \r
- public boolean hasPageAfterLastDisplayed() {\r
- return getLastDisplayedPageNum() < getLastPageNum();\r
- }\r
-\r
- \r
- private ShowResponse getShow() {\r
- return pz2session.getShow();\r
- }\r
- \r
-}\r