KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sourceforge > groboutils > mbtf > v1 > engine > PathIteratorImpl


1 /*
2  * @(#)PathIteratorImpl.java
3  *
4  * Copyright (C) 2002-2003 Matt Albrecht
5  * groboclown@users.sourceforge.net
6  * http://groboutils.sourceforge.net
7  *
8  * Part of the GroboUtils package at:
9  * http://groboutils.sourceforge.net
10  *
11  * Permission is hereby granted, free of charge, to any person obtaining a
12  * copy of this software and associated documentation files (the "Software"),
13  * to deal in the Software without restriction, including without limitation
14  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
15  * and/or sell copies of the Software, and to permit persons to whom the
16  * Software is furnished to do so, subject to the following conditions:
17  *
18  * The above copyright notice and this permission notice shall be included in
19  * all copies or substantial portions of the Software.
20  *
21  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
24  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
26  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
27  * DEALINGS IN THE SOFTWARE.
28  */

29 package net.sourceforge.groboutils.mbtf.v1.engine;
30
31
32 import java.util.Enumeration JavaDoc;
33 import java.util.NoSuchElementException JavaDoc;
34
35 import net.sourceforge.groboutils.mbtf.v1.IPathIterator;
36 import net.sourceforge.groboutils.mbtf.v1.ITransition;
37
38 import org.apache.log4j.Logger;
39
40
41 /**
42  * An iterator to allow the tracing of the transitions through a state machine.
43  *
44  * @author Matt Albrecht <a HREF="mailto:groboclown@users.sourceforge.net">groboclown@users.sourceforge.net</a>
45  * @version $Date: 2003/02/10 22:52:26 $
46  * @since June 12, 2002
47  */

48 public class PathIteratorImpl implements IPathIterator
49 {
50     private static final Logger LOG = Logger.getLogger(
51         PathIteratorImpl.class );
52     
53     private int index = 0;
54     private ITransition[] trans;
55     
56     
57     public PathIteratorImpl( ITransition[] trans )
58     {
59         if (trans == null)
60         {
61             LOG.debug("no transitions");
62             this.trans = new ITransition[0];
63         }
64         else
65         {
66             int len = trans.length;
67             ITransition[] t = new ITransition[ len ];
68             for (int i = 0; i < len; ++i)
69             {
70                 if (trans[i] == null)
71                 {
72                     throw new IllegalArgumentException JavaDoc(
73                         "no nulls allowed in ITransition array");
74                 }
75                 // else
76
LOG.debug("transition "+i+"="+trans[i]);
77                 t[i] = trans[i];
78             }
79             this.trans = t;
80         }
81     }
82     
83     
84     public boolean hasMoreElements()
85     {
86         return hasNext();
87     }
88     
89     
90     public Object JavaDoc nextElement()
91     {
92         return nextTransition();
93     }
94     
95     
96     /**
97      * Performs same functionality as <tt>hasMoreElements()</tt>.
98      */

99     public boolean hasNext()
100     {
101         return (this.index < trans.length);
102     }
103     
104     
105     /**
106      * The same as <tt>nextElement()()</tt>, but without the required cast.
107      *
108      * @exception NoSuchElementException if the iterator is at the end.
109      */

110     public synchronized ITransition nextTransition()
111     {
112         if (!hasMoreElements())
113         {
114             throw new NoSuchElementException JavaDoc("end of list");
115         }
116         ITransition t = this.trans[ this.index ];
117         ++this.index;
118         LOG.debug("nextTranstion() = "+t);
119         return t;
120     }
121 }
122
123
Popular Tags