merge of localization branch into HEAD. mh and zap
[mir.git] / source / mir / util / CachingRewindableIterator.java
1 package mir.util;
2
3 import java.util.*;
4
5 import java.util.*;
6 import mir.storage.*;
7 import mir.util.*;
8 import mir.entity.*;
9
10 public class CachingRewindableIterator implements RewindableIterator {
11   private Iterator master;
12   private List cachedItems;
13   private int iterationPosition;
14
15   public CachingRewindableIterator(Iterator anIterator) {
16     master = anIterator;
17     cachedItems = new Vector();
18     iterationPosition = 0;
19   }
20
21   public boolean hasNext() {
22     return iterationPosition<cachedItems.size() || master.hasNext();
23   }
24
25   public Object next() {
26     Object result;
27
28     if (iterationPosition>=cachedItems.size()) {
29       cachedItems.add(master.next());
30     }
31
32     result = cachedItems.get(iterationPosition);
33     iterationPosition++;
34
35     return result;
36   }
37
38   public void remove() {
39     throw new UnsupportedOperationException();
40   }
41
42   public void rewind() {
43     iterationPosition=0;
44   };
45 }