KickJava   Java API By Example, From Geeks To Geeks.

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


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.Date JavaDoc;
23 import java.util.Iterator JavaDoc;
24 import java.util.List JavaDoc;
25 import java.util.Map JavaDoc;
26 import java.util.TreeMap JavaDoc;
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.model.Roller;
31 import org.apache.roller.model.RollerFactory;
32 import org.apache.roller.model.WeblogManager;
33 import org.apache.roller.pojos.WeblogCategoryData;
34 import org.apache.roller.pojos.WeblogEntryData;
35 import org.apache.roller.pojos.WeblogTemplate;
36 import org.apache.roller.pojos.WebsiteData;
37 import org.apache.roller.pojos.wrapper.WeblogEntryDataWrapper;
38
39
40 /**
41  *
42  */

43 public class WeblogEntriesLatestPager extends AbstractWeblogEntriesPager {
44     
45     private static Log log = LogFactory.getLog(WeblogEntriesLatestPager.class);
46     
47     // collection for the pager
48
private Map JavaDoc entries = null;
49     
50     // are there more pages?
51
private boolean more = false;
52     
53     
54     public WeblogEntriesLatestPager(
55             WebsiteData weblog,
56             String JavaDoc locale,
57             String JavaDoc pageLink,
58             String JavaDoc entryAnchor,
59             String JavaDoc dateString,
60             String JavaDoc catPath,
61             int page) {
62         
63         super(weblog, locale, pageLink, entryAnchor, dateString, catPath, page);
64         
65         // initialize the pager collection
66
getEntries();
67     }
68     
69     
70     public Map JavaDoc getEntries() {
71         
72         if (entries == null) {
73             entries = new TreeMap JavaDoc(new ReverseComparator());
74             try {
75                 Roller roller = RollerFactory.getRoller();
76                 WeblogManager wmgr = roller.getWeblogManager();
77                 Map JavaDoc mmap = RollerFactory.getRoller().getWeblogManager().getWeblogEntryObjectMap(
78                         weblog,
79                         null,
80                         new Date JavaDoc(),
81                         catPath,
82                         WeblogEntryData.PUBLISHED,
83                         locale,
84                         offset,
85                         length + 1);
86                 
87                 // need to wrap pojos
88
int count = 0;
89                 java.util.Date JavaDoc key = null;
90                 Iterator JavaDoc days = mmap.keySet().iterator();
91                 while(days.hasNext()) {
92                     key = (java.util.Date JavaDoc)days.next();
93                     
94                     // now we need to go through each entry in a day and wrap
95
List JavaDoc wrapped = new ArrayList JavaDoc();
96                     List JavaDoc unwrapped= (List JavaDoc) mmap.get(key);
97                     for(int i=0; i < unwrapped.size(); i++) {
98                         if (count++ < length) {
99                             wrapped.add(i,
100                                 WeblogEntryDataWrapper.wrap((WeblogEntryData)unwrapped.get(i)));
101                         } else {
102                             more = true;
103                         }
104                     }
105                     
106                     // done with that day, put it in the map
107
if(wrapped.size() > 0) {
108                         entries.put(key, wrapped);
109                     }
110                 }
111             } catch (Exception JavaDoc e) {
112                 log.error("ERROR: getting entry month map", e);
113             }
114         }
115         
116         return entries;
117     }
118     
119     
120     public boolean hasMoreEntries() {
121         return more;
122     }
123     
124 }
125
Popular Tags