File Source: SiteModel.java
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.weblogger.ui.rendering.model;
20
21 import java.util.ArrayList;
22 import java.util.Calendar;
23 import java.util.Date;
24 import java.util.HashMap;
25 import java.util.Iterator;
26 import java.util.List;
27 import java.util.Map;
28 import org.apache.commons.lang.StringUtils;
29 import org.apache.commons.logging.Log;
30 import org.apache.commons.logging.LogFactory;
31 import org.apache.roller.weblogger.WebloggerException;
32 import org.apache.roller.weblogger.business.URLStrategy;
33 import org.apache.roller.weblogger.business.Weblogger;
34 import org.apache.roller.weblogger.business.WebloggerFactory;
35 import org.apache.roller.weblogger.business.UserManager;
36 import org.apache.roller.weblogger.business.WeblogManager;
37 import org.apache.roller.weblogger.pojos.WeblogHitCount;
38 import org.apache.roller.weblogger.pojos.WeblogPermission;
39 import org.apache.roller.weblogger.pojos.StatCount;
40 import org.apache.roller.weblogger.pojos.ThemeTemplate;
41 import org.apache.roller.weblogger.pojos.User;
42 import org.apache.roller.weblogger.pojos.WeblogEntry;
43 import org.apache.roller.weblogger.pojos.Weblog;
44 import org.apache.roller.weblogger.pojos.wrapper.UserWrapper;
45 import org.apache.roller.weblogger.pojos.wrapper.WeblogEntryWrapper;
46 import org.apache.roller.weblogger.pojos.wrapper.WeblogWrapper;
47 import org.apache.roller.weblogger.ui.rendering.pagers.CommentsPager;
48 import org.apache.roller.weblogger.ui.rendering.pagers.Pager;
49 import org.apache.roller.weblogger.ui.rendering.pagers.UsersPager;
50 import org.apache.roller.weblogger.ui.rendering.pagers.WeblogEntriesListPager;
51 import org.apache.roller.weblogger.ui.rendering.pagers.WeblogsPager;
52 import org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest;
53 import org.apache.roller.weblogger.ui.rendering.util.WeblogPageRequest;
54 import org.apache.roller.weblogger.ui.rendering.util.WeblogRequest;
55
56
57 /**
58 * Page model that provides access to site-wide users, weblogs and entries.
59 */
/*
P/P * Method: void org.apache.roller.weblogger.ui.rendering.model.SiteModel()
*
* Postconditions:
* this.feedRequest == null
* this.pageLink == null
* this.urlStrategy == null
* this.weblog == null
* this.weblogRequest == null
* this.pageNum == 0
* this.tags == &new ArrayList(SiteModel#1)
* new ArrayList(SiteModel#1) num objects == 1
*/
60 public class SiteModel implements Model {
61
/*
P/P * Method: org.apache.roller.weblogger.ui.rendering.model.SiteModel__static_init
*
* Postconditions:
* init'ed(log)
*/
62 private static Log log = LogFactory.getLog(SiteModel.class);
63
64 private Weblog weblog = null;
65 private WeblogRequest weblogRequest = null;
66 private WeblogFeedRequest feedRequest = null;
67 private List tags = new ArrayList();
68 private String pageLink = null;
69 private int pageNum = 0;
70
71 private URLStrategy urlStrategy = null;
72
73
74 public String getModelName() {
/*
P/P * Method: String getModelName()
*
* Postconditions:
* return_value == &"site"
*/
75 return "site";
76 }
77
78 public void init(Map initData) throws WebloggerException {
79
80 // we expect the init data to contain a weblogRequest object
/*
P/P * Method: void init(Map)
*
* Preconditions:
* initData != null
*
* Presumptions:
* java.util.Map:get(...)@81 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@100 != null
*
* Postconditions:
* possibly_updated(this.feedRequest)
* possibly_updated(this.pageLink)
* possibly_updated(this.pageNum)
* possibly_updated(this.tags)
* init'ed(this.urlStrategy)
* init'ed(this.weblog)
* (soft) this.weblogRequest != null
*
* Test Vectors:
* java.util.Map:get(...)@98: Inverse{null}, Addr_Set{null}
* org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:instanceof(...)@91: {0}, {1}
* org.apache.roller.weblogger.ui.rendering.util.WeblogPageRequest:instanceof(...)@86: {0}, {1}
*/
81 this.weblogRequest = (WeblogRequest) initData.get("parsedRequest");
82 if(this.weblogRequest == null) {
83 throw new WebloggerException("expected weblogRequest from init data");
84 }
85
86 if (weblogRequest instanceof WeblogPageRequest) {
87 ThemeTemplate weblogPage = ((WeblogPageRequest)weblogRequest).getWeblogPage();
88 pageLink = (weblogPage != null) ? weblogPage.getLink() : null;
89 pageNum = ((WeblogPageRequest)weblogRequest).getPageNum();
90 tags = ((WeblogPageRequest)weblogRequest).getTags();
91 } else if (weblogRequest instanceof WeblogFeedRequest) {
92 this.feedRequest = (WeblogFeedRequest) weblogRequest;
93 tags = feedRequest.getTags();
94 pageNum = feedRequest.getPage();
95 }
96
97 // look for url strategy
98 urlStrategy = (URLStrategy) initData.get("urlStrategy");
99 if(urlStrategy == null) {
100 urlStrategy = WebloggerFactory.getWeblogger().getUrlStrategy();
101 }
102
103 // extract weblog object
104 weblog = weblogRequest.getWeblog();
105 }
106
107 //----------------------------------------------------------------- Pagers
108
109 /**
110 * Get pager ofWeblogEntry objects across all weblogs, in reverse chrono order by pubTime.
111 * @param sinceDays Limit to past X days in past (or -1 for no limit)
112 * @param length Max number of results to return
113 */
114 public Pager getWeblogEntriesPager(int sinceDays, int length) {
115
/*
P/P * Method: Pager getWeblogEntriesPager(int, int)
*
* Preconditions:
* init'ed(this.feedRequest)
* init'ed(this.pageNum)
* init'ed(this.tags)
* this.urlStrategy != null
* init'ed(this.weblog)
* this.weblogRequest != null
* (soft) length <= 232-2
* (soft) org/apache/roller/weblogger/ui/rendering/pagers/WeblogEntriesListPager.log != null
* (soft) sinceDays <= 231
* (soft) init'ed(this.pageLink)
*
* Postconditions:
* return_value == &new WeblogEntriesListPager(getWeblogEntriesPager#1)
* new ArrayList(getItems#1) num objects == 1
* new WeblogEntriesListPager(getWeblogEntriesPager#1) num objects == 1
* return_value.entries == &new ArrayList(getItems#1)
* init'ed(return_value.lastUpdated)
* return_value.length == length
* (soft) return_value.length <= 232-2
* init'ed(return_value.locale)
* init'ed(return_value.more)
* return_value.page == One-of{0, this.pageNum}
* ...
*
* Test Vectors:
* this.feedRequest: Addr_Set{null}, Inverse{null}
*/
116 String pagerUrl = null;
117
118 if (feedRequest != null) {
119 pagerUrl = urlStrategy.getWeblogFeedURL(weblog,
120 weblogRequest.getLocale(), feedRequest.getType(),
121 feedRequest.getFormat(), feedRequest.getWeblogCategoryName(), null,
122 feedRequest.getTags(), feedRequest.isExcerpts(), true);
123 } else {
124 pagerUrl = urlStrategy.getWeblogPageURL(weblog,
125 weblogRequest.getLocale(), pageLink,
126 null, null, null, tags, 0, false);
127 }
128
129 return new WeblogEntriesListPager(
130 urlStrategy,
131 pagerUrl, null, null, null,
132 tags,
133 weblogRequest.getLocale(),
134 sinceDays,
135 pageNum,
136 length);
137 }
138
139
140 /**
141 * Get pager ofWeblogEntry objects across all weblogs,
142 * in reverse chrono order by pubTime.
143 * @param queryWeblog Restrict to this weblog
144 * @param sinceDays Limit to past X days in past (or -1 for no limit)
145 * @param length Max number of results to return
146 */
147 public Pager getWeblogEntriesPager(WeblogWrapper queryWeblog, int sinceDays, int length) {
/*
P/P * Method: Pager getWeblogEntriesPager(WeblogWrapper, int, int)
*
* Preconditions:
* queryWeblog != null
* init'ed(this.feedRequest)
* init'ed(this.pageNum)
* init'ed(this.tags)
* this.urlStrategy != null
* init'ed(this.weblog)
* this.weblogRequest != null
* (soft) length <= 232-2
* (soft) org/apache/roller/weblogger/ui/rendering/pagers/WeblogEntriesListPager.log != null
* (soft) sinceDays <= 231
* ...
*
* Postconditions:
* return_value == &new WeblogEntriesListPager(getWeblogEntriesPager#1*)
* new ArrayList(getItems#1) num objects == 1
* new WeblogEntriesListPager(getWeblogEntriesPager#1*) num objects == 1
* new WeblogEntriesListPager(getWeblogEntriesPager#1*).entries == &new ArrayList(getItems#1)
* init'ed(new WeblogEntriesListPager(getWeblogEntriesPager#1*).lastUpdated)
* new WeblogEntriesListPager(getWeblogEntriesPager#1*).length == length
* (soft) new WeblogEntriesListPager(getWeblogEntriesPager#1*).length <= 232-2
* init'ed(new WeblogEntriesListPager(getWeblogEntriesPager#1*).locale)
* init'ed(new WeblogEntriesListPager(getWeblogEntriesPager#1*).more)
* new WeblogEntriesListPager(getWeblogEntriesPager#1*).page == One-of{0, this.pageNum}
* ...
*/
148 return getWeblogEntriesPager(queryWeblog, null, null, sinceDays, length);
149 }
150
151 /**
152 * Get pager ofWeblogEntry objects across all weblogs,
153 * in reverse chrono order by pubTime.
154 * @param queryWeblog Restrict to this weblog
155 * @param user Restrict to this user
156 * @param sinceDays Limit to past X days in past (or -1 for no limit)
157 * @param length Max number of results to return
158 */
159 public Pager getWeblogEntriesPager(WeblogWrapper queryWeblog, User user, int sinceDays, int length) {
/*
P/P * Method: Pager getWeblogEntriesPager(WeblogWrapper, User, int, int)
*
* Preconditions:
* queryWeblog != null
* init'ed(this.feedRequest)
* init'ed(this.pageNum)
* init'ed(this.tags)
* this.urlStrategy != null
* init'ed(this.weblog)
* this.weblogRequest != null
* (soft) length <= 232-2
* (soft) org/apache/roller/weblogger/ui/rendering/pagers/WeblogEntriesListPager.log != null
* (soft) sinceDays <= 231
* ...
*
* Postconditions:
* return_value == &new WeblogEntriesListPager(getWeblogEntriesPager#1*)
* new ArrayList(getItems#1) num objects == 1
* new WeblogEntriesListPager(getWeblogEntriesPager#1*) num objects == 1
* new WeblogEntriesListPager(getWeblogEntriesPager#1*).entries == &new ArrayList(getItems#1)
* init'ed(new WeblogEntriesListPager(getWeblogEntriesPager#1*).lastUpdated)
* new WeblogEntriesListPager(getWeblogEntriesPager#1*).length == length
* (soft) new WeblogEntriesListPager(getWeblogEntriesPager#1*).length <= 232-2
* init'ed(new WeblogEntriesListPager(getWeblogEntriesPager#1*).locale)
* init'ed(new WeblogEntriesListPager(getWeblogEntriesPager#1*).more)
* new WeblogEntriesListPager(getWeblogEntriesPager#1*).page == One-of{0, this.pageNum}
* ...
*/
160 return getWeblogEntriesPager(queryWeblog, user, null, sinceDays, length);
161 }
162
163 /**
164 * Get pager ofWeblogEntry objects across all weblogs,
165 * in reverse chrono order by pubTime.
166 * @param queryWeblog Restrict to this weblog
167 * @param user Restrict to this user
168 * @param cat Restrict to this category
169 * @param sinceDays Limit to past X days in past (or -1 for no limit)
170 * @param length Max number of results to return
171 */
172 public Pager getWeblogEntriesPager(WeblogWrapper queryWeblog, User user, String cat, int sinceDays, int length) {
173
/*
P/P * Method: Pager getWeblogEntriesPager(WeblogWrapper, User, String, int, int)
*
* Preconditions:
* queryWeblog != null
* init'ed(this.feedRequest)
* init'ed(this.pageNum)
* init'ed(this.tags)
* this.urlStrategy != null
* init'ed(this.weblog)
* this.weblogRequest != null
* (soft) length <= 232-2
* (soft) org/apache/roller/weblogger/ui/rendering/pagers/WeblogEntriesListPager.log != null
* (soft) sinceDays <= 231
* ...
*
* Postconditions:
* return_value == &new WeblogEntriesListPager(getWeblogEntriesPager#1)
* new ArrayList(getItems#1) num objects == 1
* new WeblogEntriesListPager(getWeblogEntriesPager#1) num objects == 1
* return_value.entries == &new ArrayList(getItems#1)
* init'ed(return_value.lastUpdated)
* return_value.length == length
* (soft) return_value.length <= 232-2
* init'ed(return_value.locale)
* init'ed(return_value.more)
* return_value.page == One-of{0, this.pageNum}
* ...
*
* Test Vectors:
* this.feedRequest: Addr_Set{null}, Inverse{null}
*/
174 String pagerUrl = null;
175 if (feedRequest != null) {
176 pagerUrl = urlStrategy.getWeblogFeedURL(weblog,
177 weblogRequest.getLocale(), feedRequest.getType(),
178 feedRequest.getFormat(), feedRequest.getWeblogCategoryName(), null,
179 feedRequest.getTags(), feedRequest.isExcerpts(), true);
180 } else {
181 pagerUrl = urlStrategy.getWeblogPageURL(weblog,
182 weblogRequest.getLocale(), pageLink,
183 null, null, null, tags, 0, false);
184 }
185
186 return new WeblogEntriesListPager(
187 urlStrategy,
188 pagerUrl, queryWeblog.getPojo(), user, cat,
189 tags,
190 weblogRequest.getLocale(),
191 sinceDays,
192 pageNum,
193 length);
194 }
195
196
197 /*
198 * Get pager of most recent Comment objects across all weblogs,
199 * in reverse chrono order by postTime.
200 * @param offset Offset into results (for paging)
201 * @param len Max number of results to return
202 */
203 public Pager getCommentsPager(int sinceDays, int length) {
204
/*
P/P * Method: Pager getCommentsPager(int, int)
*
* Preconditions:
* init'ed(this.feedRequest)
* init'ed(this.pageNum)
* this.urlStrategy != null
* init'ed(this.weblog)
* this.weblogRequest != null
* (soft) length <= 232-2
* (soft) org/apache/roller/weblogger/ui/rendering/pagers/CommentsPager.log != null
* (soft) sinceDays <= 231
* (soft) init'ed(this.pageLink)
*
* Postconditions:
* return_value == &new CommentsPager(getCommentsPager#1)
* new ArrayList(getItems#1) num objects == 1
* new CommentsPager(getCommentsPager#1) num objects == 1
* return_value.comments == &new ArrayList(getItems#1)
* init'ed(return_value.lastUpdated)
* return_value.length == length
* (soft) return_value.length <= 232-2
* init'ed(return_value.locale)
* init'ed(return_value.more)
* return_value.page == One-of{0, this.pageNum}
* ...
*
* Test Vectors:
* this.feedRequest: Addr_Set{null}, Inverse{null}
*/
205 String pagerUrl = null;
206 if (feedRequest != null) {
207 pagerUrl = urlStrategy.getWeblogFeedURL(weblog,
208 weblogRequest.getLocale(), feedRequest.getType(),
209 feedRequest.getFormat(), null, null, null,
210 feedRequest.isExcerpts(), true);
211 } else {
212 pagerUrl = urlStrategy.getWeblogPageURL(weblog,
213 weblogRequest.getLocale(), pageLink,
214 null, null, null, null, 0, false);
215 }
216
217 return new CommentsPager(
218 urlStrategy,
219 pagerUrl,
220 null,
221 weblogRequest.getLocale(),
222 sinceDays,
223 pageNum,
224 length);
225 }
226
227
228 /* Get pager of users whose names begin with specified letter */
229 public Pager getUsersByLetterPager(String letter, int sinceDays, int length) {
230
/*
P/P * Method: Pager getUsersByLetterPager(String, int, int)
*
* Preconditions:
* init'ed(this.feedRequest)
* init'ed(this.pageNum)
* this.urlStrategy != null
* init'ed(this.weblog)
* this.weblogRequest != null
* (soft) length <= 232-2
* (soft) org/apache/roller/weblogger/ui/rendering/pagers/UsersPager.log != null
* (soft) init'ed(this.pageLink)
*
* Postconditions:
* return_value == &new UsersPager(getUsersByLetterPager#1)
* new ArrayList(getItems#1) num objects == 1
* new UsersPager(getUsersByLetterPager#1) num objects == 1
* return_value.length == length
* (soft) return_value.length <= 232-2
* return_value.letter == One-of{letter, null}
* init'ed(return_value.letter)
* init'ed(return_value.locale)
* init'ed(return_value.more)
* return_value.page == One-of{0, this.pageNum}
* ...
*
* Test Vectors:
* letter: Addr_Set{null}, Inverse{null}
* this.feedRequest: Addr_Set{null}, Inverse{null}
* org.apache.commons.lang.StringUtils:isEmpty(...)@242: {0}, {1}
*/
231 String pagerUrl = null;
232 if (feedRequest != null) {
233 pagerUrl = urlStrategy.getWeblogFeedURL(weblog,
234 weblogRequest.getLocale(), feedRequest.getType(),
235 feedRequest.getFormat(), null, null, null, feedRequest.isExcerpts(), true);
236 } else {
237 pagerUrl = urlStrategy.getWeblogPageURL(weblog,
238 weblogRequest.getLocale(), pageLink,
239 null, null, null, null, 0, false);
240 }
241
242 if(letter != null && StringUtils.isEmpty(letter)) {
243 letter = null;
244 }
245
246 return new UsersPager(
247 urlStrategy,
248 pagerUrl,
249 letter,
250 weblogRequest.getLocale(),
251 sinceDays,
252 pageNum,
253 length);
254 }
255
256
257 /** Get pager of weblogs whose handles begin with specified letter */
258 public Pager getWeblogsByLetterPager(String letter, int sinceDays, int length) {
259
/*
P/P * Method: Pager getWeblogsByLetterPager(String, int, int)
*
* Preconditions:
* init'ed(this.pageLink)
* init'ed(this.pageNum)
* this.urlStrategy != null
* init'ed(this.weblog)
* this.weblogRequest != null
* (soft) length <= 232-2
* (soft) org/apache/roller/weblogger/ui/rendering/pagers/WeblogsPager.log != null
* (soft) sinceDays <= 231
*
* Postconditions:
* return_value == &new WeblogsPager(getWeblogsByLetterPager#1)
* new ArrayList(getItems#1) num objects == 1
* new WeblogsPager(getWeblogsByLetterPager#1) num objects == 1
* return_value.length == length
* (soft) return_value.length <= 232-2
* return_value.letter == One-of{letter, null}
* init'ed(return_value.letter)
* init'ed(return_value.locale)
* init'ed(return_value.more)
* return_value.page == One-of{0, this.pageNum}
* ...
*
* Test Vectors:
* letter: Addr_Set{null}, Inverse{null}
* org.apache.commons.lang.StringUtils:isEmpty(...)@264: {0}, {1}
*/
260 String pagerUrl = urlStrategy.getWeblogPageURL(weblog,
261 weblogRequest.getLocale(), pageLink,
262 null, null, null, null, 0, false);
263
264 if(letter != null && StringUtils.isEmpty(letter)) {
265 letter = null;
266 }
267
268 return new WeblogsPager(
269 urlStrategy,
270 pagerUrl,
271 letter,
272 weblogRequest.getLocale(),
273 sinceDays,
274 pageNum,
275 length);
276 }
277
278 //--------------------------------------------------- User/weblog directory
279
280 /**
281 * Get map with 26 entries, one for each letter A-Z and
282 * containing integers reflecting the number of users whose
283 * names start with each letter.
284 */
285 public Map getUserNameLetterMap() {
/*
P/P * Method: Map getUserNameLetterMap()
*
* Preconditions:
* (soft) log != null
*
* Presumptions:
* org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@289 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@288 != null
*
* Postconditions:
* init'ed(return_value)
* new HashMap(getUserNameLetterMap#1) num objects == 1
*/
286 Map results = new HashMap();
287 try {
288 Weblogger roller = WebloggerFactory.getWeblogger();
289 UserManager umgr = roller.getUserManager();
290 results = umgr.getUserNameLetterMap();
291 } catch (Exception e) {
292 log.error("ERROR: fetching username letter map", e);
293 }
294 return results;
295 }
296
297
298 /**
299 * Get map with 26 entries, one for each letter A-Z and
300 * containing integers reflecting the number of weblogs whose
301 * names start with each letter.
302 */
303 public Map getWeblogHandleLetterMap() {
/*
P/P * Method: Map getWeblogHandleLetterMap()
*
* Preconditions:
* (soft) log != null
*
* Presumptions:
* org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@307 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@306 != null
*
* Postconditions:
* init'ed(return_value)
* new HashMap(getWeblogHandleLetterMap#1) num objects == 1
*/
304 Map results = new HashMap();
305 try {
306 Weblogger roller = WebloggerFactory.getWeblogger();
307 UserManager umgr = roller.getUserManager();
308 results = umgr.getWeblogHandleLetterMap();
309 } catch (Exception e) {
310 log.error("ERROR: fetching weblog handle letter map", e);
311 }
312 return results;
313 }
314
315
316 /**
317 * Return list of weblogs that user belongs to.
318 */
319 public List getUsersWeblogs(String userName) {
/*
P/P * Method: List getUsersWeblogs(String)
*
* Preconditions:
* (soft) log != null
*
* Presumptions:
* java.util.Iterator:next(...)@327 != null
* org.apache.roller.weblogger.business.UserManager:getAllPermissions(...)@325 != null
* org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@323 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@322 != null
*
* Postconditions:
* return_value == &new ArrayList(getUsersWeblogs#1)
* new ArrayList(getUsersWeblogs#1) num objects == 1
*/
320 List results = new ArrayList();
321 try {
322 Weblogger roller = WebloggerFactory.getWeblogger();
323 UserManager umgr = roller.getUserManager();
324 User user = umgr.getUserByUserName(userName);
325 List perms = umgr.getAllPermissions(user);
326 for (Iterator it = perms.iterator(); it.hasNext();) {
327 WeblogPermission perm = (WeblogPermission) it.next();
328 results.add(WeblogWrapper.wrap(perm.getWebsite(), urlStrategy));
329 }
330 } catch (Exception e) {
331 log.error("ERROR: fetching weblog list", e);
332 }
333 return results;
334 }
335
336
337 /**
338 * Return list of users that belong to website.
339 */
340 public List getWeblogsUsers(String handle) {
/*
P/P * Method: List getWeblogsUsers(String)
*
* Preconditions:
* (soft) log != null
*
* Presumptions:
* java.util.Iterator:next(...)@348 != null
* org.apache.roller.weblogger.business.UserManager:getAllPermissions(...)@346 != null
* org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@344 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@343 != null
*
* Postconditions:
* return_value == &new ArrayList(getWeblogsUsers#1)
* new ArrayList(getWeblogsUsers#1) num objects == 1
*/
341 List results = new ArrayList();
342 try {
343 Weblogger roller = WebloggerFactory.getWeblogger();
344 UserManager umgr = roller.getUserManager();
345 Weblog website = umgr.getWebsiteByHandle(handle);
346 List perms = umgr.getAllPermissions(website);
347 for (Iterator it = perms.iterator(); it.hasNext();) {
348 WeblogPermission perm = (WeblogPermission) it.next();
349 results.add(UserWrapper.wrap(perm.getUser()));
350 }
351 } catch (Exception e) {
352 log.error("ERROR: fetching weblog list", e);
353 }
354 return results;
355 }
356
357
358
359 /** Get User object by username */
360 public UserWrapper getUser(String username) {
/*
P/P * Method: UserWrapper getUser(String)
*
* Preconditions:
* (soft) log != null
*
* Presumptions:
* init'ed(java.lang.Boolean.TRUE)
* org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@364 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@363 != null
*
* Postconditions:
* init'ed(return_value)
*/
361 UserWrapper wrappedUser = null;
362 try {
363 Weblogger roller = WebloggerFactory.getWeblogger();
364 UserManager umgr = roller.getUserManager();
365 User user = umgr.getUserByUserName(username, Boolean.TRUE);
366 wrappedUser = UserWrapper.wrap(user);
367 } catch (Exception e) {
368 log.error("ERROR: fetching users by letter", e);
369 }
370 return wrappedUser;
371 }
372
373
374 /** Get Website object by handle */
375 public WeblogWrapper getWeblog(String handle) {
/*
P/P * Method: WeblogWrapper getWeblog(String)
*
* Preconditions:
* (soft) log != null
*
* Presumptions:
* org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@379 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@378 != null
*
* Postconditions:
* return_value == One-of{&new WeblogWrapper(wrap#1), null}
* return_value in Addr_Set{null,&new WeblogWrapper(wrap#1)}
* new WeblogWrapper(wrap#1) num objects <= 1
* new WeblogWrapper(wrap#1).pojo != null
* new WeblogWrapper(wrap#1).urlStrategy == this.urlStrategy
* init'ed(new WeblogWrapper(wrap#1).urlStrategy)
*/
376 WeblogWrapper wrappedWebsite = null;
377 try {
378 Weblogger roller = WebloggerFactory.getWeblogger();
379 UserManager umgr = roller.getUserManager();
380 Weblog website = umgr.getWebsiteByHandle(handle);
381 wrappedWebsite = WeblogWrapper.wrap(website, urlStrategy);
382 } catch (Exception e) {
383 log.error("ERROR: fetching users by letter", e);
384 }
385 return wrappedWebsite;
386 }
387
388
389 //------------------------------------------------------- Small collections
390
391 /*
392 * Get most collection of Website objects,
393 * in reverse chrono order by creationDate.
394 * @param offset Offset into results (for paging)
395 * @param len Max number of results to return
396 */
397 public List getNewWeblogs(int sinceDays, int length) {
/*
P/P * Method: List getNewWeblogs(int, int)
*
* Preconditions:
* sinceDays <= 231
* (soft) log != null
*
* Presumptions:
* init'ed(java.lang.Boolean.TRUE)
* java.util.Calendar:getInstance(...)@399 != null
* org.apache.roller.weblogger.business.UserManager:getWebsites(...)@406 != null
* org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@405 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@404 != null
*
* Postconditions:
* return_value == &new ArrayList(getNewWeblogs#1)
* new ArrayList(getNewWeblogs#1) num objects == 1
*/
398 List results = new ArrayList();
399 Calendar cal = Calendar.getInstance();
400 cal.setTime(new Date());
401 cal.add(Calendar.DATE, -1 * sinceDays);
402 Date startDate = cal.getTime();
403 try {
404 Weblogger roller = WebloggerFactory.getWeblogger();
405 UserManager umgr = roller.getUserManager();
406 List weblogs = umgr.getWebsites(
407 null, Boolean.TRUE, Boolean.TRUE, startDate, null, 0, length);
408 for (Iterator it = weblogs.iterator(); it.hasNext();) {
409 Weblog website = (Weblog) it.next();
410 results.add(WeblogWrapper.wrap(website, urlStrategy));
411 }
412 } catch (Exception e) {
413 log.error("ERROR: fetching weblog list", e);
414 }
415 return results;
416 }
417
418
419 /*
420 * Get most recent User objects, in reverse chrono order by creationDate.
421 * @param offset Offset into results (for paging)
422 * @param len Max number of results to return
423 */
424 public List getNewUsers(int sinceDays, int length) {
/*
P/P * Method: List getNewUsers(int, int)
*
* Preconditions:
* (soft) log != null
*
* Presumptions:
* init'ed(java.lang.Boolean.TRUE)
* org.apache.roller.weblogger.business.UserManager:getUsers(...)@429 != null
* org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@428 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@427 != null
*
* Postconditions:
* return_value == &new ArrayList(getNewUsers#1)
* new ArrayList(getNewUsers#1) num objects == 1
*/
425 List results = new ArrayList();
426 try {
427 Weblogger roller = WebloggerFactory.getWeblogger();
428 UserManager umgr = roller.getUserManager();
429 List users = umgr.getUsers(null, Boolean.TRUE, null, null, 0, length);
430 for (Iterator it = users.iterator(); it.hasNext();) {
431 User user = (User) it.next();
432 results.add(UserWrapper.wrap(user));
433 }
434 } catch (Exception e) {
435 log.error("ERROR: fetching weblog list", e);
436 }
437 return results;
438 }
439
440
441 /**
442 * Get list of WebsiteDisplay objects, ordered by number of hits.
443 * @param sinceDays Only consider weblogs updated in the last sinceDays
444 * @param len Max number of results to return
445 */
446 public List getHotWeblogs(int sinceDays, int length) {
447
/*
P/P * Method: List getHotWeblogs(int, int)
*
* Preconditions:
* (soft) log != null
*
* Presumptions:
* java.util.Iterator:next(...)@455 != null
* org.apache.roller.weblogger.business.WeblogManager:getHotWeblogs(...)@451 != null
* org.apache.roller.weblogger.business.Weblogger:getWeblogManager(...)@450 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@450 != null
* org.apache.roller.weblogger.pojos.WeblogHitCount:getWeblog(...)@456 != null
* ...
*
* Postconditions:
* return_value == &new ArrayList(getHotWeblogs#1)
* new ArrayList(getHotWeblogs#1) num objects == 1
*/
448 List results = new ArrayList();
449 try {
450 WeblogManager mgr = WebloggerFactory.getWeblogger().getWeblogManager();
451 List hotBlogs = mgr.getHotWeblogs(sinceDays, 0, length);
452
453 Iterator hitCounts = hotBlogs.iterator();
454 while (hitCounts.hasNext()) {
455 WeblogHitCount hitCount = (WeblogHitCount) hitCounts.next();
456 StatCount statCount = new StatCount(
457 hitCount.getWeblog().getId(),
458 hitCount.getWeblog().getHandle(),
459 hitCount.getWeblog().getName(),
460 "statCount.weblogDayHits",
461 hitCount.getDailyHits());
462 statCount.setWeblogHandle(hitCount.getWeblog().getHandle());
463 results.add(statCount);
464 }
465
466 } catch (Exception e) {
467 log.error("ERROR: fetching hot weblog list", e);
468 }
469
470 return results;
471 }
472
473
474 /**
475 * Get most collection of most commented websites, as StatCount objects,
476 * in descending order by number of comments.
477 * @param sinceDays Only consider weblogs updated in the last sinceDays
478 * @param offset Offset into results (for paging)
479 * @param length Max number of results to return
480 */
481 public List getMostCommentedWeblogs(int sinceDays , int length) {
/*
P/P * Method: List getMostCommentedWeblogs(int, int)
*
* Preconditions:
* sinceDays <= 231
* (soft) log != null
*
* Presumptions:
* java.util.Calendar:getInstance(...)@483 != null
* org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@489 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@488 != null
*
* Postconditions:
* init'ed(return_value)
* new ArrayList(getMostCommentedWeblogs#1) num objects == 1
*/
482 List results = new ArrayList();
483 Calendar cal = Calendar.getInstance();
484 cal.setTime(new Date());
485 cal.add(Calendar.DATE, -1 * sinceDays);
486 Date startDate = cal.getTime();
487 try {
488 Weblogger roller = WebloggerFactory.getWeblogger();
489 UserManager umgr = roller.getUserManager();
490 results = umgr.getMostCommentedWebsites(
491 startDate, new Date(), 0, length);
492 } catch (Exception e) {
493 log.error("ERROR: fetching commented weblog list", e);
494 }
495 return results;
496 }
497
498
499 /**
500 * Get most commented weblog entries across all weblogs, as StatCount
501 * objects, in descending order by number of comments.
502 * @param sinceDays Only consider weblogs updated in the last sinceDays
503 * @param cats To limit results to list of category names
504 * @param len Max number of results to return
505 */
506 public List getMostCommentedWeblogEntries(
507 List cats, int sinceDays, int length) {
/*
P/P * Method: List getMostCommentedWeblogEntries(List, int, int)
*
* Preconditions:
* sinceDays <= 231
* (soft) log != null
*
* Presumptions:
* java.util.Calendar:getInstance(...)@509 != null
* org.apache.roller.weblogger.business.Weblogger:getWeblogManager(...)@515 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@514 != null
*
* Postconditions:
* init'ed(return_value)
* new ArrayList(getMostCommentedWeblogEntries#1) num objects == 1
*/
508 List results = new ArrayList();
509 Calendar cal = Calendar.getInstance();
510 cal.setTime(new Date());
511 cal.add(Calendar.DATE, -1 * sinceDays);
512 Date startDate = cal.getTime();
513 try {
514 Weblogger roller = WebloggerFactory.getWeblogger();
515 WeblogManager wmgr = roller.getWeblogManager();
516 results = wmgr.getMostCommentedWeblogEntries(
517 null, startDate, new Date(), 0, length);
518 } catch (Exception e) {
519 log.error("ERROR: fetching commented weblog entries list", e);
520 }
521 return results;
522 }
523
524 /**
525 * Get pinned entries.
526 * @param sinceDays Only consider weblogs updated in the last sinceDays
527 * @param length Max number of results to return
528 */
529 public List getPinnedWeblogEntries(int length) {
/*
P/P * Method: List getPinnedWeblogEntries(int)
*
* Preconditions:
* (soft) log != null
*
* Presumptions:
* org.apache.roller.weblogger.business.WeblogManager:getWeblogEntriesPinnedToMain(...)@534 != null
* org.apache.roller.weblogger.business.Weblogger:getWeblogManager(...)@533 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@532 != null
*
* Postconditions:
* return_value == &new ArrayList(getPinnedWeblogEntries#1)
* new ArrayList(getPinnedWeblogEntries#1) num objects == 1
*/
530 List results = new ArrayList();
531 try {
532 Weblogger roller = WebloggerFactory.getWeblogger();
533 WeblogManager wmgr = roller.getWeblogManager();
534 List weblogs = wmgr.getWeblogEntriesPinnedToMain(new Integer(length));
535 for (Iterator it = weblogs.iterator(); it.hasNext();) {
536 WeblogEntry entry = (WeblogEntry) it.next();
537 results.add(WeblogEntryWrapper.wrap(entry, urlStrategy));
538 }
539 } catch (Exception e) {
540 log.error("ERROR: fetching pinned weblog entries", e);
541 }
542 return results;
543 }
544
545 /**
546 *
547 * @param sinceDays
548 * @param length
549 * @return
550 */
551 public List getPopularTags(int sinceDays, int length) {
/*
P/P * Method: List getPopularTags(int, int)
*
* Preconditions:
* sinceDays <= 231
* (soft) log != null
*
* Presumptions:
* java.util.Calendar:getInstance(...)@555 != null
* org.apache.roller.weblogger.business.Weblogger:getWeblogManager(...)@563 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@562 != null
*
* Postconditions:
* init'ed(return_value)
* new ArrayList(getPopularTags#1) num objects == 1
*
* Test Vectors:
* sinceDays: {-231..0}, {1..231}
*/
552 List results = new ArrayList();
553 Date startDate = null;
554 if(sinceDays > 0) {
555 Calendar cal = Calendar.getInstance();
556 cal.setTime(new Date());
557 cal.add(Calendar.DATE, -1 * sinceDays);
558 startDate = cal.getTime();
559 }
560
561 try {
562 Weblogger roller = WebloggerFactory.getWeblogger();
563 WeblogManager wmgr = roller.getWeblogManager();
564 results = wmgr.getPopularTags(null, startDate, length);
565 } catch (Exception e) {
566 log.error("ERROR: fetching site tags list", e);
567 }
568 return results;
569 }
570
571
572 public long getCommentCount() {
/*
P/P * Method: long getCommentCount()
*
* Preconditions:
* (soft) log != null
*
* Presumptions:
* org.apache.roller.weblogger.business.Weblogger:getWeblogManager(...)@576 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@575 != null
*
* Postconditions:
* init'ed(return_value)
*/
573 long count = 0;
574 try {
575 Weblogger roller = WebloggerFactory.getWeblogger();
576 WeblogManager mgr = roller.getWeblogManager();
577 count = mgr.getCommentCount();
578 } catch (WebloggerException e) {
579 log.error("Error getting comment count for site ", e);
580 }
581 return count;
582 }
583
584
585 public long getEntryCount() {
/*
P/P * Method: long getEntryCount()
*
* Preconditions:
* (soft) log != null
*
* Presumptions:
* org.apache.roller.weblogger.business.Weblogger:getWeblogManager(...)@589 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@588 != null
*
* Postconditions:
* init'ed(return_value)
*/
586 long count = 0;
587 try {
588 Weblogger roller = WebloggerFactory.getWeblogger();
589 WeblogManager mgr = roller.getWeblogManager();
590 count = mgr.getEntryCount();
591 } catch (WebloggerException e) {
592 log.error("Error getting entry count for site", e);
593 }
594 return count;
595 }
596
597
598 public long getWeblogCount() {
/*
P/P * Method: long getWeblogCount()
*
* Preconditions:
* (soft) log != null
*
* Presumptions:
* org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@602 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@601 != null
*
* Postconditions:
* init'ed(return_value)
*/
599 long count = 0;
600 try {
601 Weblogger roller = WebloggerFactory.getWeblogger();
602 UserManager mgr = roller.getUserManager();
603 count = mgr.getWeblogCount();
604 } catch (WebloggerException e) {
605 log.error("Error getting weblog count for site", e);
606 }
607 return count;
608 }
609
610
611 public long getUserCount() {
/*
P/P * Method: long getUserCount()
*
* Preconditions:
* (soft) log != null
*
* Presumptions:
* org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@615 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@614 != null
*
* Postconditions:
* init'ed(return_value)
*/
612 long count = 0;
613 try {
614 Weblogger roller = WebloggerFactory.getWeblogger();
615 UserManager mgr = roller.getUserManager();
616 count = mgr.getUserCount();
617 } catch (WebloggerException e) {
618 log.error("Error getting user count for site", e);
619 }
620 return count;
621 }
622
623 }
SofCheck Inspector Build Version : 2.18479
| SiteModel.java |
2009-Jan-02 14:25:08 |
| SiteModel.class |
2009-Sep-04 03:12:44 |