01: /*
02: * GeoTools - OpenSource mapping toolkit
03: * http://geotools.org
04: * (C) 2002-2006, GeoTools Project Managment Committee (PMC)
05: * (C) 2002, Refractions Reserach Inc.
06: *
07: * This library is free software; you can redistribute it and/or
08: * modify it under the terms of the GNU Lesser General Public
09: * License as published by the Free Software Foundation;
10: * version 2.1 of the License.
11: *
12: * This library is distributed in the hope that it will be useful,
13: * but WITHOUT ANY WARRANTY; without even the implied warranty of
14: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15: * Lesser General Public License for more details.
16: */
17: package org.geotools.graph.traverse.standard;
18:
19: import java.util.Iterator;
20:
21: import org.geotools.graph.structure.DirectedGraphable;
22: import org.geotools.graph.structure.Graphable;
23: import org.geotools.graph.traverse.GraphTraversal;
24:
25: /**
26: * @source $URL: http://svn.geotools.org/geotools/tags/2.4.1/modules/extension/graph/src/main/java/org/geotools/graph/traverse/standard/DirectedDepthFirstIterator.java $
27: */
28: public class DirectedDepthFirstIterator extends DepthFirstIterator {
29:
30: public void cont(Graphable current, GraphTraversal traversal) {
31: //only consider outing going related
32: DirectedGraphable dg = (DirectedGraphable) current;
33: for (Iterator itr = dg.getOutRelated(); itr.hasNext();) {
34: DirectedGraphable related = (DirectedGraphable) itr.next();
35: if (!traversal.isVisited(related))
36: getQueue().enq(related);
37: }
38: }
39:
40: }
|