1 18 19 package org.apache.roller.ui.rendering.pagers; 20 21 import java.util.ArrayList ; 22 import java.util.HashMap ; 23 import java.util.Iterator ; 24 import java.util.List ; 25 import java.util.Map ; 26 import org.apache.commons.logging.Log; 27 import org.apache.commons.logging.LogFactory; 28 import org.apache.roller.model.Roller; 29 import org.apache.roller.model.RollerFactory; 30 import org.apache.roller.model.UserManager; 31 import org.apache.roller.pojos.UserData; 32 import org.apache.roller.pojos.wrapper.UserDataWrapper; 33 34 35 38 public class UsersPager extends AbstractPager { 39 40 private static Log log = LogFactory.getLog(UsersPager.class); 41 42 private String letter = null; 43 private String locale = null; 44 private int sinceDays = -1; 45 private int length = 0; 46 47 private List users; 49 50 private boolean more = false; 52 53 54 public UsersPager( 55 String baseUrl, 56 String locale, 57 int sinceDays, 58 int page, 59 int length) { 60 61 super(baseUrl, page); 62 63 this.locale = locale; 64 this.sinceDays = sinceDays; 65 this.length = length; 66 67 getItems(); 69 } 70 71 72 public UsersPager( 73 String baseUrl, 74 String letter, 75 String locale, 76 int sinceDays, 77 int page, 78 int length) { 79 80 super(baseUrl, page); 81 82 this.letter = letter; 83 this.locale = locale; 84 this.sinceDays = sinceDays; 85 this.length = length; 86 87 getItems(); 89 } 90 91 92 public String getNextLink() { 93 if(letter != null) { 95 int page = getPage() + 1; 96 if(hasMoreItems()) { 97 Map params = new HashMap (); 98 params.put("page", ""+page); 99 params.put("letter", letter); 100 return createURL(getUrl(), params); 101 } 102 return null; 103 } else { 104 return super.getNextLink(); 105 } 106 } 107 108 109 public String getPrevLink() { 110 if(letter != null) { 112 int page = getPage() - 1; 113 if (page >= 0) { 114 Map params = new HashMap (); 115 params.put("page", ""+page); 116 params.put("letter", letter); 117 return createURL(getUrl(), params); 118 } 119 return null; 120 } else { 121 return super.getPrevLink(); 122 } 123 } 124 125 126 public List getItems() { 127 128 if (users == null) { 129 int offset = getPage() * length; 131 132 List results = new ArrayList (); 133 try { 134 Roller roller = RollerFactory.getRoller(); 135 UserManager umgr = roller.getUserManager(); 136 List rawUsers = null; 137 if (letter == null) { 138 rawUsers = umgr.getUsers(offset, length + 1); 139 } else { 140 rawUsers = umgr.getUsersByLetter(letter.charAt(0), offset, length + 1); 141 } 142 143 if(rawUsers.size() > length) { 145 more = true; 146 rawUsers.remove(rawUsers.size() - 1); 147 } 148 149 for (Iterator it = rawUsers.iterator(); it.hasNext();) { 151 UserData user = (UserData) it.next(); 152 results.add(UserDataWrapper.wrap(user)); 153 } 154 155 } catch (Exception e) { 156 log.error("ERROR: fetching user list", e); 157 } 158 159 users = results; 160 } 161 162 return users; 163 } 164 165 166 public boolean hasMoreItems() { 167 return more; 168 } 169 170 } 171 | Popular Tags |