KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mmbase > util > ChainedIterator


1 /*
2
3 This software is OSI Certified Open Source Software.
4 OSI Certified is a certification mark of the Open Source Initiative.
5
6 The license (Mozilla version 1.0) can be read at the MMBase site.
7 See http://www.MMBase.org/license
8
9 */

10
11 package org.mmbase.util;
12
13 import java.util.*;
14
15 /**
16  * Like org.apache.commons.collections.iterators.IteratorChain, to avoid the dependency....
17  *
18  * @author Michiel Meeuwissen
19  * @since MMBase-1.8
20  * @version $Id: ChainedIterator.java,v 1.2 2005/11/04 23:30:01 michiel Exp $
21  */

22 public class ChainedIterator implements Iterator {
23
24     List iterators = new ArrayList();
25     Iterator iteratorIterator = null;
26     Iterator iterator = null;
27     public ChainedIterator() {
28     }
29
30     public void addIterator(Iterator i) {
31         if (iteratorIterator != null) throw new IllegalStateException JavaDoc();
32         iterators.add(i);
33     }
34
35
36     private void setIterator() {
37        while(iteratorIterator.hasNext() && iterator == null) {
38            iterator = (Iterator) iteratorIterator.next();
39            if (! iterator.hasNext()) iterator = null;
40        }
41     }
42     private void start() {
43         if (iteratorIterator == null) {
44             iteratorIterator = iterators.iterator();
45             setIterator();
46         }
47     }
48
49     public boolean hasNext() {
50         start();
51         return (iterator != null && iterator.hasNext());
52         
53     }
54
55     public Object JavaDoc next() {
56         start();
57         if (iterator == null) throw new NoSuchElementException();
58         Object JavaDoc res = iterator.next();
59         if (! iterator.hasNext()) {
60             iterator = null;
61             setIterator();
62         }
63         return res;
64         
65     }
66     public void remove() {
67         throw new UnsupportedOperationException JavaDoc();
68     }
69
70     /**
71      * Just testing
72      */

73     public static void main(String JavaDoc argv[]) {
74         ChainedIterator it = new ChainedIterator();
75         List o = new ArrayList();
76         List a = new ArrayList();
77         a.add("a");
78         a.add("b");
79         List b = new ArrayList();
80         List c = new ArrayList();
81         c.add("c");
82         c.add("d");
83         List d = new ArrayList();
84         it.addIterator(o.iterator());
85         it.addIterator(a.iterator());
86         it.addIterator(b.iterator());
87         it.addIterator(c.iterator());
88         it.addIterator(d.iterator());
89         while (it.hasNext()) {
90             System.out.println("" + it.next());
91         }
92     }
93
94
95 }
96
Popular Tags