com.phoenixst.plexus.traversals

Class PreOrderTraverser

public class PreOrderTraverser extends Object implements PruningTraverser

A pre-order depth-first Traverser for a Graph, with no cycle detection. The first node returned is the start node, and no Edge is traversed to reach it. All of the caveats concerning the ordering of the operations hasNext(), next(), and remove() detailed by the Traverser class documentation apply here.

Since: 1.0

Version: $Revision: 1.6 $

Author: Ray A. Conner

Constructor Summary
PreOrderTraverser(Object startNode, Graph graph, Predicate traverserPredicate)
Creates a new PreOrderTraverser.
PreOrderTraverser(Object startNode, OrientedForest forest)
Creates a new PreOrderTraverser, which depth-first traverses the descendants of the specified startNode.
PreOrderTraverser(Object startNode, Transformer traverserFactory)
Creates a new PreOrderTraverser.
PreOrderTraverser(Object startNode, Graph graph, Transformer traverserFactory)
Creates a new PreOrderTraverser.
Method Summary
Graph.EdgegetEdge()
booleanhasNext()
Objectnext()
voidprune()
voidremove()
Removes from the underlying Graph the last node returned by PreOrderTraverser.
voidremoveEdge()
Removes from the underlying Graph the Edge that would be returned by getEdge().

Constructor Detail

PreOrderTraverser

public PreOrderTraverser(Object startNode, Graph graph, Predicate traverserPredicate)
Creates a new PreOrderTraverser.

PreOrderTraverser

public PreOrderTraverser(Object startNode, OrientedForest forest)
Creates a new PreOrderTraverser, which depth-first traverses the descendants of the specified startNode. The specified startNode cannot be removed by PreOrderTraverser when using this constructor.

PreOrderTraverser

public PreOrderTraverser(Object startNode, Transformer traverserFactory)
Creates a new PreOrderTraverser. The specified startNode cannot be removed by PreOrderTraverser when using this constructor.

PreOrderTraverser

public PreOrderTraverser(Object startNode, Graph graph, Transformer traverserFactory)
Creates a new PreOrderTraverser. If the graph argument is null, the specified startNode cannot be removed by PreOrderTraverser.

Method Detail

getEdge

public Graph.Edge getEdge()

hasNext

public boolean hasNext()

next

public Object next()

prune

public void prune()

remove

public void remove()
Removes from the underlying Graph the last node returned by PreOrderTraverser. This will prevent the exploration of those nodes that would have been reached through the removed node (unless they are reachable by another route). This method can be called only once per call to next(). The behavior of this Traverser is unspecified if the underlying graph structure is modified while the traversal is in progress in any way other than by calling this method or PreOrderTraverser.

Throws: IllegalStateException if next() has not yet been called, or remove() or removeEdge has been called after the last call to next().

removeEdge

public void removeEdge()
Removes from the underlying Graph the Edge that would be returned by getEdge(). This will prevent the exploration of those nodes that would have been reached through the removed Edge (unless they are reachable by another route).

Description copied from interface: Traverser
{@inheritDoc }

See the Plexus project home, hosted by SourceForge.
Copyright B) 1994-2006, by Phoenix Software Technologists, Inc. and others. All Rights Reserved. Use is subject to license terms.