1 15 16 package com.jdon.controller.model; 17 18 import java.util.*; 19 import java.io.Serializable ; 20 21 41 public class PageIterator implements Iterator, Serializable , Cloneable { 42 43 public final static Object [] EMPTY = new Object [0]; 44 45 48 private int allCount = 0; 49 50 58 private Object [] elements = EMPTY; 59 60 63 private int currentIndex = -1; 64 65 68 private Object nextElement = null; 69 70 73 private Object previousElement = null; 74 75 78 private int startIndex = -1; 79 80 83 private int endIndex = -1; 84 85 88 private int count = 0; 89 90 94 private boolean elementsTypeIsKey = true; 95 96 97 109 public PageIterator(int allCount, Object [] keys, int startIndex, int endIndex, int count) { 110 this.allCount = allCount; 111 this.elements = keys; 112 if (startIndex >= 0) { 113 this.startIndex = startIndex; 114 this.currentIndex = startIndex - 1; 115 } 116 this.endIndex = endIndex; 117 this.count = count; 118 } 119 120 121 129 public PageIterator(int allCount, Object [] keys) { 130 this.allCount = allCount; 131 this.elements = keys; 132 this.endIndex = keys.length; 133 } 134 135 143 public PageIterator(int allCount, Object [] keys, int startIndex, boolean hasNextPage) { 144 this(allCount, keys); 145 } 146 147 153 public PageIterator(Object [] keys, int startIndex, boolean hasNextPage) { 154 this(0, keys); 155 } 156 157 162 public PageIterator() { 163 164 } 165 166 167 public int getAllCount() { 168 return allCount; 169 } 170 171 public void setAllCount(int allCount) { 172 this.allCount = allCount; 173 } 174 175 179 public void reset() { 180 elements = EMPTY; 181 currentIndex = -1; 182 startIndex = -1; 183 endIndex = -1; 184 nextElement = null; 185 previousElement = null; 186 count = 0; 187 allCount = 0; 188 189 } 190 191 public void setIndex(int index){ 192 if((index >= startIndex) || (index < endIndex)) 193 currentIndex = index; 194 else 195 System.err.println("PageIterator error: setIndex error: index=" + index + " exceed the 0 or Max length=" + elements.length); 196 197 } 198 199 204 public boolean hasNext() { 205 if (currentIndex == endIndex) { 206 return false; 207 } 208 209 if (nextElement == null) { 212 nextElement = getNextElement(); 213 if (nextElement == null) { 214 return false; 215 } 216 } 217 return true; 218 } 219 220 227 public Object next() throws java.util.NoSuchElementException { 228 Object element = null; 229 if (nextElement != null) { 230 element = nextElement; 231 nextElement = null; 232 } else { 233 element = getNextElement(); 234 if (element == null) { 235 throw new java.util.NoSuchElementException (); 236 } 237 } 238 return element; 239 } 240 241 246 public boolean hasPrevious() { 247 if (currentIndex == startIndex) { 249 return false; 250 } 251 if (previousElement == null) { 254 previousElement = getPreviousElement(); 255 if (previousElement == null) { 257 return false; 258 } 259 } 260 return true; 261 } 262 263 268 public Object previous() { 269 Object element = null; 270 if (previousElement != null) { 271 element = previousElement; 272 previousElement = null; 273 } else { 274 element = getPreviousElement(); 275 if (element == null) { 276 throw new java.util.NoSuchElementException (); 277 } 278 } 279 return element; 280 } 281 282 288 private Object getPreviousElement() { 289 Object element = null; 290 while (currentIndex >= startIndex && element == null) { 291 currentIndex--; 292 element = getElement(); 293 } 294 return element; 295 } 296 297 300 public void remove() throws UnsupportedOperationException { 301 throw new UnsupportedOperationException (); 302 } 303 304 310 public Object getNextElement() { 311 Object element = null; 312 while (currentIndex+1 < endIndex && element == null) { 313 currentIndex++; 314 element = getElement(); 315 } 316 return element; 317 } 318 319 private Object getElement(){ 320 Object element = null; 321 if ((currentIndex >=0 ) && (currentIndex < elements.length)){ 322 element = elements[currentIndex]; 323 }else 324 System.err.println("PageIterator error: currentIndex=" + currentIndex + " exceed the 0 or Max length=" + elements.length); 325 return element; 326 } 327 328 public int getSize() { 329 return elements.length; 330 } 331 332 335 public Object [] getKeys() { 336 return elements; 337 } 338 339 342 public void setKeys(Object [] keys) { 343 this.elements = keys; 344 } 345 346 347 350 public int getCount() { 351 return count; 352 } 353 354 355 356 public boolean isElementsTypeIsKey() { 357 return elementsTypeIsKey; 358 } 359 360 361 public void setElementsTypeIsKey(boolean elementsTypeIsKey) { 362 this.elementsTypeIsKey = elementsTypeIsKey; 363 } 364 365 366 367 } 368 | Popular Tags |