1 18 19 package org.apache.roller.ui.rendering.pagers; 20 21 import java.util.ArrayList ; 22 import java.util.Calendar ; 23 import java.util.Date ; 24 import java.util.Iterator ; 25 import java.util.List ; 26 import org.apache.commons.logging.Log; 27 import org.apache.commons.logging.LogFactory; 28 import org.apache.roller.model.PlanetManager; 29 import org.apache.roller.model.Roller; 30 import org.apache.roller.model.RollerFactory; 31 import org.apache.roller.pojos.PlanetEntryData; 32 import org.apache.roller.pojos.PlanetGroupData; 33 import org.apache.roller.pojos.Template; 34 import org.apache.roller.pojos.WebsiteData; 35 import org.apache.roller.pojos.wrapper.PlanetEntryDataWrapper; 36 37 38 41 public class PlanetEntriesPager extends AbstractPager { 42 43 private static Log log = LogFactory.getLog(PlanetEntriesPager.class); 44 45 private String feedURL = null; 46 private String groupHandle = null; 47 private String locale = null; 48 private int sinceDays = -1; 49 private int length = 0; 50 51 private List entries = null; 53 54 private boolean more = false; 56 57 58 public PlanetEntriesPager( 59 String feedURL, 60 String groupHandle, 61 String baseUrl, 62 String locale, 63 int sinceDays, 64 int page, 65 int length) { 66 67 super(baseUrl, page); 68 69 this.feedURL = feedURL; 70 this.groupHandle = groupHandle; 71 this.locale = locale; 72 this.sinceDays = sinceDays; 73 this.length = length; 74 75 getItems(); 77 } 78 79 80 public List getItems() { 81 82 if (entries == null) { 83 int offset = getPage() * length; 85 86 Calendar cal = Calendar.getInstance(); 87 cal.setTime(new Date ()); 88 cal.add(Calendar.DATE, -1 * sinceDays); 89 Date startDate = cal.getTime(); 90 91 List results = new ArrayList (); 92 try { 93 Roller roller = RollerFactory.getRoller(); 94 PlanetManager planetManager = roller.getPlanetManager(); 95 96 List rawEntries = null; 97 if (feedURL != null) { 98 rawEntries = planetManager.getFeedEntries(feedURL, offset, length+1); 99 } else if (groupHandle != null) { 100 PlanetGroupData group = planetManager.getGroup(groupHandle); 101 rawEntries = planetManager.getAggregation(group, startDate, null, offset, length+1); 102 } else { 103 rawEntries = planetManager.getAggregation(startDate, null, offset, length+1); 104 } 105 106 if(rawEntries.size() > length) { 108 more = true; 109 rawEntries.remove(rawEntries.size() - 1); 110 } 111 112 for (Iterator it = rawEntries.iterator(); it.hasNext();) { 114 PlanetEntryData entry = (PlanetEntryData) it.next(); 115 results.add(PlanetEntryDataWrapper.wrap(entry)); 116 } 117 118 } catch (Exception e) { 119 log.error("ERROR: get aggregation", e); 120 } 121 122 entries = results; 123 } 124 125 return entries; 126 } 127 128 129 public boolean hasMoreItems() { 130 return more; 131 } 132 133 } 134 | Popular Tags |