diff --git a/src/java/org/apache/commons/graph/Graph.java b/src/java/org/apache/commons/graph/Graph.java index 24568e5..2b78f78 100644 --- a/src/java/org/apache/commons/graph/Graph.java +++ b/src/java/org/apache/commons/graph/Graph.java @@ -65,7 +65,7 @@ import org.apache.commons.graph.visitor.PrintVisitor; /** * Describes a generic graph G = (V, E), i.e. a set of vertices and edges. * - * @version $Id: Graph.java,v 1.3 2001/12/02 18:07:18 jvanzyl Exp $ + * @version $Id: Graph.java,v 1.4 2001/12/02 19:23:40 jvanzyl Exp $ * @author M. Dahm */ public class Graph implements Cloneable, Serializable { @@ -73,7 +73,7 @@ public class Graph implements Cloneable, Serializable { /** * Debugging flag */ - private boolean debug = true; + private boolean debug = false; private boolean directed = true; diff --git a/src/java/org/apache/commons/graph/util/DependencyResolver.java b/src/java/org/apache/commons/graph/util/DependencyResolver.java index e4ac537..9a51097 100644 --- a/src/java/org/apache/commons/graph/util/DependencyResolver.java +++ b/src/java/org/apache/commons/graph/util/DependencyResolver.java @@ -75,7 +75,8 @@ public class DependencyResolver */ public List getSortedDependencies(String g) { - List l = getSortedDependencies(new LabeledVertex(g)); + LabeledVertex start = (LabeledVertex) vertices.get(g); + List l = getSortedDependencies(start); ArrayList sl = new ArrayList(); for (Iterator i = l.iterator(); i.hasNext();) @@ -122,9 +123,8 @@ public class DependencyResolver */ public void addGraphable(String g, List dependencies) { - LabeledVertex startingVertex = null; - - if (vertices.get(g) == null) + LabeledVertex startingVertex = (LabeledVertex) vertices.get(g); + if (startingVertex == null) { // Create a labeled vertex with our starting vertex g. startingVertex = new LabeledVertex(g); @@ -141,16 +141,57 @@ public class DependencyResolver // the graph and only add it if it isn't. We need to // add some code to the graph object to deal with this // automatically. - if (vertices.get(dependencyName) == null) + LabeledVertex dependency = (LabeledVertex)vertices.get(dependencyName); + if (dependency == null) { - LabeledVertex dependency = new LabeledVertex(dependencyName); + dependency = new LabeledVertex(dependencyName); vertices.put(dependencyName, dependency); graph.addVertex(dependency); - - // Create an edge between the starting vertex and - // the dependency. - graph.addEdge(startingVertex, dependency); } + + // Create an edge between the starting vertex and + // the dependency. + graph.addEdge(startingVertex, dependency); + } + } + + public static void main(String[] args) + { + Graph graph = new Graph(true); + + LabeledVertex a = new LabeledVertex("A"); + LabeledVertex b = new LabeledVertex("B"); + LabeledVertex c = new LabeledVertex("C"); + LabeledVertex d = new LabeledVertex("D"); + LabeledVertex e = new LabeledVertex("E"); + LabeledVertex f = new LabeledVertex("F"); + + graph.addVertex(a); + graph.addVertex(b); + graph.addVertex(c); + graph.addVertex(d); + graph.addVertex(e); + graph.addVertex(f); + + graph.addEdge(c,f); + + graph.addEdge(d,a); + graph.addEdge(d,b); + + graph.addEdge(e,b); + graph.addEdge(e,c); + graph.addEdge(e,d); + + graph.addEdge(f,d); + + DependencyVisitor visitor = new DependencyVisitor(); + DFS dfs = new DFS(visitor); + dfs.start(graph,(Vertex)f); + List l = visitor.getSortedDependencies(); + + for (Iterator i = l.iterator(); i.hasNext();) + { + System.out.println(i.next()); } } } diff --git a/src/java/org/apache/commons/graph/visitor/DependencyVisitor.java b/src/java/org/apache/commons/graph/visitor/DependencyVisitor.java index f236fc9..557d9e0 100644 --- a/src/java/org/apache/commons/graph/visitor/DependencyVisitor.java +++ b/src/java/org/apache/commons/graph/visitor/DependencyVisitor.java @@ -54,7 +54,7 @@ package org.apache.commons.graph.visitor; * . */ -import java.util.ArrayList; +import java.util.LinkedList; import java.util.List; import org.apache.commons.graph.Vertex; @@ -65,7 +65,7 @@ import org.apache.commons.graph.Vertex; * this class (and of course its descendants) may be passed to a DFS * object. * - * @version $Id: DependencyVisitor.java,v 1.1 2001/12/02 18:07:18 jvanzyl Exp $ + * @version $Id: DependencyVisitor.java,v 1.2 2001/12/02 19:23:40 jvanzyl Exp $ * @author M. Dahm * @see DFS */ @@ -78,20 +78,20 @@ public class DependencyVisitor * they must be processed by the mechanism using * the dependency list. */ - List sortedDependencies; + LinkedList sortedDependencies; /** * Default constructor. */ public DependencyVisitor() { - sortedDependencies = new ArrayList(); + sortedDependencies = new LinkedList(); } public void finishVertex(Vertex v) { super.finishVertex(v); - sortedDependencies.add(v); + sortedDependencies.addLast(v); } public List getSortedDependencies() diff --git a/src/test/org/apache/commons/graph/util/TestDependencyResolver.java b/src/test/org/apache/commons/graph/util/TestDependencyResolver.java index 6f24e63..ddb07ca 100644 --- a/src/test/org/apache/commons/graph/util/TestDependencyResolver.java +++ b/src/test/org/apache/commons/graph/util/TestDependencyResolver.java @@ -10,7 +10,7 @@ import java.util.StringTokenizer; /** * @author Jason van Zyl - * @version $Id: TestDependencyResolver.java,v 1.1 2001/12/02 18:07:19 jvanzyl Exp $ + * @version $Id: TestDependencyResolver.java,v 1.2 2001/12/02 19:23:40 jvanzyl Exp $ */ public class TestDependencyResolver extends TestCase @@ -90,8 +90,6 @@ public class TestDependencyResolver d.addGraphable("E", deps("B,C,D")); d.addGraphable("F", deps("D")); - System.out.println(">>> " + d.getVerticesString()); - // Get the dependencies where we exclude the // specified target. assertEquals(compare,getList(d.getSortedDependencies("F"))); @@ -99,6 +97,7 @@ public class TestDependencyResolver } catch( Exception e ) { + e.printStackTrace(); fail(); } }