1 18 19 package org.apache.roller.ui.rendering.pagers; 20 21 import java.text.SimpleDateFormat ; 22 import java.util.ArrayList ; 23 import java.util.Calendar ; 24 import java.util.Date ; 25 import java.util.Iterator ; 26 import java.util.List ; 27 import java.util.Map ; 28 import java.util.TreeMap ; 29 import org.apache.commons.collections.comparators.ReverseComparator; 30 import org.apache.commons.logging.Log; 31 import org.apache.commons.logging.LogFactory; 32 import org.apache.roller.model.Roller; 33 import org.apache.roller.model.RollerFactory; 34 import org.apache.roller.model.WeblogManager; 35 import org.apache.roller.pojos.WeblogEntryData; 36 import org.apache.roller.pojos.WebsiteData; 37 import org.apache.roller.pojos.wrapper.WeblogEntryDataWrapper; 38 import org.apache.roller.util.DateUtil; 39 import org.apache.roller.util.MessageUtilities; 40 41 42 45 public class WeblogEntriesDayPager extends AbstractWeblogEntriesPager { 46 47 private static Log log = LogFactory.getLog(WeblogEntriesDayPager.class); 48 49 private SimpleDateFormat dayFormat = new SimpleDateFormat ( 50 MessageUtilities.getString("weblogEntriesPager.day.dateFormat")); 51 52 private Date day; 53 private Date nextDay; 54 private Date prevDay; 55 56 private Map entries = null; 58 59 private boolean more = false; 61 62 63 public WeblogEntriesDayPager( 64 WebsiteData weblog, 65 String locale, 66 String pageLink, 67 String entryAnchor, 68 String dateString, 69 String catPath, 70 int page) { 71 72 super(weblog, locale, pageLink, entryAnchor, dateString, catPath, page); 73 74 getEntries(); 75 76 day = parseDate(dateString); 77 78 Calendar cal = Calendar.getInstance(); 79 80 cal.setTime(day); 81 cal.add(Calendar.DAY_OF_MONTH, 1); 82 cal.set(Calendar.HOUR, 0); 83 cal.set(Calendar.MINUTE, 0); 84 cal.set(Calendar.SECOND, 0); 85 nextDay = cal.getTime(); 86 if (nextDay.after(getToday())) { 87 nextDay = null; 88 } 89 90 cal.setTime(day); 91 cal.add(Calendar.DAY_OF_MONTH, -1); 92 cal.set(Calendar.HOUR, 23); 93 cal.set(Calendar.MINUTE, 59); 94 cal.set(Calendar.SECOND, 59); 95 prevDay = cal.getTime(); 96 } 97 98 99 public Map getEntries() { 100 Date date = parseDate(dateString); 101 Calendar cal = Calendar.getInstance(weblog.getTimeZoneInstance()); 102 Date startDate = null; 103 Date endDate = date; 104 startDate = DateUtil.getStartOfDay(endDate, cal); 105 endDate = DateUtil.getEndOfDay(endDate, cal); 106 107 if (entries == null) { 108 entries = new TreeMap (new ReverseComparator()); 109 try { 110 Roller roller = RollerFactory.getRoller(); 111 WeblogManager wmgr = roller.getWeblogManager(); 112 Map mmap = RollerFactory.getRoller().getWeblogManager().getWeblogEntryObjectMap( 113 weblog, 114 startDate, 115 endDate, 116 catPath, 117 WeblogEntryData.PUBLISHED, 118 locale, 119 offset, 120 length + 1); 121 122 int count = 0; 124 Date key = null; 125 Iterator days = mmap.keySet().iterator(); 126 while(days.hasNext()) { 127 key = (Date ) days.next(); 128 129 List wrapped = new ArrayList (); 131 List unwrapped = (List ) mmap.get(key); 132 for(int i=0; i < unwrapped.size(); i++) { 133 if (count++ < length) { 134 wrapped.add(i, 135 WeblogEntryDataWrapper.wrap((WeblogEntryData)unwrapped.get(i))); 136 } else { 137 more = true; 138 } 139 } 140 141 if(wrapped.size() > 0) { 143 entries.put(key, wrapped); 144 } 145 } 146 147 148 } catch (Exception e) { 149 log.error("ERROR: getting entry month map", e); 150 } 151 } 152 return entries; 153 } 154 155 156 public String getHomeLink() { 157 return createURL(0, 0, weblog, locale, pageLink, null, null, catPath); 158 } 159 160 161 public String getHomeName() { 162 return MessageUtilities.getString("weblogEntriesPager.day.home"); 163 } 164 165 166 public String getNextLink() { 167 if (more) { 168 return createURL(page, 1, weblog, locale, pageLink, null, dateString, catPath); 169 } 170 return null; 171 } 172 173 174 public String getNextName() { 175 if (getNextLink() != null) { 176 return MessageUtilities.getString("weblogEntriesPager.day.next", new Object [] {dayFormat.format(day)}); 177 } 178 return null; 179 } 180 181 182 public String getPrevLink() { 183 if (page > 0) { 184 return createURL(page, -1, weblog, locale, pageLink, null, dateString, catPath); 185 } 186 return null; 187 } 188 189 190 public String getPrevName() { 191 if (getPrevLink() != null) { 192 return MessageUtilities.getString("weblogEntriesPager.day.prev", new Object [] {dayFormat.format(day)}); 193 } 194 return null; 195 } 196 197 198 public String getNextCollectionLink() { 199 if (nextDay != null) { 200 String next = DateUtil.format8chars(nextDay); 201 return createURL(0, 0, weblog, locale, pageLink, null, next, catPath); 202 } 203 return null; 204 } 205 206 207 public String getNextCollectionName() { 208 if (nextDay != null) { 209 return MessageUtilities.getString("weblogEntriesPager.day.nextCollection", new Object [] {dayFormat.format(nextDay)}); 210 } 211 return null; 212 } 213 214 215 public String getPrevCollectionLink() { 216 if (prevDay != null) { 217 String prev = DateUtil.format8chars(prevDay); 218 return createURL(0, 0, weblog, locale, pageLink, null, prev, catPath); 219 } 220 return null; 221 } 222 223 224 public String getPrevCollectionName() { 225 if (prevDay != null) { 226 return MessageUtilities.getString("weblogEntriesPager.day.prevCollection", new Object [] {dayFormat.format(prevDay)}); 227 } 228 return null; 229 } 230 231 } 232 | Popular Tags |