1 16 package org.springframework.binding.collection; 17 18 import java.util.Iterator ; 19 import java.util.LinkedList ; 20 import java.util.List ; 21 import java.util.NoSuchElementException ; 22 23 import org.springframework.util.Assert; 24 25 32 public class CompositeIterator implements Iterator { 33 34 private List iterators = new LinkedList (); 35 36 private boolean inUse = false; 37 38 41 public CompositeIterator() { 42 } 43 44 47 public void add(Iterator iterator) { 48 Assert.state(!inUse, "You can no longer add iterator to a composite iterator that's already in use"); 49 if (iterators.contains(iterator)) { 50 throw new IllegalArgumentException ("You cannot add the same iterator twice"); 51 } 52 iterators.add(iterator); 53 } 54 55 public boolean hasNext() { 56 inUse = true; 57 for (Iterator it = iterators.iterator(); it.hasNext(); ) { 58 if (((Iterator )it.next()).hasNext()) { 59 return true; 60 } 61 } 62 return false; 63 } 64 65 public Object next() { 66 inUse = true; 67 for (Iterator it = iterators.iterator(); it.hasNext(); ) { 68 Iterator iterator = (Iterator )it.next(); 69 if (iterator.hasNext()) { 70 return iterator.next(); 71 } 72 } 73 throw new NoSuchElementException ("Exhaused all iterators"); 74 } 75 76 public void remove() { 77 throw new UnsupportedOperationException ("Remove is not supported"); 78 } 79 } | Popular Tags |