1 21 package com.db4o.foundation; 22 23 24 public class CompositeIterator4 implements Iterator4 { 25 26 private final Iterator4 _iterators; 27 28 private Iterator4 _currentIterator; 29 30 public CompositeIterator4(Iterator4[] iterators) { 31 this(new ArrayIterator4(iterators)); 32 } 33 34 public CompositeIterator4(Iterator4 iterators) { 35 if (null == iterators) { 36 throw new ArgumentNullException(); 37 } 38 _iterators = iterators; 39 } 40 41 public boolean moveNext() { 42 if (null == _currentIterator) { 43 if (!_iterators.moveNext()) { 44 return false; 45 } 46 _currentIterator = nextIterator(_iterators.current()); 47 } 48 if (!_currentIterator.moveNext()) { 49 _currentIterator = null; 50 return moveNext(); 51 } 52 return true; 53 } 54 55 public void reset() { 56 resetIterators(); 57 _currentIterator = null; 58 _iterators.reset(); 59 } 60 61 private void resetIterators() { 62 _iterators.reset(); 63 while (_iterators.moveNext()) { 64 nextIterator(_iterators.current()).reset(); 65 } 66 } 67 68 public Iterator4 currentIterator() { 69 return _currentIterator; 70 } 71 72 public Object current() { 73 return _currentIterator.current(); 74 } 75 76 protected Iterator4 nextIterator(final Object current) { 77 return (Iterator4)current; 78 } 79 } | Popular Tags |