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.HashMap ; 25 import java.util.Iterator ; 26 import java.util.List ; 27 import java.util.Map ; 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.UserManager; 33 import org.apache.roller.pojos.WebsiteData; 34 import org.apache.roller.pojos.wrapper.WebsiteDataWrapper; 35 36 37 40 public class WeblogsPager extends AbstractPager { 41 42 private static Log log = LogFactory.getLog(WeblogsPager.class); 43 44 private String letter = null; 45 private String locale = null; 46 private int sinceDays = -1; 47 private int length = 0; 48 49 private List weblogs; 51 52 private boolean more = false; 54 55 56 public WeblogsPager( 57 String baseUrl, 58 String locale, 59 int sinceDays, 60 int page, 61 int length) { 62 63 super(baseUrl, page); 64 65 this.locale = locale; 66 this.sinceDays = sinceDays; 67 this.length = length; 68 69 getItems(); 71 } 72 73 74 public WeblogsPager( 75 String baseUrl, 76 String letter, 77 String locale, 78 int sinceDays, 79 int page, 80 int length) { 81 82 super(baseUrl, page); 83 84 this.letter = letter; 85 this.locale = locale; 86 this.sinceDays = sinceDays; 87 this.length = length; 88 89 getItems(); 91 } 92 93 94 public String getNextLink() { 95 if(letter != null) { 97 int page = getPage() + 1; 98 if(hasMoreItems()) { 99 Map params = new HashMap (); 100 params.put("page", ""+page); 101 params.put("letter", letter); 102 return createURL(getUrl(), params); 103 } 104 return null; 105 } else { 106 return super.getNextLink(); 107 } 108 } 109 110 111 public String getPrevLink() { 112 if(letter != null) { 114 int page = getPage() - 1; 115 if (page >= 0) { 116 Map params = new HashMap (); 117 params.put("page", ""+page); 118 params.put("letter", letter); 119 return createURL(getUrl(), params); 120 } 121 return null; 122 } else { 123 return super.getPrevLink(); 124 } 125 } 126 127 128 public List getItems() { 129 130 if (weblogs == null) { 131 int offset = getPage() * length; 133 134 List results = new ArrayList (); 135 Date startDate = null; 136 if (sinceDays != -1) { 137 Calendar cal = Calendar.getInstance(); 138 cal.setTime(new Date ()); 139 cal.add(Calendar.DATE, -1 * sinceDays); 140 startDate = cal.getTime(); 141 } 142 try { 143 Roller roller = RollerFactory.getRoller(); 144 UserManager umgr = roller.getUserManager(); 145 List weblogs = null; 146 if (letter == null) { 147 weblogs = umgr.getWebsites(null, Boolean.TRUE, Boolean.TRUE, startDate, null, offset, length + 1); 148 } else { 149 weblogs = umgr.getWeblogsByLetter(letter.charAt(0), offset, length + 1); 150 } 151 152 if(weblogs.size() > length) { 154 more = true; 155 weblogs.remove(weblogs.size() - 1); 156 } 157 158 for (Iterator it = weblogs.iterator(); it.hasNext();) { 160 WebsiteData website = (WebsiteData) it.next(); 161 results.add(WebsiteDataWrapper.wrap(website)); 162 } 163 164 } catch (Exception e) { 165 log.error("ERROR: fetching weblog list", e); 166 } 167 168 weblogs = results; 169 } 170 171 return weblogs; 172 } 173 174 175 public boolean hasMoreItems() { 176 return more; 177 } 178 179 } 180 | Popular Tags |