1 package com.indexdata.pz2utils4jsf.controls;
\r
3 import java.io.Serializable;
\r
4 import java.util.ArrayList;
\r
5 import java.util.List;
\r
7 import com.indexdata.pz2utils4jsf.controls.PageLink;
\r
8 import com.indexdata.pz2utils4jsf.pazpar2.Pz2Session;
\r
9 import com.indexdata.pz2utils4jsf.pazpar2.data.ShowResponse;
\r
11 public class ResultsPager implements Serializable {
\r
13 private static final long serialVersionUID = 8854795222615583071L;
\r
14 private Pz2Session pz2session = null;
\r
15 private int pageRangeLength = 13;
\r
17 public ResultsPager(Pz2Session session) {
\r
18 this.pz2session = session;
\r
21 public ResultsPager(Pz2Session session, int pageRange) {
\r
22 this.pz2session = session;
\r
23 this.pageRangeLength = pageRange;
\r
26 private boolean hasHits () {
\r
27 return (getShow().getMerged()>0);
\r
30 public int getCurrentPageNum () {
\r
31 if (hasHits() && getShow().getNum()>0) {
\r
32 return (getShow().getStart()/getShow().getNum())+1;
\r
38 public int getPageSize() {
\r
39 return getShow().getNum();
\r
42 public int getFirstDisplayedPageNum () {
\r
44 if (getCurrentPageNum() - (pageRangeLength/2) < 1) {
\r
47 return (getCurrentPageNum()-(pageRangeLength/2));
\r
54 public int getLastDisplayedPageNum () {
\r
56 if ((getFirstDisplayedPageNum() + pageRangeLength-1) > getLastPageNum()) {
\r
57 return getLastPageNum();
\r
59 return getFirstDisplayedPageNum() + pageRangeLength - 1;
\r
66 public int getLastPageNum () {
\r
68 return (int) Math.ceil(new Double(getShow().getMerged())/new Double(getShow().getNum()));
\r
74 public List<PageLink> setPageLinks (int rangeLength) {
\r
75 this.pageRangeLength = rangeLength;
\r
76 return getPageLinks();
\r
79 public List<PageLink> getPageLinks () {
\r
80 ArrayList<PageLink> range = new ArrayList<PageLink>();
\r
82 for (int i = getFirstDisplayedPageNum(); i>0 && i<=getLastDisplayedPageNum();i++) {
\r
83 range.add(new PageLink(i+"",i,this));
\r
90 public PageLink getPreviousPageLink (String text) {
\r
91 String linkText = (text!=null && text.length()>0 ? text : "Prev");
\r
92 if (hasHits() && getCurrentPageNum()>1) {
\r
93 return new PageLink(linkText,getCurrentPageNum()-1,this);
\r
95 return new PageLink(linkText,0,this);
\r
99 public PageLink getNextPageLink (String text) {
\r
100 String linkText = (text!=null && text.length()>0 ? text : "Next");
\r
101 if (hasHits() && getCurrentPageNum()<getLastPageNum()) {
\r
102 return new PageLink(linkText,getCurrentPageNum()+1,this);
\r
104 return new PageLink(linkText,0,this);
\r
108 public int getCurrentPage() {
\r
109 return (getShow().getStart()/getPageSize()+1);
\r
112 public void goToPage(int page) {
\r
113 pz2session.setStart((page-1)*getPageSize());
\r
116 public void goToPreviousPage() {
\r
117 if (hasPreviousPage()) {
\r
118 goToPage(getCurrentPage()-1);
\r
122 public void goToNextPage() {
\r
123 if (hasNextPage()) {
\r
124 goToPage(getCurrentPage()+1);
\r
128 public boolean hasPreviousPage() {
\r
129 return getCurrentPage()>1;
\r
132 public boolean hasNextPage () {
\r
133 return getCurrentPage() < getLastPageNum();
\r
136 public boolean hasPageAfterLastDisplayed() {
\r
137 return getLastDisplayedPageNum() < getLastPageNum();
\r
141 private ShowResponse getShow() {
\r
142 return pz2session.getShow();
\r