| 1 21 package com.db4o.foundation; 22 23 26 public abstract class MappingIterator implements Iterator4 { 27 28 private final Iterator4 _iterator; 29 30 private Object _current; 31 32 public static final Object SKIP = new Object (); 33 34 public MappingIterator(Iterator4 iterator) { 35 if (null == iterator) { 36 throw new ArgumentNullException(); 37 } 38 _iterator = iterator; 39 _current = Iterators.NO_ELEMENT; 40 } 41 42 protected abstract Object map(final Object current); 43 44 public boolean moveNext() { 45 do { 46 if (!_iterator.moveNext()) { 47 _current = Iterators.NO_ELEMENT; 48 return false; 49 } 50 _current = map(_iterator.current()); 51 } while(_current == SKIP); 52 return true; 53 } 54 55 public void reset() { 56 _current = Iterators.NO_ELEMENT; 57 _iterator.reset(); 58 } 59 60 public Object current() { 61 if (Iterators.NO_ELEMENT == _current) { 62 throw new IllegalStateException (); 63 } 64 return _current; 65 } 66 } | Popular Tags |