1 package com.indexdata.mkjsf.controls;
\r
3 import java.io.Serializable;
\r
4 import java.util.ArrayList;
\r
5 import java.util.List;
\r
7 import com.indexdata.mkjsf.pazpar2.commands.Pazpar2Commands;
\r
8 import com.indexdata.mkjsf.pazpar2.data.Responses;
\r
10 public class ResultsPager implements Serializable {
\r
12 private static final long serialVersionUID = 8854795222615583071L;
\r
13 private Responses data = null;
\r
14 private int pageRangeLength = 13;
\r
15 private Pazpar2Commands req;
\r
17 public ResultsPager(Responses data) {
\r
21 public ResultsPager(Responses data, int pageRange, Pazpar2Commands req) {
\r
23 this.pageRangeLength = pageRange;
\r
27 private boolean hasHits () {
\r
28 return (data.getShow().getMerged()>0);
\r
31 public int getCurrentPageNum () {
\r
32 if (hasHits() && data.getShow().getNum()>0) {
\r
33 return (data.getShow().getStart()/data.getShow().getNum())+1;
\r
39 public int getPageSize() {
\r
40 return data.getShow().getNum();
\r
43 public int getFirstDisplayedPageNum () {
\r
45 if (getCurrentPageNum() - (pageRangeLength/2) < 1) {
\r
48 return (getCurrentPageNum()-(pageRangeLength/2));
\r
55 public int getLastDisplayedPageNum () {
\r
57 if ((getFirstDisplayedPageNum() + pageRangeLength-1) > getLastPageNum()) {
\r
58 return getLastPageNum();
\r
60 return getFirstDisplayedPageNum() + pageRangeLength - 1;
\r
67 public int getLastPageNum () {
\r
69 return (int) Math.ceil(new Double(data.getShow().getMerged())/new Double(data.getShow().getNum()));
\r
75 public List<PageLink> setPageLinks (int rangeLength) {
\r
76 this.pageRangeLength = rangeLength;
\r
77 return getPageLinks();
\r
80 public List<PageLink> getPageLinks () {
\r
81 ArrayList<PageLink> range = new ArrayList<PageLink>();
\r
83 for (int i = getFirstDisplayedPageNum(); i>0 && i<=getLastDisplayedPageNum();i++) {
\r
84 range.add(new PageLink(i+"",i,this));
\r
91 public PageLink getPreviousPageLink (String text) {
\r
92 String linkText = (text!=null && text.length()>0 ? text : "Prev");
\r
93 if (hasHits() && getCurrentPageNum()>1) {
\r
94 return new PageLink(linkText,getCurrentPageNum()-1,this);
\r
96 return new PageLink(linkText,0,this);
\r
100 public PageLink getNextPageLink (String text) {
\r
101 String linkText = (text!=null && text.length()>0 ? text : "Next");
\r
102 if (hasHits() && getCurrentPageNum()<getLastPageNum()) {
\r
103 return new PageLink(linkText,getCurrentPageNum()+1,this);
\r
105 return new PageLink(linkText,0,this);
\r
109 public int getCurrentPage() {
\r
110 return (data.getShow().getStart()/getPageSize()+1);
\r
113 public void goToPage(int page) {
\r
114 req.getShow().setStart((page-1)*getPageSize());
\r
117 public void goToPreviousPage() {
\r
118 if (hasPreviousPage()) {
\r
119 goToPage(getCurrentPage()-1);
\r
123 public void goToNextPage() {
\r
124 if (hasNextPage()) {
\r
125 goToPage(getCurrentPage()+1);
\r
129 public boolean hasPreviousPage() {
\r
130 return getCurrentPage()>1;
\r
133 public boolean hasNextPage () {
\r
134 return getCurrentPage() < getLastPageNum();
\r
137 public boolean hasPageAfterLastDisplayed() {
\r
138 return getLastDisplayedPageNum() < getLastPageNum();
\r