1 29 package net.sourceforge.groboutils.mbtf.v1.engine; 30 31 32 import java.util.Enumeration ; 33 import java.util.NoSuchElementException ; 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 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 ( 73 "no nulls allowed in ITransition array"); 74 } 75 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 nextElement() 91 { 92 return nextTransition(); 93 } 94 95 96 99 public boolean hasNext() 100 { 101 return (this.index < trans.length); 102 } 103 104 105 110 public synchronized ITransition nextTransition() 111 { 112 if (!hasMoreElements()) 113 { 114 throw new NoSuchElementException ("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 |