Renames data classes that are no longer pz2 only
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / controls / ResultsPager.java
1 package com.indexdata.mkjsf.controls;\r
2 \r
3 import java.io.Serializable;\r
4 import java.util.ArrayList;\r
5 import java.util.List;\r
6 \r
7 import com.indexdata.mkjsf.pazpar2.commands.Pazpar2Commands;\r
8 import com.indexdata.mkjsf.pazpar2.data.Responses;\r
9 \r
10 public class ResultsPager implements Serializable {\r
11 \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
16   \r
17   public ResultsPager(Responses data) {\r
18     this.data = data;     \r
19   }\r
20   \r
21   public ResultsPager(Responses data, int pageRange, Pazpar2Commands req) {\r
22     this.data = data;\r
23     this.pageRangeLength = pageRange;\r
24     this.req = req;\r
25   }\r
26   \r
27   private boolean hasHits () {\r
28     return (data.getShow().getMerged()>0);\r
29   }\r
30   \r
31   public int getCurrentPageNum () {\r
32     if (hasHits() && data.getShow().getNum()>0) {      \r
33       return (data.getShow().getStart()/data.getShow().getNum())+1;\r
34     } else {\r
35       return 0;\r
36     }\r
37   }\r
38   \r
39   public int getPageSize() {\r
40     return data.getShow().getNum();\r
41   }\r
42     \r
43   public int getFirstDisplayedPageNum () {\r
44     if (hasHits()) {\r
45       if (getCurrentPageNum() - (pageRangeLength/2) < 1) {\r
46         return 1;\r
47       } else {\r
48         return (getCurrentPageNum()-(pageRangeLength/2));\r
49       }\r
50     } else {\r
51       return 0;\r
52     }\r
53   }\r
54     \r
55   public int getLastDisplayedPageNum () {\r
56     if (hasHits()) {\r
57       if ((getFirstDisplayedPageNum() + pageRangeLength-1) > getLastPageNum()) {\r
58         return getLastPageNum();\r
59       } else {\r
60         return getFirstDisplayedPageNum() + pageRangeLength - 1;\r
61       }\r
62     } else {\r
63       return 0;\r
64     }\r
65   }\r
66   \r
67   public int getLastPageNum () {\r
68     if (hasHits()) {\r
69       return (int) Math.ceil(new Double(data.getShow().getMerged())/new Double(data.getShow().getNum()));\r
70     } else {\r
71       return 0;\r
72     }\r
73   }\r
74   \r
75   public List<PageLink> setPageLinks (int rangeLength) {\r
76     this.pageRangeLength = rangeLength;\r
77     return getPageLinks();\r
78   }\r
79   \r
80   public List<PageLink> getPageLinks () {    \r
81     ArrayList<PageLink> range = new ArrayList<PageLink>();\r
82     if (hasHits()) {\r
83       for (int i = getFirstDisplayedPageNum(); i>0 && i<=getLastDisplayedPageNum();i++) {\r
84         range.add(new PageLink(i+"",i,this));\r
85       }\r
86     }\r
87     return range;\r
88   }\r
89 \r
90   \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
95     } else {\r
96       return new PageLink(linkText,0,this);\r
97     }\r
98   }\r
99   \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
104     } else {\r
105       return new PageLink(linkText,0,this);\r
106     }    \r
107   }\r
108   \r
109   public int getCurrentPage() {\r
110     return (data.getShow().getStart()/getPageSize()+1);\r
111   }\r
112   \r
113   public void goToPage(int page) {    \r
114     req.getShow().setStart((page-1)*getPageSize());\r
115   }\r
116   \r
117   public void goToPreviousPage() {\r
118     if (hasPreviousPage()) {\r
119       goToPage(getCurrentPage()-1);  \r
120     }    \r
121   }\r
122   \r
123   public void goToNextPage() {\r
124     if (hasNextPage()) {\r
125       goToPage(getCurrentPage()+1);\r
126     }\r
127   }\r
128   \r
129   public boolean hasPreviousPage() {\r
130     return getCurrentPage()>1;\r
131   }\r
132       \r
133   public boolean hasNextPage () {\r
134     return getCurrentPage() < getLastPageNum();\r
135   }\r
136   \r
137   public boolean hasPageAfterLastDisplayed() {\r
138     return getLastDisplayedPageNum() < getLastPageNum();\r
139   }\r
140     \r
141 }\r