- the resolver now works but some additions have to be made to tell
the resolver to stop when all the neighbours of the starting vertex have been visited as opposed to going through the whole graph. PR: Obtained from: Submitted by: Reviewed by: git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/sandbox/graph/trunk@144587 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
1 parent
f3a7176baf
commit
49c20e5fb7
4 files changed
+60
-20
No files matched your search
@@ -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 <A HREF="http://www.inf.fu-berlin.de/~dahm">M. Dahm</A>
|
||||
*/
|
||||
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;
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -54,7 +54,7 @@ package org.apache.commons.graph.visitor;
|
||||
* <http://www.apache.org/>.
|
||||
*/
|
||||
|
||||
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 <A HREF="http://www.inf.fu-berlin.de/~dahm">M. Dahm</A>
|
||||
* @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()
|
||||
|
||||
@@ -10,7 +10,7 @@ import java.util.StringTokenizer;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
|
||||
* @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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user