1 /*
2 * Scope: a generic MVC framework.
3 * Copyright (c) 2000-2002, The Scope team
4 * All rights reserved.
5 *
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 * Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 *
14 * Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in the
16 * documentation and/or other materials provided with the distribution.
17 *
18 * Neither the name "Scope" nor the names of its contributors
19 * may be used to endorse or promote products derived from this software
20 * without specific prior written permission.
21 *
22 *
23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
26 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
27 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
28 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
29 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
31 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 *
35 *
36 * $Id: CompoundSelectorIterator.java,v 1.5 2002/09/05 15:41:46 ludovicc Exp $
37 */
38 package org.scopemvc.model.util;
39
40
41 import java.util.Iterator;
42 import java.util.NoSuchElementException;
43 import org.scopemvc.util.Debug;
44
45 /***
46 * <P>
47 *
48 * An Iterator that iterates through the iterations of two child Iterators in
49 * sequence. </P>
50 *
51 * @author <A HREF="mailto:smeyfroi@users.sourceforge.net">Steve Meyfroidt</A>
52 * @created 05 September 2002
53 * @version $Revision: 1.5 $ $Date: 2002/09/05 15:41:46 $
54 */
55 public final class CompoundSelectorIterator implements Iterator {
56
57 // The rest of the class handles arrays longer than 2 if this is ever needed.
58 private Iterator[] iterators = new Iterator[2];
59
60 private int currentIndex = -1;
61
62
63 /***
64 * Constructor for the CompoundSelectorIterator object
65 *
66 * @param inIterator1 TODO: Describe the Parameter
67 * @param inIterator2 TODO: Describe the Parameter
68 */
69 public CompoundSelectorIterator(Iterator inIterator1, Iterator inIterator2) {
70 if (inIterator1 == null || inIterator2 == null) {
71 throw new IllegalArgumentException("Create CompoundSelectorIterator with two non-null iterators.");
72 }
73
74 iterators[0] = inIterator1;
75 iterators[1] = inIterator2;
76 currentIndex = 0;
77 }
78
79
80 /***
81 * TODO: document the method
82 *
83 * @return TODO: Describe the Return Value
84 */
85 public boolean hasNext() {
86 if (Debug.ON) {
87 Debug.assertTrue(currentIndex > -1);
88 }
89
90 if (iterators[currentIndex].hasNext()) {
91 return true;
92 }
93
94 return (currentIndex < iterators.length - 1 && iterators[currentIndex + 1].hasNext());
95 }
96
97
98 /***
99 * TODO: document the method
100 *
101 * @return TODO: Describe the Return Value
102 */
103 public Object next() {
104 if (Debug.ON) {
105 Debug.assertTrue(iterators != null, "null iterators");
106 }
107 if (!(currentIndex > -1 && currentIndex < iterators.length)) {
108 throw new NoSuchElementException("Iterator past end of Selector list.");
109 }
110
111 if (iterators[currentIndex].hasNext()) {
112 return iterators[currentIndex].next();
113 }
114
115 ++currentIndex;
116 if (currentIndex >= iterators.length) {
117 throw new NoSuchElementException("Iterator past end of Selector list.");
118 }
119 return iterators[currentIndex].next();
120 }
121
122
123 /***
124 * TODO: document the method
125 */
126 public void remove() {
127 throw new UnsupportedOperationException("Can't remove Selectors from a model.");
128 }
129 }
130
This page was automatically generated by Maven