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.commands.Pazpar2Commands;
\r
10 import com.indexdata.pz2utils4jsf.pazpar2.data.ShowResponse;
\r
12 public class ResultsPager implements Serializable {
\r
14 private static final long serialVersionUID = 8854795222615583071L;
\r
15 private Pz2Session pz2session = null;
\r
16 private int pageRangeLength = 13;
\r
17 private Pazpar2Commands req;
\r
19 public ResultsPager(Pz2Session session) {
\r
20 this.pz2session = session;
\r
23 public ResultsPager(Pz2Session session, int pageRange, Pazpar2Commands req) {
\r
24 this.pz2session = session;
\r
25 this.pageRangeLength = pageRange;
\r
29 private boolean hasHits () {
\r
30 return (getShow().getMerged()>0);
\r
33 public int getCurrentPageNum () {
\r
34 if (hasHits() && getShow().getNum()>0) {
\r
35 return (getShow().getStart()/getShow().getNum())+1;
\r
41 public int getPageSize() {
\r
42 return getShow().getNum();
\r
45 public int getFirstDisplayedPageNum () {
\r
47 if (getCurrentPageNum() - (pageRangeLength/2) < 1) {
\r
50 return (getCurrentPageNum()-(pageRangeLength/2));
\r
57 public int getLastDisplayedPageNum () {
\r
59 if ((getFirstDisplayedPageNum() + pageRangeLength-1) > getLastPageNum()) {
\r
60 return getLastPageNum();
\r
62 return getFirstDisplayedPageNum() + pageRangeLength - 1;
\r
69 public int getLastPageNum () {
\r
71 return (int) Math.ceil(new Double(getShow().getMerged())/new Double(getShow().getNum()));
\r
77 public List<PageLink> setPageLinks (int rangeLength) {
\r
78 this.pageRangeLength = rangeLength;
\r
79 return getPageLinks();
\r
82 public List<PageLink> getPageLinks () {
\r
83 ArrayList<PageLink> range = new ArrayList<PageLink>();
\r
85 for (int i = getFirstDisplayedPageNum(); i>0 && i<=getLastDisplayedPageNum();i++) {
\r
86 range.add(new PageLink(i+"",i,this));
\r
93 public PageLink getPreviousPageLink (String text) {
\r
94 String linkText = (text!=null && text.length()>0 ? text : "Prev");
\r
95 if (hasHits() && getCurrentPageNum()>1) {
\r
96 return new PageLink(linkText,getCurrentPageNum()-1,this);
\r
98 return new PageLink(linkText,0,this);
\r
102 public PageLink getNextPageLink (String text) {
\r
103 String linkText = (text!=null && text.length()>0 ? text : "Next");
\r
104 if (hasHits() && getCurrentPageNum()<getLastPageNum()) {
\r
105 return new PageLink(linkText,getCurrentPageNum()+1,this);
\r
107 return new PageLink(linkText,0,this);
\r
111 public int getCurrentPage() {
\r
112 return (getShow().getStart()/getPageSize()+1);
\r
115 public void goToPage(int page) {
\r
116 req.getShow().setStart((page-1)*getPageSize());
\r
119 public void goToPreviousPage() {
\r
120 if (hasPreviousPage()) {
\r
121 goToPage(getCurrentPage()-1);
\r
125 public void goToNextPage() {
\r
126 if (hasNextPage()) {
\r
127 goToPage(getCurrentPage()+1);
\r
131 public boolean hasPreviousPage() {
\r
132 return getCurrentPage()>1;
\r
135 public boolean hasNextPage () {
\r
136 return getCurrentPage() < getLastPageNum();
\r
139 public boolean hasPageAfterLastDisplayed() {
\r
140 return getLastDisplayedPageNum() < getLastPageNum();
\r
144 private ShowResponse getShow() {
\r
145 return pz2session.getShow();
\r