File Source: WeblogEntriesLatestPager.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.pagers;
20
21 import java.util.ArrayList;
22 import java.util.Date;
23 import java.util.Iterator;
24 import java.util.List;
25 import java.util.Map;
26 import java.util.TreeMap;
27 import org.apache.commons.collections.comparators.ReverseComparator;
28 import org.apache.commons.logging.Log;
29 import org.apache.commons.logging.LogFactory;
30 import org.apache.roller.weblogger.business.URLStrategy;
31 import org.apache.roller.weblogger.business.Weblogger;
32 import org.apache.roller.weblogger.business.WebloggerFactory;
33 import org.apache.roller.weblogger.business.WeblogManager;
34 import org.apache.roller.weblogger.pojos.WeblogEntry;
35 import org.apache.roller.weblogger.pojos.Weblog;
36 import org.apache.roller.weblogger.pojos.wrapper.WeblogEntryWrapper;
37
38
39 /**
40 * A pager over a collection of recent weblog entries.
41 */
42 public class WeblogEntriesLatestPager extends AbstractWeblogEntriesPager {
43
/*
P/P * Method: org.apache.roller.weblogger.ui.rendering.pagers.WeblogEntriesLatestPager__static_init
*
* Postconditions:
* init'ed(log)
*/
44 private static Log log = LogFactory.getLog(WeblogEntriesLatestPager.class);
45
46 // collection for the pager
47 private Map entries = null;
48
49 // are there more pages?
50 private boolean more = false;
51
52
53 public WeblogEntriesLatestPager(
54 URLStrategy strat,
55 Weblog weblog,
56 String locale,
57 String pageLink,
58 String entryAnchor,
59 String dateString,
60 String catPath,
61 List tags,
62 int page) {
63
/*
P/P * Method: void org.apache.roller.weblogger.ui.rendering.pagers.WeblogEntriesLatestPager(URLStrategy, Weblog, String, String, String, String, String, List, int)
*
* Preconditions:
* locale == null
* org/apache/roller/weblogger/util/I18nMessages.messagesMap != null
* weblog != null
* (soft) log != null
*
* Postconditions:
* this.catPath == catPath
* init'ed(this.catPath)
* this.dateString == dateString
* init'ed(this.dateString)
* this.entries == &new TreeMap(getEntries#1)
* this.entryAnchor == entryAnchor
* init'ed(this.entryAnchor)
* (soft) this.length <= 232-2
* this.locale == null
* this.messageUtils != null
* ...
*/
64 super(strat, weblog, locale, pageLink, entryAnchor, dateString, catPath, tags, page);
65
66 // initialize the pager collection
67 getEntries();
68 }
69
70
71 public Map getEntries() {
72
/*
P/P * Method: Map getEntries()
*
* Preconditions:
* init'ed(this.entries)
* (soft) log != null
* (soft) init'ed(this.catPath)
* (soft) this.length <= 232-2
* (soft) init'ed(this.locale)
* (soft) init'ed(this.offset)
* (soft) init'ed(this.tags)
* (soft) init'ed(this.weblog)
*
* Presumptions:
* java.util.Map:get(...)@98 != null
* java.util.Map:keySet(...)@92 != null
* org.apache.roller.weblogger.business.WeblogManager:getWeblogEntryObjectMap(...)@78 != null
* org.apache.roller.weblogger.business.Weblogger:getWeblogManager(...)@78 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@76 != null
* ...
*
* Postconditions:
* return_value == One-of{old this.entries, &new TreeMap(getEntries#1)}
* return_value != null
* this.entries == return_value
* possibly_updated(this.more)
* new TreeMap(getEntries#1) num objects <= 1
*
* Test Vectors:
* this.entries: Inverse{null}, Addr_Set{null}
* java.util.List:size(...)@108: {-231..0}, {1..232-1}
*/
73 if (entries == null) {
74 entries = new TreeMap(new ReverseComparator());
75 try {
76 Weblogger roller = WebloggerFactory.getWeblogger();
+ 77 WeblogManager wmgr = roller.getWeblogManager();
78 Map mmap = WebloggerFactory.getWeblogger().getWeblogManager().getWeblogEntryObjectMap(
79 weblog,
80 null,
81 new Date(),
82 catPath,
83 tags,
84 WeblogEntry.PUBLISHED,
85 locale,
86 offset,
87 length + 1);
88
89 // need to wrap pojos
90 int count = 0;
91 java.util.Date key = null;
92 Iterator days = mmap.keySet().iterator();
93 while(days.hasNext()) {
94 key = (java.util.Date)days.next();
95
96 // now we need to go through each entry in a day and wrap
97 List wrapped = new ArrayList();
98 List unwrapped= (List) mmap.get(key);
99 for(int i=0; i < unwrapped.size(); i++) {
+ 100 if (count++ < length) {
101 wrapped.add(i,WeblogEntryWrapper.wrap((WeblogEntry)unwrapped.get(i), urlStrategy));
102 } else {
103 more = true;
104 }
105 }
106
107 // done with that day, put it in the map
108 if(wrapped.size() > 0) {
109 entries.put(key, wrapped);
110 }
111 }
112 } catch (Exception e) {
113 log.error("ERROR: getting entry month map", e);
114 }
115 }
116
117 return entries;
118 }
119
120
121 public boolean hasMoreEntries() {
/*
P/P * Method: bool hasMoreEntries()
*
* Preconditions:
* init'ed(this.more)
*
* Postconditions:
* return_value == this.more
* init'ed(return_value)
*/
122 return more;
123 }
124
125 }
SofCheck Inspector Build Version : 2.18479
| WeblogEntriesLatestPager.java |
2009-Jan-02 14:25:06 |
| WeblogEntriesLatestPager.class |
2009-Sep-04 03:12:44 |