KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > roller > ui > rendering > pagers > UsersPager


1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. The ASF licenses this file to You
4  * under the Apache License, Version 2.0 (the "License"); you may not
5  * use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License. For additional information regarding
15  * copyright in this work, please see the NOTICE file in the top level
16  * directory of this distribution.
17  */

18
19 package org.apache.roller.ui.rendering.pagers;
20
21 import java.util.ArrayList JavaDoc;
22 import java.util.HashMap JavaDoc;
23 import java.util.Iterator JavaDoc;
24 import java.util.List JavaDoc;
25 import java.util.Map JavaDoc;
26 import org.apache.commons.logging.Log;
27 import org.apache.commons.logging.LogFactory;
28 import org.apache.roller.model.Roller;
29 import org.apache.roller.model.RollerFactory;
30 import org.apache.roller.model.UserManager;
31 import org.apache.roller.pojos.UserData;
32 import org.apache.roller.pojos.wrapper.UserDataWrapper;
33
34
35 /**
36  * Paging through a collection of users.
37  */

38 public class UsersPager extends AbstractPager {
39     
40     private static Log log = LogFactory.getLog(UsersPager.class);
41     
42     private String JavaDoc letter = null;
43     private String JavaDoc locale = null;
44     private int sinceDays = -1;
45     private int length = 0;
46     
47     // collection for the pager
48
private List JavaDoc users;
49     
50     // are there more items?
51
private boolean more = false;
52     
53     
54     public UsersPager(
55             String JavaDoc baseUrl,
56             String JavaDoc locale,
57             int sinceDays,
58             int page,
59             int length) {
60         
61         super(baseUrl, page);
62         
63         this.locale = locale;
64         this.sinceDays = sinceDays;
65         this.length = length;
66         
67         // initialize the collection
68
getItems();
69     }
70     
71     
72     public UsersPager(
73             String JavaDoc baseUrl,
74             String JavaDoc letter,
75             String JavaDoc locale,
76             int sinceDays,
77             int page,
78             int length) {
79         
80         super(baseUrl, page);
81         
82         this.letter = letter;
83         this.locale = locale;
84         this.sinceDays = sinceDays;
85         this.length = length;
86         
87         // initialize the collection
88
getItems();
89     }
90     
91     
92     public String JavaDoc getNextLink() {
93         // need to add letter param if it exists
94
if(letter != null) {
95             int page = getPage() + 1;
96             if(hasMoreItems()) {
97                 Map JavaDoc params = new HashMap JavaDoc();
98                 params.put("page", ""+page);
99                 params.put("letter", letter);
100                 return createURL(getUrl(), params);
101             }
102             return null;
103         } else {
104             return super.getNextLink();
105         }
106     }
107     
108     
109     public String JavaDoc getPrevLink() {
110         // need to add letter param if it exists
111
if(letter != null) {
112             int page = getPage() - 1;
113             if (page >= 0) {
114                 Map JavaDoc params = new HashMap JavaDoc();
115                 params.put("page", ""+page);
116                 params.put("letter", letter);
117                 return createURL(getUrl(), params);
118             }
119             return null;
120         } else {
121             return super.getPrevLink();
122         }
123     }
124     
125     
126     public List JavaDoc getItems() {
127         
128         if (users == null) {
129             // calculate offset
130
int offset = getPage() * length;
131             
132             List JavaDoc results = new ArrayList JavaDoc();
133             try {
134                 Roller roller = RollerFactory.getRoller();
135                 UserManager umgr = roller.getUserManager();
136                 List JavaDoc rawUsers = null;
137                 if (letter == null) {
138                     rawUsers = umgr.getUsers(offset, length + 1);
139                 } else {
140                     rawUsers = umgr.getUsersByLetter(letter.charAt(0), offset, length + 1);
141                 }
142                 
143                 // check if there are more results for paging
144
if(rawUsers.size() > length) {
145                     more = true;
146                     rawUsers.remove(rawUsers.size() - 1);
147                 }
148                 
149                 // wrap the results
150
for (Iterator JavaDoc it = rawUsers.iterator(); it.hasNext();) {
151                     UserData user = (UserData) it.next();
152                     results.add(UserDataWrapper.wrap(user));
153                 }
154                 
155             } catch (Exception JavaDoc e) {
156                 log.error("ERROR: fetching user list", e);
157             }
158             
159             users = results;
160         }
161         
162         return users;
163     }
164     
165     
166     public boolean hasMoreItems() {
167         return more;
168     }
169     
170 }
171
Popular Tags