KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > opensymphony > webwork > util > AppendIteratorFilter


1 /*
2  * Copyright (c) 2002-2003 by OpenSymphony
3  * All rights reserved.
4  */

5 package com.opensymphony.webwork.util;
6
7 import com.opensymphony.xwork.Action;
8
9 import java.util.ArrayList JavaDoc;
10 import java.util.Iterator JavaDoc;
11 import java.util.List JavaDoc;
12
13
14 /**
15  * A bean that takes several iterators and outputs them in sequence
16  *
17  * @author Rickard Öberg (rickard@middleware-company.com)
18  * @version $Revision: 1.4 $
19  * @see <related>
20  */

21 public class AppendIteratorFilter extends IteratorFilterSupport implements Iterator JavaDoc, Action {
22     //~ Instance fields ////////////////////////////////////////////////////////
23

24     List JavaDoc iterators = new ArrayList JavaDoc();
25
26     // Attributes ----------------------------------------------------
27
List JavaDoc sources = new ArrayList JavaDoc();
28
29     //~ Methods ////////////////////////////////////////////////////////////////
30

31     // Public --------------------------------------------------------
32
public void setSource(Object JavaDoc anIterator) {
33         sources.add(anIterator);
34     }
35
36     // Action implementation -----------------------------------------
37
public String JavaDoc execute() {
38         // Make source transformations
39
for (int i = 0; i < sources.size(); i++) {
40             Object JavaDoc source = sources.get(i);
41             iterators.add(getIterator(source));
42         }
43
44         return SUCCESS;
45     }
46
47     // Iterator implementation ---------------------------------------
48
public boolean hasNext() {
49         if (iterators.size() > 0) {
50             return (((Iterator JavaDoc) iterators.get(0)).hasNext());
51         } else {
52             return false;
53         }
54     }
55
56     public Object JavaDoc next() {
57         try {
58             return ((Iterator JavaDoc) iterators.get(0)).next();
59         } finally {
60             if (iterators.size() > 0) {
61                 if (!((Iterator JavaDoc) iterators.get(0)).hasNext()) {
62                     iterators.remove(0);
63                 }
64             }
65         }
66     }
67
68     public void remove() {
69         throw new UnsupportedOperationException JavaDoc();
70     }
71 }
72
Popular Tags