1 18 package org.apache.beehive.netui.databinding.datagrid.api.pager; 19 20 import org.apache.beehive.netui.util.Bundle; 21 22 51 public class PagerModel 52 implements java.io.Serializable { 53 54 public static final int DEFAULT_PAGE_SIZE = 10; 55 public static final int DEFAULT_ROW = 0; 56 57 private String _pageHref = null; 58 private String _pageAction = null; 59 private Integer _currentRow = null; 60 private Integer _dataSetSize = null; 61 private Integer _explicitPageSize = null; 62 private Integer _defaultPageSize = null; 63 64 67 public PagerModel() { 68 _currentRow = new Integer (DEFAULT_ROW); 69 } 70 71 75 public String getPageAction() { 76 return _pageAction; 77 } 78 79 83 public void setPageAction(String pageAction) { 84 _pageAction = pageAction; 85 } 86 87 91 public String getPageHref() { 92 return _pageHref; 93 } 94 95 99 public void setPageHref(String pageHref) { 100 _pageHref = pageHref; 101 } 102 103 108 public int getDefaultPageSize() { 109 if(_defaultPageSize != null) 110 return _defaultPageSize.intValue(); 111 else return DEFAULT_PAGE_SIZE; 112 } 113 114 122 public void setDefaultPageSize(int pageSize) { 123 if(pageSize < 1) 124 throw new IllegalArgumentException (Bundle.getErrorString("PagerModel_IllegalDefaultPageSize")); 125 126 _defaultPageSize = new Integer (pageSize); 127 } 128 129 136 public int getDataSetSize() { 137 if(_dataSetSize == null) 138 return 0; 139 else return _dataSetSize.intValue(); 140 } 141 142 146 public void setDataSetSize(int dataSetSize) { 147 _dataSetSize = new Integer (dataSetSize); 148 } 149 150 154 public int getPageSize() { 155 return _explicitPageSize != null ? _explicitPageSize.intValue() : getDefaultPageSize(); 156 } 157 158 162 public void setPageSize(int pageSize) { 163 if(pageSize < 1) 164 throw new IllegalArgumentException (Bundle.getErrorString("PagerModel_IllegalPageSize")); 165 166 _explicitPageSize = new Integer (pageSize); 167 } 168 169 174 public int getPage() { 175 int row = getRow(); 176 assert row % getPageSize() == 0 : "Invalid current row \"" + row + "\" for page size \"" + getPageSize() + "\""; 177 assert getPageSize() > 0; 178 return row / getPageSize(); 179 } 180 181 187 public void setPage(int page) { 188 if(page < 0) 189 throw new IllegalArgumentException (Bundle.getErrorString("PagerModel_IllegalPage")); 190 191 192 _currentRow = new Integer (page * getPageSize()); 193 } 194 195 199 public int getRow() { 200 if(_currentRow != null) { 201 int row = _currentRow.intValue(); 202 203 204 if(_dataSetSize != null && (row > _dataSetSize.intValue())) 205 row = _dataSetSize.intValue(); 206 207 if(row % getPageSize() != 0) { 208 int adjustedPage = row - (row % getPageSize()); 209 return adjustedPage; 210 } 211 else return row; 212 } 213 else return DEFAULT_ROW; 214 } 215 216 221 public void setRow(int row) { 222 if(row < 0) 223 throw new IllegalArgumentException (Bundle.getErrorString("PagerModel_IllegalRow")); 224 225 _currentRow = new Integer (row); 226 } 227 228 241 public int getLastRowForPage() { 242 int row = getRow(); 243 if(_dataSetSize != null) { 244 if(_dataSetSize.intValue() - row < getPageSize()) 245 return row + (_dataSetSize.intValue() - row) - 1; 246 else return row + getPageSize() - 1; 247 } 248 else return row + getPageSize() - 1; 249 } 250 251 255 public int getRowForFirstPage() { 256 return DEFAULT_ROW; 257 } 258 259 264 public int getRowForPreviousPage() { 265 int value = getRow() - getPageSize(); 266 return value > -1 ? value : -1; 267 } 268 269 274 public int getRowForNextPage() { 275 return getRow() + getPageSize(); 276 } 277 278 283 public int getRowForLastPage() { 284 Integer lastRow = internalGetLastRow(); 285 if(lastRow != null) 286 return lastRow.intValue(); 287 else throw new IllegalStateException (Bundle.getErrorString("PagerModel_CantCalculateLastPage")); 288 } 289 290 296 public int encodeRowForPage(int page) { 297 if(page < 0) 298 throw new IllegalArgumentException (Bundle.getErrorString("PagerModel_IllegalPage")); 299 300 return page * getPageSize(); 301 } 302 303 314 public int getPageCount() { 315 if(_dataSetSize != null) 316 return (int)Math.ceil(_dataSetSize.doubleValue()/(double)getPageSize()); 317 else throw new IllegalStateException (Bundle.getErrorString("PagerModel_CantCalculateLastPage")); 318 } 319 320 324 public int getFirstPage() { 325 return 0; 326 } 327 328 332 public int getPreviousPage() { 333 int previousPageRow = getRowForPreviousPage(); 334 return previousPageRow == -1 ? previousPageRow : (int)(previousPageRow / getPageSize()); 335 } 336 337 341 public int getNextPage() { 342 return (int)(getRowForNextPage() / getPageSize()); 343 } 344 345 349 public int getLastPage() { 350 return (int)(Math.floor(getRowForLastPage() / getPageSize())); 351 } 352 353 357 private Integer internalGetLastRow() { 358 if(_dataSetSize != null) { 359 373 int lastRow = getPageSize() * (int)Math.floor((double)(_dataSetSize.intValue()-1) / (double)getPageSize()); 374 return new Integer (lastRow); 375 } 376 else return null; 377 } 378 } 379 | Popular Tags |