diff --git a/.cvsignore b/.cvsignore
deleted file mode 100644
index d9860d5..0000000
--- a/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*~
-target
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index cbe4f26..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- * any, must include the following acknowlegement:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowlegement may appear in the software itself,
- * if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Commons", and "Apache Software
- * Foundation" must not be used to endorse or promote products derived
- * from this software without prior written permission. For written
- * permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- * nor may "Apache" appear in their names without prior written
- * permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
diff --git a/NOTES b/NOTES
deleted file mode 100644
index f7eff88..0000000
--- a/NOTES
+++ /dev/null
@@ -1,13 +0,0 @@
-. Removing the "implements Constants" as it is a bad pattern. Interfaces
- should represent types. It also makes the UML diagrams very hard
- to follow. We're just going to use the fully qualified GraphConstants.{x}
- idiom.
-
-. Added the Graphable interface to allow any arbitrary object to be
- manipulated like a vertex in a graph.
-
-. Added a util package that has a dependency resolver that uses a depth first
- search to sort the dependencies for a set of objects that implement
- the Graphable interface. The resolver also works with Strings and
- lists and deps stated as lists of strings so I can resuse the test
- I wrote for the DependencyEngine in jjar.
diff --git a/PROPOSAL b/PROPOSAL
deleted file mode 100644
index 1d34fa5..0000000
--- a/PROPOSAL
+++ /dev/null
@@ -1,12 +0,0 @@
---------------------------------------------------------------------------
- J A K A R T A C O M M O N S G R A P H P A C K A G E
---------------------------------------------------------------------------
-
-Abstract:
-
-Todo
-
-Initial commiters:
-
-Markus Dahm
-Jason van Zyl
diff --git a/README.txt b/README.txt
deleted file mode 100644
index 9101452..0000000
--- a/README.txt
+++ /dev/null
@@ -1,17 +0,0 @@
---------------------------------------------------------------------------
-J A K A R T A C O M M O N S U T I L I T I E S
---------------------------------------------------------------------------
-
-o Building
-
-To build, you must have ant installed. Just type 'ant' -- the default
-target will build the jar.
-
-There are also a few other targets like 'javadoc'. Look in build.xml
-
-
-o Use in your application
-
-To use the Commons Utility package, build a commons-util.jar file,
-import the desired classes from org.apache.commons.util and and
-compile your code with cup.jar in the CLASSPATH.
diff --git a/build-test.xml b/build-test.xml
deleted file mode 100644
index 0d0c74c..0000000
--- a/build-test.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Running all JUnit tests
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/build.xml b/build.xml
deleted file mode 100644
index 1c5e332..0000000
--- a/build.xml
+++ /dev/null
@@ -1,172 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/default.properties b/default.properties
deleted file mode 100644
index 8efa67d..0000000
--- a/default.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-# Component delcarations
-component.name = commons-graph
-component.title = Jakarta Graph Utilties
-component.version = 0.1-dev
-component.jar = ${component.name}.jar
-
-# Paths
-build.home = target
-dist.home = dist
-source.home = src
-test.home = ${source.home}/test
-build.dir = .
-
-# Compiler defaults
-compile.debug = true
-compile.deprecation = true
-compile.optimize = true
-
-# Test defaults
-test.failonerror = true
-test.runner = junit.textui.TestRunner
-test.reportDirectory = test-reports
-
-commons-collections.jar = ${lib.repo}/commons-collections.jar
-junit.jar = ${lib.repo}/junit-3.7.jar
diff --git a/src/conf/MANIFEST.MF b/src/conf/MANIFEST.MF
deleted file mode 100644
index fa970e4..0000000
--- a/src/conf/MANIFEST.MF
+++ /dev/null
@@ -1,6 +0,0 @@
-Extension-Name: @name@
-Specification-Vendor: Apache Software Foundation
-Specification-Version: 1.0
-Implementation-Vendor: Apache Software Foundation
-Implementation-Title: commons-graph
-Implementation-Version: 0.1-dev
diff --git a/src/java/org/apache/commons/graph/BFS.java b/src/java/org/apache/commons/graph/BFS.java
deleted file mode 100644
index 341d36a..0000000
--- a/src/java/org/apache/commons/graph/BFS.java
+++ /dev/null
@@ -1,155 +0,0 @@
-package org.apache.commons.graph;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-import java.util.Vector;
-import org.apache.commons.graph.visitor.Visitor;
-
-/**
- * Visit graph with breadth first search and compute the predecessor
- * during traversal for all vertices. The algorithm could be modified
- * so that it performs Dijkstra's shortest-path algorithm, for
- * instance, if you extend the VQueue class to a Priority Queue.
- *
- * Definition of BFS: A search algorithm which considers neighbors of a vertex,
- * that is, outgoing edges of the vertex's predecessor in the search, before any
- * outgoing edges of the vertex. Extremes are searched last. This is typically
- * implemented with a queue.
- *
- * @version $Id: BFS.java,v 1.5 2002/01/16 20:38:28 jvanzyl Exp $
- * @author M. Dahm
- */
-public class BFS extends TraversalOrder {
- private VQueue q;
-
- /**
- * Breadth first search algorithm.
- *
- * @param v visitor object to apply when discovering and finishing a vertex
- */
- public BFS(Visitor v) {
- this(v, null);
- }
-
- /**
- * Breadth first search algorithm.
- *
- * @param v visitor object to apply when discovering and finishing a vertex
- * @param q queue to use during traversal
- */
- public BFS(Visitor v, VQueue q) {
- super(v);
- this.q = q;
- }
-
- /**
- * Run breadth first search (BFS) algorithm.
- *
- * @param g graph to traverse
- * @param start vertex to start at (or null, starts at some vertex then)
- */
- public void start(Graph g, Vertex start) {
- int size = g.getNoVertices();
- Vertex[] vertices = g.getVertexArray();
-
- visitor.discoverGraph(g);
-
- /* Initially mark all vertices as WHITE
- */
- for(int i=0; i < size; i++) {
- vertices[i].setColor(GraphConstants.WHITE);
- vertices[i].setPredecessor(null);
- }
-
- if(start == null || !g.contains(start)) // Start BFS at (white) start vertex
- start = vertices[0];
-
- if(q == null) // No queue supplied
- q = new VQueue(size);
-
- visitor.discoverVertex(start); // Initialization
-
- start.setColor(GraphConstants.GRAY);
- q.enqueue(start);
-
- while(!q.empty() && !stopped) {
- Vertex u = q.head();
-
- vertices = g.getVertexArray(u); // Get adjacent vertices and edges
- Edge[] edges = g.getEdgeArray(u);
- size = vertices.length; // reuse var
-
- for(int i=0; (i < size) && !stopped; i++) { // Explore all edges, same length
- visitor.discoverEdge(edges[i]);
-
- Vertex v = vertices[i];
- if(v.getColor() == GraphConstants.WHITE) { // Unvisited vertex?
- visitor.discoverVertex(v);
-
- v.setColor(GraphConstants.GRAY);
- q.enqueue(v);
- }
-
- visitor.finishEdge(edges[i]);
- }
-
- visitor.finishVertex(u);
- q.dequeue();
- u.setColor(GraphConstants.BLACK);
- }
-
- visitor.finishGraph(g);
- }
-}
diff --git a/src/java/org/apache/commons/graph/DFS.java b/src/java/org/apache/commons/graph/DFS.java
deleted file mode 100644
index c09c66d..0000000
--- a/src/java/org/apache/commons/graph/DFS.java
+++ /dev/null
@@ -1,151 +0,0 @@
-package org.apache.commons.graph;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-import org.apache.commons.graph.visitor.Visitor;
-
-/**
- * Visit graph with depth first search and mark discovery and finishing time in all
- * vertices.
- *
- * Definition of a DFS:
- * (1) Any search algorithm which considers outgoing edges of a vertex before
- * any neighbors of the vertex, that is, outgoing edges of the vertex's predecessor in
- * the search. Extremes are searched first. This is easily implemented with recursion.
- * (2) An algorithm which marks all vertices in a directed graph in the order they are
- * discovered and finished, partitioning the graph into a forest.
- *
- * @version $Id: DFS.java,v 1.5 2002/01/16 20:38:28 jvanzyl Exp $
- * @author M. Dahm
- */
-public class DFS extends TraversalOrder {
- /**
- * Depth first search algorithm.
- *
- * @param v visitor object to apply when discovering and finishing a vertex or edge
- */
- public DFS(Visitor v) {
- super(v);
- }
-
- /**
- * Depth first search algorithm.
- *
- * @param v visitor object to apply when discovering and finishing a vertex or edge
- * @param traverse_all traverse the complete graph or stop after finishing all nodes reachable
- * from the start
- */
- public DFS(Visitor v, boolean traverse_all) {
- super(v, traverse_all);
- }
-
- /**
- * Run depth first search (DFS) algorithm.
- *
- * @param g graph to traverse
- * @param start vertex to start at (or null, starts at some vertex then)
- */
- public void start(Graph g, Vertex start) {
- int size = g.getNoVertices();
- Vertex[] vertices = g.getVertexArray();
-
- graph = g;
-
- visitor.discoverGraph(g);
-
- // Initially mark all vertices as WHITE
- for(int i=0; i < size; i++)
- vertices[i].setColor(GraphConstants.WHITE);
-
- if(start != null && g.contains(start)) // Start DFS at (white) start vertex
- DFS_Visit(start);
-
- if(traverse_complete_graph) {
- for(int i=0; (i < size) && !stopped; i++) {
- Vertex v = vertices[i];
-
- if(v.getColor() == GraphConstants.WHITE) // Unvisited vertex?
- DFS_Visit(v);
- }
- }
-
- visitor.finishGraph(g);
- }
-
- private final void DFS_Visit(Vertex u) {
- u.setColor(GraphConstants.GRAY); // Mark as visited
- visitor.discoverVertex(u);
-
- Vertex[] vertices = graph.getVertexArray(u); // Get adjacent vertices
- Edge[] edges = graph.getEdgeArray(u); // and edges
- int size = vertices.length;
-
- for(int i=0; (i < size) && !stopped; i++) { // Explore all edges
- visitor.discoverEdge(edges[i]);
-
- Vertex v = vertices[i];
-
- if(v.getColor() == GraphConstants.WHITE)
- {
- DFS_Visit(v);
- }
-
- visitor.finishEdge(edges[i]);
- }
-
- u.setColor(GraphConstants.BLACK); // Mark as finished
- visitor.finishVertex(u);
- }
-}
diff --git a/src/java/org/apache/commons/graph/DirectedGraph.java b/src/java/org/apache/commons/graph/DirectedGraph.java
deleted file mode 100644
index 5e55d15..0000000
--- a/src/java/org/apache/commons/graph/DirectedGraph.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package org.apache.commons.graph;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-/**
- * DirectedGraph
- *
- * This is a graph for which the edges only flow one way.
- */
-public class DirectedGraph extends Graph
-{
- public DirectedGraph()
- {
- super( true );
- }
-}
diff --git a/src/java/org/apache/commons/graph/Edge.java b/src/java/org/apache/commons/graph/Edge.java
deleted file mode 100644
index b2560b3..0000000
--- a/src/java/org/apache/commons/graph/Edge.java
+++ /dev/null
@@ -1,150 +0,0 @@
-package org.apache.commons.graph;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-import java.io.Serializable;
-
-import org.apache.commons.graph.visitor.Visitor;
-
-/**
- * Describes an edge between two vertices of a graph, i.e. a relation between
- * two arbitrary vertices.
- *
- * @version $Id: Edge.java,v 1.4 2002/01/16 20:38:28 jvanzyl Exp $
- * @author M. Dahm
- */
-public class Edge
- implements Cloneable,Serializable, Comparable
-{
-
- /**
- * Unique identifer for this edge.
- */
- private int ident;
-
- /**
- * Counter that is incremented to give
- * this edge a unique identity.
- */
- private static int counter;
-
- /**
- * Create edge.
- */
- public Edge() {
- ident = counter++;
- }
-
- /**
- * @return ident, i.e. identifier of this node
- */
- public final int getIdent() { return ident; }
-
- /**
- * @return number of created edges
- */
- public static final int getCounter() { return counter; }
-
- /**
- * @return String representation.
- */
- public String toString() {
- return toString(GraphConstants.PLAIN);
- }
-
- /**
- * @param verbose toggle output format
- * @return String representation.
- */
- public String toString(int verbose) {
- if((verbose == GraphConstants.TALKATIVE) || (verbose == GraphConstants.V_TALKATIVE))
- {
- return "Edge(" + ident + ")";
- }
-
- return "";
- }
-
- /**
- * Access for visitor patterns
- */
- public void accept(Visitor v) { v.discoverEdge(this); }
-
- /**
- * @return deep copy
- */
- public Edge copy() {
- try {
- return (Edge)clone();
- } catch(CloneNotSupportedException e) {}
-
- return null;
- }
-
- /** Check for equality.
- */
- public boolean equals(Object o) {
- if(!(o instanceof Edge))
- return false;
-
- Edge e = (Edge)o;
- return e.ident == ident;
- }
-
- public int compareTo( Object o ) {
- return 0;
- }
-
-}
diff --git a/src/java/org/apache/commons/graph/Graph.java b/src/java/org/apache/commons/graph/Graph.java
deleted file mode 100644
index 0131dd2..0000000
--- a/src/java/org/apache/commons/graph/Graph.java
+++ /dev/null
@@ -1,709 +0,0 @@
-package org.apache.commons.graph;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-import java.util.*;
-import java.util.zip.*;
-import java.io.*;
-
-import org.apache.commons.graph.visitor.Visitor;
-import org.apache.commons.graph.visitor.DefaultVisitor;
-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.5 2002/01/16 20:38:28 jvanzyl Exp $
- * @author M. Dahm
- */
-public class Graph implements Cloneable, Serializable {
-
- /**
- * Debugging flag
- */
- private boolean debug = false;
-
- private boolean directed = true;
-
- /* Map Vertex to VertexWrapper and Edge to EdgeWrapper,
- * respectively. Wrapper objects carry the necessary information
- * about associations between vertices. VertexWrappers contain the
- * edges coming from and leading to a vertex (if the graph is undirected both
- * vertices "have" this edge, otherwise the source vertex only "has" it).
- * EdgeWrappers contain references to the source and target vertices.
- */
- private Map vmap = new HashMap();
- private Map emap = new HashMap();
-
- /**
- * Create empty directed graph.
- */
- public Graph() {}
-
- /**
- * Create directed graph initialized with a set of subgraphs.
- */
- public Graph(Graph[] graphs) {
- for(int i=0; i < graphs.length; i++) {
- addGraph(graphs[i]);
- }
- }
-
- /**
- * Create empty graph.
- * @param d graph is directed?
- */
- public Graph(boolean d) {
- directed = d;
- }
-
- /**
- * Read graph from file using Serializable.
- *
- * @param name file name to read from
- */
- public Graph(String name) throws IOException, ClassNotFoundException
- {
- this(new FileInputStream(name));
- }
-
- /**
- * Read graph from input stream using Serializable.
- *
- * @param stream stream to read from
- */
- public Graph(InputStream stream) throws IOException, ClassNotFoundException
- {
- ObjectInputStream oi = new ObjectInputStream(new GZIPInputStream(stream));
- Graph g = (Graph)oi.readObject();
-
- this.directed = g.directed;
- this.vmap = g.vmap;
- this.emap = g.emap;
- }
-
- /* Add sub graph to this graph.
- */
- public void addGraph(Graph g) {
- Vertex[] vertices = g.getVertexArray();
- for(int j=0; j < vertices.length; j++)
- addVertex(vertices[j]);
-
- Edge[] edges = g.getEdgeArray();
- for(int j=0; j < edges.length; j++)
- addEdge(g.getSource(edges[j]), g.getTarget(edges[j]), edges[j]);
- }
-
- /**
- * Add a vertex to the graph.
- * @param v vertex to add
- */
- public void addVertex(Vertex v) {
- if(v == null)
- {
- throw new GraphError("Vertex must not be null");
- }
-
- if (debug)
- {
- System.out.println("Adding vertex: " + v);
- }
-
- vmap.put(v, new VertexWrapper(v));
- }
-
- /**
- * Add a (default) edge between two vertices to the graph.
- *
- * @param u source vertex.
- * @param v target vertex.
- */
- public void addEdge(Vertex u, Vertex v) {
- addEdge(u, v, new Edge());
- }
-
- /**
- * Add an edge between two vertices to the graph.
- *
- * @param u source vertex.
- * @param v target vertex.
- * @param e edge between
- */
- public void addEdge(Vertex u, Vertex v, Edge e) {
- VertexWrapper uw = getWrapper(u);
- VertexWrapper vw = getWrapper(v);
-
- if(e == null)
- {
- throw new GraphError("Edge must not be null");
- }
-
- emap.put(e, new EdgeWrapper(e, u, v));
- uw.addEdge(e);
-
- if(!directed)
- {
- // Add edge to the other side, too
- vw.addEdge(e);
- }
-
- vw.addPredecessorEdge(e);
- }
-
- /**
- * Remove given vertex and the edges that connect it to other vertices.
- *
- * @param v abandoned vertex.
- */
- public void removeVertex(Vertex v) {
- VertexWrapper vw = getWrapper(v);
-
- Edge[] edges = vw.getEdges(); // Remove all adjacent edges
-
- if(!directed) { // Inform other side of the edge that it has to be removed
- for(int i=0; i < edges.length; i++) {
- EdgeWrapper ew = getWrapper(edges[i]);
- Vertex u = (ew.src == v)? ew.target : ew.src;
- VertexWrapper uw = getWrapper(u);
- uw.removeEdge(edges[i]);
- }
- } else {
- for(int i=0; i < edges.length; i++) {
- VertexWrapper uw = getWrapper(getWrapper(edges[i]).target);
- uw.removePredecessorEdge(edges[i]);
- }
- }
-
- vmap.remove(v); // Remove vertex from the hash map
-
- // Finally remove the edges from the hash map
- for(int i=0; i < edges.length; i++)
- emap.remove(edges[i]);
- }
-
- /**
- * Remove given edge from the graph.
- *
- * @param e abandoned edge.
- */
- public void removeEdge(Edge e) {
- EdgeWrapper ew = getWrapper(e);
- emap.remove(e); // Remove edge from the hash map
-
- // Update source vertex
- VertexWrapper vw = getWrapper(ew.src);
- vw.removeEdge(e);
-
- if(!directed) { // Inform other node, too
- vw = getWrapper(ew.target);
- vw.removeEdge(e);
- }
- }
-
- /**
- * Reset the graph so that it can be used over again.
- */
- public void reset()
- {
- vmap.clear();
- emap.clear();
- }
-
- /**
- * Get source vertex of edge. Order between source and target doesn't
- * really matter if this graph is undirected.
- *
- * @param e edge.
- */
- public final Vertex getSource(Edge e) { return getWrapper(e).src; }
-
- /**
- * Get target vertex of edge. Order between source and target doesn't
- * really matter if this graph is undirected.
- *
- * @param e edge.
- */
- public final Vertex getTarget(Edge e) { return getWrapper(e).target; }
-
- /**
- * @return number of vertices.
- */
- public final int getNoVertices() { return vmap.size(); }
-
- /**
- * @return number of edges.
- */
- public final int getNoEdges() { return emap.size(); }
-
- /**
- * @return all vertices of the graph.
- */
- public Collection getVertices() { return vmap.keySet(); }
-
- /**
- * @return all edges of the graph.
- */
- public Collection getEdges() { return emap.keySet(); }
-
- /**
- * @return all vertices of the graph.
- */
- public final Vertex[] getVertexArray() {
- return (Vertex[])getVertices().toArray(new Vertex[getNoVertices()]);
- }
-
- /**
- * @return all edges of the graph.
- */
- public final Edge[] getEdgeArray() {
- return (Edge[])getEdges().toArray(new Edge[getNoEdges()]);
- }
-
- /**
- * @return all edges between source and target
- */
- public Edge[] getEdgeArray(Vertex source, Vertex target) {
- Collection c = getEdges(source, target);
- return (Edge[])c.toArray(new Edge[c.size()]);
- }
-
- /**
- * @return all edges between source and target
- */
- public Collection getEdges(Vertex source, Vertex target) {
- Edge[] edges = getEdgeArray(source);
- List list = new ArrayList();
-
- for(int i=0; i < edges.length; i++)
- if(getTarget(edges[i]) == target)
- list.add(edges[i]);
-
- return list;
- }
-
- /**
- * @return all vertices adjacent to v.
- */
- public Vertex[] getVertexArray(Vertex v) {
- Edge[] edges = getEdgeArray(v);
- int size = edges.length;
- Vertex[] vertices = new Vertex[size];
-
- /* Take the other side of the edge, no matter if directed or not
- */
- for(int i=0; i < size; i++) {
- EdgeWrapper ew = getWrapper(edges[i]);
- vertices[i] = (ew.src == v)? ew.target : ew.src;
- }
-
- return vertices;
- }
-
- /**
- * @return number of vertices adjacent to v.
- */
- public int getNoVertices(Vertex v) {
- VertexWrapper vw = getWrapper(v);
- return vw.edges.size();
- }
-
- /**
- * @return number of edges adjacent to v.
- */
- public final int getNoEdges(Vertex v) {
- return getNoVertices(v);
- }
-
- /**
- * @return all edges adjacent to v.
- */
- public Edge[] getEdgeArray(Vertex v) {
- VertexWrapper vw = getWrapper(v);
- return vw.getEdges();
- }
-
- /**
- * @return all vertices adjacent to v.
- */
- public Collection getVertices(Vertex v) {
- return Arrays.asList(getVertexArray(v));
- }
-
- /**
- * @return all edges adjacent to v.
- */
- public Collection getEdges(Vertex v) {
- return Arrays.asList(getEdgeArray(v));
- }
-
- /**
- * Get all vertices from which v may be reached directly, in an undirected
- * graph, this is identical to getVertexArray(v)
- *
- * @return all predecessor vertices of v
- */
- public Vertex[] getPredecessorArray(Vertex v) {
- if(!directed)
- return getVertexArray(v);
-
- Collection c = getPredecessors(v);
- return (Vertex[])c.toArray(new Vertex[c.size()]);
- }
-
- /**
- * Get all vertices from which v may be reached directly, in an undirected
- * graph, this is identical to getVertices(v)
- *
- * @return all predecessor vertices of v
- */
- public Collection getPredecessors(Vertex v) {
- if(!directed)
- return getVertices(v);
-
- List list = new ArrayList();
- Collection edges = getWrapper(v).pred_edges;
-
- for(Iterator i = edges.iterator(); i.hasNext(); )
- list.add(getWrapper(((Edge)i.next())).src);
-
- return list;
- }
-
- public Edge[] getPredecessorEdgeArray(Vertex v) {
- if(!directed)
- return getEdgeArray(v);
-
- Collection edges = getWrapper(v).pred_edges;
-
- return (Edge[])edges.toArray(new Edge[edges.size()]);
- }
-
- /**
- * Get all edges pointing to v, in an undirected
- * graph, this is identical to getEdges(v)
- *
- * @return all predecessor vertices of v
- */
- public Collection getPredecessorEdges(Vertex v) {
- if(!directed)
- return getEdges(v);
-
- return (Collection)((ArrayList)getWrapper(v).pred_edges).clone();
- }
-
- /**
- * Is v in this graph?
- */
- public final boolean contains(Vertex v) {
- return vmap.containsKey(v);
- }
-
- /**
- * Is e in this graph?
- */
- public final boolean contains(Edge e) {
- return emap.containsKey(e);
- }
-
- /**
- * Check, if v is a vertex of graph g.
- */
- public static final boolean contains(Graph g, Vertex v) {
- return g.contains(v);
- }
-
- /**
- * Check, if e is an edge of graph g.
- */
- public static final boolean contains(Graph g, Edge e) {
- return g.contains(e);
- }
-
- /**
- * Check, if g is a subgraph of super_g, i.e. if all vertices and edges of g are
- * contained in super_g, too.
- *
- * @param super_g the super graph
- * @param g the subgraph
- */
- public static final boolean contains(Graph super_g, Graph g) {
- for(Iterator i = g.getVertices().iterator(); i.hasNext();) {
- Vertex v = (Vertex)i.next();
- if(!contains(super_g, v))
- return false;
- }
-
- for(Iterator i = g.getEdges().iterator(); i.hasNext();) {
- Edge e = (Edge)i.next();
- if(!contains(super_g, e))
- return false;
- }
-
- return true;
- }
-
- /**
- * Check, if g is a subgraph of this graph. Tests for object equivalence (==).
- */
- public final boolean contains(Graph g) {
- return contains(this, g);
- }
-
- /**
- * Access for visitor patterns
- */
- public void accept(Visitor v) { v.discoverGraph(this); }
-
- /**
- * Is this graph directed?
- */
- public final boolean isDirected() { return directed; }
-
- /**
- * @return wrapper object corresponding to vertex or throw an exception.
- */
- private final VertexWrapper getWrapper(Vertex v) {
- VertexWrapper vw = (VertexWrapper)vmap.get(v);
-
- if(vw == null)
- throw new GraphError("Vertex not contained in this graph: " + v);
-
- return vw;
- }
-
- /**
- * @return wrapper object corresponding to edge or throw an exception.
- */
- private final EdgeWrapper getWrapper(Edge e) {
- EdgeWrapper ew = (EdgeWrapper)emap.get(e);
-
- if(ew == null)
- throw new GraphError("Edge not contained in this graph: " + e);
-
- return ew;
- }
-
- public String toString() {
- return toString(GraphConstants.PLAIN);
- }
-
- /**
- * @return graph contents traversed with DFS
- */
- public String toString(int verbose) {
- if(verbose == GraphConstants.PLAIN)
- return printArray(getVertexArray());
- else {
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- PrintWriter out = new PrintWriter(bos);
-
- new DFS(new PrintVisitor(out, GraphConstants.VERBOSE)).start(this);
- out.close();
-
- return bos.toString();
- }
- }
-
- /**
- * All vertices and edges are copied deeply, i.e. copy() will be called on
- * them recursively.
- *
- * @return deep copy of this graph.
- */
- public Graph copy() {
- Graph g = new Graph(directed);
-
- for(Iterator i = getVertices().iterator(); i.hasNext();) {
- Vertex v = ((Vertex)i.next()).copy();
- g.addVertex(v);
- }
-
- for(Iterator i = getEdges().iterator(); i.hasNext();) {
- Edge e = (Edge)i.next();
- EdgeWrapper ew = getWrapper(e);
-
- g.addEdge(ew.src, ew.target, e.copy());
- }
-
- return g;
- }
-
- public Graph copy(Vertex start) {
- final Graph g = new Graph(directed);
-
- new DFS(new DefaultVisitor() {
- public void discoverVertex(Vertex v) {
- g.addVertex(v);
- }
-
- public void finishEdge(Edge e) {
- EdgeWrapper ew = getWrapper(e);
-
- g.addEdge(ew.src, ew.target, e);
- }
- }, false).start(this, start);
-
- return g;
- }
-
- /**
- * @return shallow copy of this graph, i.e. all vertices and edges keep their
- * object identity
- */
- public Object clone() {
- Graph g = new Graph(directed);
-
- for(Iterator i = getVertices().iterator(); i.hasNext();) {
- Vertex v = ((Vertex)i.next());
- g.addVertex(v);
- }
-
- for(Iterator i = getEdges().iterator(); i.hasNext();) {
- Edge e = (Edge)i.next();
- EdgeWrapper ew = getWrapper(e);
-
- g.addEdge(ew.src, ew.target, e);
- }
-
- return g;
- }
-
- /* Wrap association information into class, s.a.
- */
- private static final class VertexWrapper implements Serializable {
- Vertex vertex;
- List edges = new ArrayList(3);
- List pred_edges = new ArrayList(3);
-
- final void addEdge(Edge e) { edges.add(e); }
- final void addPredecessorEdge(Edge e) { pred_edges.add(e); }
- final void removeEdge(Edge e) { edges.remove(e); }
- final void removePredecessorEdge(Edge e) { pred_edges.remove(e); }
-
- final Edge[] getEdges() {
- return (Edge[])edges.toArray(new Edge[edges.size()]);
- }
-
- VertexWrapper(Vertex v) {
- vertex = v;
- }
- }
-
- /* Wrap association information into class, s.a.
- */
- private static final class EdgeWrapper implements Serializable {
- Edge edge;
- Vertex src, target;
-
- EdgeWrapper(Edge e, Vertex u, Vertex v) {
- edge = e;
- src = u;
- target = v;
- }
- }
-
- /** Clear all vertex attributes like color, distance, ...
- */
- public void clearVertices() {
- for(Iterator i = getVertices().iterator(); i.hasNext();) {
- Vertex v = ((Vertex)i.next());
- v.setColor(-1);
- v.setDistance(-1);
- v.setDiscoveryTime(-1);
- v.setFinishingTime(-1);
- v.setPredecessor(null);
- }
- }
-
- /**
- * Dump graph to file using Serializable.
- *
- * @param name file name to dump to
- */
- public void dump(String name) throws IOException {
- dump(new FileOutputStream(name));
- }
-
- /**
- * Dump graph to output stream using Serializable.
- *
- * @param stream stream to dump to
- */
- public void dump(OutputStream stream) throws IOException {
- ObjectOutputStream oo = new ObjectOutputStream(new GZIPOutputStream(stream));
- oo.writeObject(this);
- oo.close();
- }
-
- /**
- * Print the given array using toString() where appropiate.
- */
- private static final String printArray(Object[] obj) {
- StringBuffer buf = new StringBuffer("{");
-
- for(int i=0; i < obj.length; i++) {
- if(obj[i] != null)
- buf.append(obj[i].toString());
- else
- buf.append("null");
-
- if(i < obj.length - 1)
- buf.append(", ");
- }
- buf.append('}');
-
- return buf.toString();
- }
-}
diff --git a/src/java/org/apache/commons/graph/GraphAlgorithms.java b/src/java/org/apache/commons/graph/GraphAlgorithms.java
deleted file mode 100644
index d290c7c..0000000
--- a/src/java/org/apache/commons/graph/GraphAlgorithms.java
+++ /dev/null
@@ -1,195 +0,0 @@
-package org.apache.commons.graph;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-import java.util.*;
-import org.apache.commons.graph.algo.*;
-import org.apache.commons.graph.exception.*;
-
-/**
- * Collection of graph algorithms such as transposeGraph.
- *
- * @version $Id: GraphAlgorithms.java,v 1.3 2002/01/16 20:38:28 jvanzyl Exp $
- * @author M. Dahm
- */
-public abstract class GraphAlgorithms
-{
- /**
- * Compute the inverse of a graph, i.e. with all edges reverted
- */
- public static final Graph transposeGraph(DirectedGraph g) {
- DirectedGraph graph = new DirectedGraph();
-
- for(Iterator i=g.getVertices().iterator(); i.hasNext();)
- graph.addVertex((Vertex)i.next());
-
- for(Iterator i=g.getEdges().iterator(); i.hasNext();) {
- Edge f = (Edge)i.next();
-
- graph.addEdge(g.getTarget(f), g.getSource(f), f);
- }
-
- return graph;
- }
-
- /**
- * Get a Minimum Spanning Forest from a graph.
- */
- public static MinimumSpanningForest
- getMinimumSpanningForest( Graph g ) {
- return MinimumSpanningForest.getMSF( g );
- }
-
- public static MinimumSpanningForest
- getMinimumSpanningForest( Graph g, boolean isMin ) {
- return MinimumSpanningForest.getMSF( g, isMin );
- }
-
- public static MinimumSpanningForest
- getMSF( Graph g ) {
- return MinimumSpanningForest.getMSF( g );
- }
-
- public static MinimumSpanningForest
- getMSF( Graph g, boolean isMin ) {
- return MinimumSpanningForest.getMSF( g, isMin );
- }
-
- /**
- * Perform a Topological Sort on a Directed
- * graph.
- *
- * Should throw BackEdgeException if it is not a DAG.
- */
- public static List topoSort( DirectedGraph g ) {
- return Sort.getInstance().topologicalSort( g );
- }
- public static List topologicalSort( DirectedGraph g ) {
- return Sort.getInstance().topologicalSort( g );
- }
-
- /**
- * Identify all backedges in a directed graph
- * when starting from a particular vertex.
- */
- public static Set getBackEdges( DirectedGraph g, Vertex start )
- throws BackEdgeException
- {
- return BackEdges.getInstance().getBackEdges( g, start );
- }
-
- /**
- * Test whether the SCC g is a loop.
- *
- * @param super_g super graph containing the subset of vertices
- * @param g subset of super_g (g must be SCC of super_g)
- */
- public static final boolean isLoop(Graph super_g, Graph loop) {
- return findLoopEntry(super_g, loop) != null;
- }
-
- /**
- * Test whether the SCC g is a loop.
- *
- * @param super_g super graph containing the subset of vertices
- * @param g subset of super_g (g must be SCC of super_g)
- * @return root node of loop, i.e. the entry point, or null if this is no loop
- */
- public static final Vertex findLoopEntry(Graph super_g, Graph loop) {
- switch(loop.getNoVertices()) {
- case 0:
- return null; // certainly not a loop
-
- case 1: // singleton must point to itself, i.e. be a self-loop
- Vertex v = loop.getVertexArray()[0];
- Vertex[] edges = loop.getVertexArray(v);
-
- for(int i=0; i < edges.length; i++)
- if(edges[i] == v)
- return v;
-
- return null;
- }
-
- /* Make sure that the root node is the only entry point to the
- * SCC, i.e. there is no way from a node v \in (super_g \ g) into
- * a node in g except via the root node.
- *
- * So we have to find the root node first ...
- */
- Vertex root = null;
- Vertex[] vertices = super_g.getVertexArray();
-
- for(int i=0; i < vertices.length; i++) {
- Vertex v = vertices[i];
-
- if(loop.contains(v)) // v is in the SCC, no check needed
- continue;
-
- Vertex[] edges = super_g.getVertexArray(v); // All nodes reachable from v
- for(int j=0; j < edges.length; j++) {
- Vertex u = edges[j];
-
- if(loop.contains(u))
- if(root == null)
- root = u;
- else
- return null; // Can't be a loop then, i.e. has more than one root node
- }
- }
-
- return root; // Has loop a root node at all !?
- }
-}
diff --git a/src/java/org/apache/commons/graph/GraphConstants.java b/src/java/org/apache/commons/graph/GraphConstants.java
deleted file mode 100644
index f86c6c2..0000000
--- a/src/java/org/apache/commons/graph/GraphConstants.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package org.apache.commons.graph;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-/**
- * GraphConstants useful for graph algorithms.
- *
- * @version $Id: GraphConstants.java,v 1.2 2002/01/16 20:38:28 jvanzyl Exp $
- * @author M. Dahm
- */
-
-public interface GraphConstants
-{
- public static final int WHITE = 0;
- public static final int GRAY = 1;
- public static final int BLACK = 2;
-
- public static final int INFINITE = Integer.MAX_VALUE;
-
- /**
- * Modes for toString(int verbose), three seem sufficient, but you can use your own
- */
- public static final int PLAIN = 0; // Simple output
- public static final int VERBOSE = 1; // Verbose output
- public static final int TALKATIVE = 2; // Even more verbose output
- public static final int V_PLAIN = 3; // Simple output for graph layout
- public static final int V_VERBOSE = 4; // Verbose output for graph layout
- public static final int V_TALKATIVE = 5; // Even more verbose output for graph layout
-}
diff --git a/src/java/org/apache/commons/graph/GraphError.java b/src/java/org/apache/commons/graph/GraphError.java
deleted file mode 100644
index 93e090b..0000000
--- a/src/java/org/apache/commons/graph/GraphError.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package org.apache.commons.graph;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-/**
- * @version $Id: GraphError.java,v 1.2 2002/01/16 20:38:28 jvanzyl Exp $
- * @author M. Dahm
- */
-public class GraphError extends RuntimeException {
- public GraphError(String s) { super(s); }
-}
diff --git a/src/java/org/apache/commons/graph/Graphable.java b/src/java/org/apache/commons/graph/Graphable.java
deleted file mode 100644
index c469771..0000000
--- a/src/java/org/apache/commons/graph/Graphable.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package org.apache.commons.graph;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-/**
- * Interface that defines a standard Graphable type, implement
- * the Graphable interface when you want an arbitrary object type
- * to be manipulated like a vertex in a graph.
- *
- * @author Jason van Zyl
- * @version $Id: Graphable.java,v 1.1 2002/01/16 20:38:28 jvanzyl Exp $
- */
-
-public interface Graphable
-{
- /**
- * Get the name of the Graphable object. We are not
- * using toString() because what might be returned
- * might not be suitable in a visual graph. For example,
- * an XML type object's toString() method might return
- * an XML document. A simple getName() might not be
- * enough either but it will do for now.
- */
- String getName();
-}
diff --git a/src/java/org/apache/commons/graph/Label.java b/src/java/org/apache/commons/graph/Label.java
deleted file mode 100644
index bd5de6a..0000000
--- a/src/java/org/apache/commons/graph/Label.java
+++ /dev/null
@@ -1,125 +0,0 @@
-package org.apache.commons.graph;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-/**
- * Label
- *
- * This is a special Label.
- *
- * You can either set it to a string, or you can
- * set it to another label.
- *
- * If you set it to another label, it will snap the
- * pointers, and really set it to the root.
- */
-public class Label extends Object {
- private Label root = null;
- private String name = null;
-
- public Label( String name ) {
- this.name = name;
- }
-
- public Label( Label root ) {
- this.root = root.getRoot();
- }
-
- public Label getRoot() {
- if (root == null) {
- return this;
- } else {
- root = root.getRoot();
- return root;
- }
- }
-
- public void setRoot(Label root) {
- if ( this.root == null ) {
- this.root = root.getRoot();
- } else {
- if ( root != this.root ) {
- this.root.setRoot( root.getRoot() );
- this.root = root.getRoot();
- }
- }
- }
-
- public String getName() {
- if (root != null) {
- root = root.getRoot();
- return root.getName();
- } else {
- return name;
- }
- }
-
- public void setName(String name) {
- if (root != null) {
- root.setName( name );
- } else {
- this.name = name;
- }
- }
-
- public String toString() {
- return getName();
- }
-
- public boolean equals( Object rhs ) {
- Label r = (Label) rhs;
- return r.getName() == this.getName();
- }
-}
diff --git a/src/java/org/apache/commons/graph/LabeledEdge.java b/src/java/org/apache/commons/graph/LabeledEdge.java
deleted file mode 100644
index 06e52c9..0000000
--- a/src/java/org/apache/commons/graph/LabeledEdge.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package org.apache.commons.graph;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-/**
- * Describes a labeled edge between two vertices of a graph.
- *
- * @version $Id: LabeledEdge.java,v 1.2 2002/01/16 20:38:28 jvanzyl Exp $
- * @author M. Dahm
- */
-public class LabeledEdge extends Edge {
- private String label;
-
- /**
- * Create edge with label.
- */
- public LabeledEdge(String l) {
- label = l;
- }
-
- /**
- * @param verbose toggle output format
- * @return String representation.
- */
- public String toString(int verbose) {
- return label;
- }
-
- public final String getLabel() { return label; }
- public final void setLabel(String l) { label = l; }
-}
diff --git a/src/java/org/apache/commons/graph/LabeledVertex.java b/src/java/org/apache/commons/graph/LabeledVertex.java
deleted file mode 100644
index 9259b7c..0000000
--- a/src/java/org/apache/commons/graph/LabeledVertex.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package org.apache.commons.graph;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-/**
- * Describes a labeled vertex of a graph.
- *
- * @version $Id: LabeledVertex.java,v 1.2 2002/01/16 20:38:28 jvanzyl Exp $
- * @author M. Dahm
- */
-public class LabeledVertex extends Vertex {
- private String label;
-
- /**
- * Create vertex with label l
- */
- public LabeledVertex(String l) {
- label = l;
- }
-
- /**
- * @param verbose toggle output format
- * @return String representation.
- */
- public String toString(int verbose) {
- return label;
- }
-
- public final String getLabel() { return label; }
-}
diff --git a/src/java/org/apache/commons/graph/Sequential.java b/src/java/org/apache/commons/graph/Sequential.java
deleted file mode 100644
index 173cf4e..0000000
--- a/src/java/org/apache/commons/graph/Sequential.java
+++ /dev/null
@@ -1,116 +0,0 @@
-package org.apache.commons.graph;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-import org.apache.commons.graph.visitor.Visitor;
-
-/**
- * Visit graph in sequential order, i.e. in the order returned by Graph.getVertices().
- *
- * @version $Id: Sequential.java,v 1.4 2002/01/16 20:38:28 jvanzyl Exp $
- * @author M. Dahm
- */
-public final class Sequential
- extends TraversalOrder
-{
- /**
- * Depth first search algorithm.
- *
- * @param v visitor object to apply when discovering and finishing a vertex or edge
- */
- public Sequential(Visitor v) {
- super(v);
- }
-
- /**
- * Visit graph in sequential order
- *
- * @param g graph to traverse
- * @param start vertex to start at (or null, starts at first vertex then)
- */
- public void start(Graph g, Vertex start) {
- int size = g.getNoVertices();
- Vertex[] vertices = g.getVertexArray();
- int index = 0;
-
- visitor.discoverGraph(g);
-
- /* Initially mark all vertices as WHITE
- */
- for(int i=0; i < size; i++) {
- vertices[i].setColor(GraphConstants.WHITE);
- if(vertices[i] == start)
- index = i;
- }
-
- for(int i=0; (i < size) && !stopped; i++) {
- Vertex v = vertices[index++ % size];
-
- visitor.discoverVertex(v);
- v.setColor(GraphConstants.GRAY);
-
- Edge[] edges = g.getEdgeArray(v);
- for(int j=0; j < edges.length; j++) {
- visitor.discoverEdge(edges[j]);
- visitor.finishEdge(edges[j]);
- }
-
- visitor.finishVertex(v);
- v.setColor(GraphConstants.BLACK);
- }
-
- visitor.finishGraph(g);
- }
-}
diff --git a/src/java/org/apache/commons/graph/TraversalOrder.java b/src/java/org/apache/commons/graph/TraversalOrder.java
deleted file mode 100644
index c8674d9..0000000
--- a/src/java/org/apache/commons/graph/TraversalOrder.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package org.apache.commons.graph;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-import org.apache.commons.graph.visitor.Visitor;
-
-/**
- * Class takes a visitor "piggy-backed" and applies it to all nodes
- * and edges. The traversal order implemented by children of this
- * class may be Depth-first or Breadth-first search, e.g..
- *
- * This relates to the "Strategy" design pattern.
- *
- * @version $Id: TraversalOrder.java,v 1.4 2002/01/16 20:38:28 jvanzyl Exp $
- * @author M. Dahm
- * @see DFS
- * @see BFS
- * @see Sequential
-*/
-public abstract class TraversalOrder
-{
- protected Visitor visitor;
- protected Graph graph;
- protected boolean stopped;
- protected boolean traverse_complete_graph;
-
- /**
- * Depth first search algorithm.
- *
- * @param v visitor object to apply when discovering and finishing a vertex or edge
- * @param traverse_all traverse the complete graph or stop after finishing all nodes reachable
- * from the start
- */
- public TraversalOrder(Visitor v, boolean traverse_all) {
- visitor = v;
- traverse_complete_graph = traverse_all;
- }
-
- public TraversalOrder(Visitor v) {
- this(v, true);
- }
-
- /**
- * Start traversal.
- *
- * @param g graph to traverse
- * @param start vertex to start at (or null, starts at some vertex then)
- * @param all_vertices visit all vertices or just those reache from start
- */
- public abstract void start(Graph g, Vertex start);
-
- /** May be called to stop traversal, e.g. if a searched node has been found.
- */
- public void stop() {
- stopped = true;
- }
-
- /**
- * Depth first search algorithm starting at some vertex.
- *
- * @param g graph to traverse
- */
- public void start(Graph g) {
- start(g, null);
- }
-}
diff --git a/src/java/org/apache/commons/graph/UndirectedGraph.java b/src/java/org/apache/commons/graph/UndirectedGraph.java
deleted file mode 100644
index 760dd8a..0000000
--- a/src/java/org/apache/commons/graph/UndirectedGraph.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package org.apache.commons.graph;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-/**
- * UndirectedGraph
- *
- * This represents graphs where edges go both ways.
- */
-public class UndirectedGraph
- extends Graph
-{
- public UndirectedGraph() {
- super( false );
- }
-}
diff --git a/src/java/org/apache/commons/graph/VQueue.java b/src/java/org/apache/commons/graph/VQueue.java
deleted file mode 100644
index a5ecdd0..0000000
--- a/src/java/org/apache/commons/graph/VQueue.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package org.apache.commons.graph;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-/**
- * Implements a simple first-in, first-out queue of vertices of fixed size.
- * Can be extended, e.g., to implement a priority queue, so that the traversal
- * order of the BFS algorithm may be influenced.
- *
- * @version $Id: VQueue.java,v 1.2 2002/01/16 20:38:28 jvanzyl Exp $
- * @author M. Dahm
- */
-public class VQueue {
- protected Vertex[] vertices;
- protected int left, right;
-
- public VQueue(int s) {
- vertices = new Vertex[s];
- }
-
- public void enqueue(Vertex v) { vertices[right++] = v; }
- public Vertex dequeue() { return vertices[left++]; }
- public Vertex head() { return vertices[left]; }
- public boolean empty() { return right <= left; }
-}
diff --git a/src/java/org/apache/commons/graph/VStack.java b/src/java/org/apache/commons/graph/VStack.java
deleted file mode 100644
index 9cd3068..0000000
--- a/src/java/org/apache/commons/graph/VStack.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package org.apache.commons.graph;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-/**
- * Implements a simple first-in, last-out stack of vertices of fixed size.
- *
- * @version $Id: VStack.java,v 1.3 2002/01/16 20:38:28 jvanzyl Exp $
- * @author M. Dahm
- */
-public final class VStack {
- private Vertex[] vertices;
- private int top;
-
- public VStack(int s) {
- vertices = new Vertex[s];
- }
-
- public final void push(Vertex v) { vertices[top++] = v; }
- public final Vertex pop() { return vertices[--top]; }
- public final Vertex top() { return vertices[top - 1]; }
- public final boolean empty() { return top <= 0; }
-}
diff --git a/src/java/org/apache/commons/graph/Vertex.java b/src/java/org/apache/commons/graph/Vertex.java
deleted file mode 100644
index 0e11093..0000000
--- a/src/java/org/apache/commons/graph/Vertex.java
+++ /dev/null
@@ -1,199 +0,0 @@
-package org.apache.commons.graph;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-import java.io.Serializable;
-
-import org.apache.commons.graph.visitor.Visitor;
-
-/**
- * Describes a vertex of a graph.
- *
- * @version $Id: Vertex.java,v 1.4 2002/01/16 20:38:28 jvanzyl Exp $
- * @author M. Dahm
- */
-public class Vertex
- implements Graphable,Cloneable,Serializable
-{
- private int ident; // unique number, i.e. identifier
- private static int counter; // produce default numbers
-
- /** Useful variables for graph algorithms, calculated by DFS.
- * @see DFS
- */
- private int dtime, ftime;
- private int color; // Color of vertex during traversal
- private Vertex pred; // Predecessor of vertex
- private int distance; // (Shortest) path to given root node (BFS)
-
- /**
- * Create vertex with default identifier.
- */
- public Vertex() {
- ident = counter++;
- }
-
- /**
- * @return ident, i.e. identifier of this node
- */
- public final int getIdent() { return ident; }
-
- /**
- * @return number of created vertices
- */
- public static final int getCounter() { return counter; }
-
- /**
- * @return String representation.
- */
- public String toString() {
- return toString(GraphConstants.PLAIN);
- }
-
- /**
- * @return name to be used in output.
- */
- public String getName()
- {
- return toString();
- }
-
- /**
- * @param verbose toggle output format
- * @return String representation.
- */
- public String toString(int verbose) {
- switch(verbose) {
- case GraphConstants.VERBOSE: case GraphConstants.TALKATIVE:
- return "Vertex(" + ident + ", pred=" +
- ((pred == null)? "null" : ("" + pred.ident)) +
- ", discovery=" + dtime + ", finishing=" + ftime +
- ", distance=" + distance + ")";
-
- case GraphConstants.V_VERBOSE: case GraphConstants.V_TALKATIVE:
- return "Vertex(" + ident + ")\npred=" +
- ((pred == null)? "null" : ("" + pred.ident)) +
- "\ndiscovery=" + dtime + "\nfinishing=" + ftime +
- "\ndistance=" + distance;
-
- case GraphConstants.PLAIN: case GraphConstants.V_PLAIN: default:
- return "Vertex(" + ident + ")";
- }
- }
-
- /**
- * Computed by DFS, BFS or other visitors
- * @see Visitor
- */
- public int getDiscoveryTime() { return dtime; }
-
- /**
- * Computed by DFS, BFS or other visitors
- * @see Visitor
- */
- public int getFinishingTime() { return ftime; }
-
- /**
- * Computed by DFS, BFS or other visitors
- * @see Visitor
- * @deprecated use Graph.getPredecessors
- */
- public Vertex getPredecessor() { return pred; }
-
- /**
- * Computed by DFS, BFS or other visitors
- * @see Visitor
- * @return distance from start vertex (No. edges in between)
- * @see BFSVisitor
- */
- public int getDistance() { return distance; }
-
- /**
- * May be set only by classes of this package, Visitor in particular.
- */
- public void setDistance(int d) { distance = d; }
- public void setDiscoveryTime(int d) { dtime = d; }
- public void setFinishingTime(int f) { ftime = f; }
- public void setColor(int c) { color = c; }
- public int getColor() { return color; }
- public void setPredecessor(Vertex p) { pred = p; }
-
- /**
- * Access for visitors
- */
- public void accept(Visitor v) { v.discoverVertex(this); }
-
- /**
- * @return deep copy
- */
- public Vertex copy() {
- try {
- return (Vertex)clone();
- }
- catch(CloneNotSupportedException e) {}
-
- return null;
- }
-
- /** Check for equality.
- */
- public boolean equals(Object o) {
- if(!(o instanceof Vertex))
- return false;
-
- Vertex v = (Vertex)o;
- return v.ident == ident;
- }
-}
diff --git a/src/java/org/apache/commons/graph/WeightedEdge.java b/src/java/org/apache/commons/graph/WeightedEdge.java
deleted file mode 100644
index b4ca1f9..0000000
--- a/src/java/org/apache/commons/graph/WeightedEdge.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package org.apache.commons.graph;
-
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-/**
- * Describes an edge with a weight.
- *
- * @version $Id: WeightedEdge.java,v 1.3 2002/01/16 20:38:28 jvanzyl Exp $
- * @author M. Dahm
- */
-public class WeightedEdge
- extends Edge
- implements Comparable
-{
- private int weight;
-
- /**
- * Create edge with a weight.
- */
- public WeightedEdge(int w) {
- weight = w;
- }
-
- /**
- * @param verbose toggle output format
- * @return String representation.
- */
- public String toString(int verbose) {
- switch(verbose) {
- case GraphConstants.TALKATIVE: case GraphConstants.V_TALKATIVE:
- return "WeightedEdge(" + getIdent() + "\nweight=" + weight + ")";
- default:
- return "" + weight;
- }
- }
-
- public void addToWeight(int w) { weight += w; }
- public void setWeight(int weight) { this.weight = weight; }
- public int getWeight() { return weight; }
-
- public int compareTo( Object o ) {
- if (getWeight() > ((WeightedEdge) o).getWeight()) return 1;
- if (getWeight() < ((WeightedEdge) o).getWeight()) return -1;
- return 0;
- }
-}
diff --git a/src/java/org/apache/commons/graph/algo/BackEdges.java b/src/java/org/apache/commons/graph/algo/BackEdges.java
deleted file mode 100644
index e702a48..0000000
--- a/src/java/org/apache/commons/graph/algo/BackEdges.java
+++ /dev/null
@@ -1,114 +0,0 @@
-package org.apache.commons.graph.algo;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-import org.apache.commons.graph.*;
-import org.apache.commons.graph.visitor.DefaultVisitor;
-import org.apache.commons.graph.exception.BackEdgeException;
-
-import java.util.Set;
-import java.util.HashSet;
-
-/**
- * FindBackEdges
- *
- * This algorithm takes a directed graph, and determines
- * where the Graph edges are.
- *
- * It uses the Visitor pattern.
- */
-public class BackEdges
-{
- private static BackEdges _instance = new BackEdges();
-
- private BackEdges() { }
-
- private class BackEdgeCollector
- extends DefaultVisitor
- {
- private Graph visitingGraph = null;
- private Set backEdges = new HashSet();
-
- public BackEdgeCollector() { }
-
- public void discoverGraph( Graph g ) {
- visitingGraph = g;
- }
-
- public void discoverEdge( Edge e ) {
- Vertex target = visitingGraph.getTarget( e );
- if (target.getColor() != GraphConstants.WHITE) {
- backEdges.add( e );
- }
- }
-
- public Set getBackEdges() {
- return backEdges;
- }
- }
-
- public Set getBackEdges( DirectedGraph g,
- Vertex start)
- throws BackEdgeException
- {
- BackEdgeCollector bec = new BackEdgeCollector();
- bec.visit( g, start );
- return bec.getBackEdges();
- }
-
- public static BackEdges getInstance() {
- return _instance;
- }
-}
diff --git a/src/java/org/apache/commons/graph/algo/MinimumSpanningForest.java b/src/java/org/apache/commons/graph/algo/MinimumSpanningForest.java
deleted file mode 100644
index 257dc63..0000000
--- a/src/java/org/apache/commons/graph/algo/MinimumSpanningForest.java
+++ /dev/null
@@ -1,151 +0,0 @@
-package org.apache.commons.graph.algo;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-import org.apache.commons.graph.*;
-import org.apache.commons.collections.*;
-
-import java.util.Map;
-import java.util.List;
-import java.util.Set;
-import java.util.HashMap;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-public class MinimumSpanningForest
- extends UndirectedGraph
-{
- private Map roots = new HashMap(); // LBL.getName() X V
- private Map vertexLabels = new HashMap(); // V X LBL
- private boolean isMin = true;
- private Graph original = null;
-
- private MinimumSpanningForest() {
- super();
- }
-
- private MinimumSpanningForest( boolean isMinimum ) {
- isMin = isMinimum;
- }
-
- private void calculate( Graph g ) {
- PriorityQueue edgeHeap =
- new BinaryHeap(g.getEdges().size(), isMin);
-
- Iterator i = g.getEdges().iterator();
- while (i.hasNext()) {
- edgeHeap.insert( (Comparable) i.next());
- }
-
- Vertex[] vertices = g.getVertexArray();
- for (int j = 0; j < vertices.length; j++) {
- Label newLabel = new Label("" + j);
-
- roots.put( newLabel.getName(), newLabel );
- vertexLabels.put( vertices[j], newLabel );
- addVertex( vertices[j] );
- }
-
- while (!edgeHeap.isEmpty()) {
- Edge nextEdge = (Edge) edgeHeap.pop();
- Vertex source = g.getSource( nextEdge );
- Vertex target = g.getTarget( nextEdge );
- Label srcLabel = (Label) vertexLabels.get( source );
- Label tgtLabel = (Label) vertexLabels.get( target );
-
- // System.err.println("TRYING: " + nextEdge +
- // " FROM " + srcLabel +
- // " TO " + tgtLabel );
-
- if (!srcLabel.equals( tgtLabel )) {
- // System.err.println("UNIONING.");
- // Add the edge to the forrest.
- String oldLabel = tgtLabel.getName();
- roots.remove( oldLabel );
- tgtLabel.setRoot( srcLabel );
-
- addEdge( source, target, nextEdge );
- }
- }
- }
-
- public Set getTreeRoots() {
- return roots.entrySet();
- }
-
- public static MinimumSpanningForest
- getMinimumSpanningForest( Graph g )
- {
- return getMinimumSpanningForest( g, true );
- }
-
- public static MinimumSpanningForest
- getMinimumSpanningForest( Graph g,
- boolean isMin) {
- MinimumSpanningForest msf =
- new MinimumSpanningForest( isMin );
- msf.calculate( g );
- return msf;
- }
-
- public static MinimumSpanningForest getMSF( Graph g ) {
- return getMinimumSpanningForest( g );
- }
-
- public static MinimumSpanningForest getMSF( Graph g,
- boolean isMin) {
- return getMinimumSpanningForest( g, isMin );
- }
-}
diff --git a/src/java/org/apache/commons/graph/algo/Sort.java b/src/java/org/apache/commons/graph/algo/Sort.java
deleted file mode 100644
index 8fcd074..0000000
--- a/src/java/org/apache/commons/graph/algo/Sort.java
+++ /dev/null
@@ -1,109 +0,0 @@
-package org.apache.commons.graph.algo;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-import org.apache.commons.graph.*;
-import org.apache.commons.graph.visitor.DefaultVisitor;
-
-import java.util.List;
-import java.util.LinkedList;
-
-/**
- * Sort
- *
- * This class holds things such as a Topological Sort.
- * If there are any other good sorts needed for graphs,
- * maybe they should be put in here.
- */
-public class Sort
-{
- private static Sort _instance = new Sort();
-
- private class TopoVisitor extends DefaultVisitor {
- private List vertices = new LinkedList();
-
- public TopoVisitor() { }
-
- public void discoverGraph( Graph g ) {
- vertices = new LinkedList();
- }
-
- public void finishVertex( Vertex v ) {
- vertices.add( 0, v );
- }
-
- public void visit( DirectedGraph g ) {
- DFS dfs = new DFS( this, true );
- dfs.start( g, null );
- }
-
- public List getVertices() {
- return vertices;
- }
- }
-
- public List topologicalSort( DirectedGraph dg ) {
- TopoVisitor visitor = new TopoVisitor();
- visitor.visit( dg );
- return visitor.getVertices();
- }
-
- private Sort() { }
-
- public static Sort getInstance() {
- return _instance;
- }
-
-}
diff --git a/src/java/org/apache/commons/graph/exception/BackEdgeException.java b/src/java/org/apache/commons/graph/exception/BackEdgeException.java
deleted file mode 100644
index 95e2ec8..0000000
--- a/src/java/org/apache/commons/graph/exception/BackEdgeException.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package org.apache.commons.graph.exception;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-/**
- * BackEdgeException
- *
- * This exception is thrown when an algorithm is expecting
- * a DAG, and it has a Back Edge on it.
- *
- * Try to remove the Back Edge, and do it again.
- */
-public class BackEdgeException
- extends GraphException
-{
- public BackEdgeException() {
- super("Not a DAG. Back Edge detected.");
- }
-
- public BackEdgeException( String msg ) {
- super( msg );
- }
-}
diff --git a/src/java/org/apache/commons/graph/exception/GraphException.java b/src/java/org/apache/commons/graph/exception/GraphException.java
deleted file mode 100644
index 56b05a0..0000000
--- a/src/java/org/apache/commons/graph/exception/GraphException.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package org.apache.commons.graph.exception;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-/**
- * GraphException
- *
- * This is a generic exception
- * which superclasses all Graph exceptions.
- */
-public class GraphException extends Exception
-{
- public GraphException() {
- super();
- }
-
- public GraphException( String msg ) {
- super( msg );
- }
-}
diff --git a/src/java/org/apache/commons/graph/util/DependencyResolver.java b/src/java/org/apache/commons/graph/util/DependencyResolver.java
deleted file mode 100644
index 99f5ff2..0000000
--- a/src/java/org/apache/commons/graph/util/DependencyResolver.java
+++ /dev/null
@@ -1,252 +0,0 @@
-package org.apache.commons.graph.util;
-
-/**
- * What is transitive closure?
- *
- * Consider a directed graph G=(V,E), where V is the set of vertices and E is the
- * set of edges. The transitive closure of G is a graph G+ = (V,E+) such
- * that for all v,w in V there is an edge (v,w) in E+ if and only if
- * there is a non-null path from v to w in G.
- */
-
-// V = { a, b, c, d, e, f }
-// E = { (a,b), (c,d), (e,f) }
-// G = (V,E)
-
-import java.io.FileOutputStream;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.graph.DFS;
-import org.apache.commons.graph.Graph;
-import org.apache.commons.graph.Graphable;
-import org.apache.commons.graph.LabeledVertex;
-import org.apache.commons.graph.Vertex;
-import org.apache.commons.graph.visitor.DependencyVisitor;
-import org.apache.commons.graph.visualize.GraphMLVisualizer;
-
-public class DependencyResolver
-{
- /**
- * Graph of the entities for which the dependencies
- * must be resolved.
- */
- private Graph graph;
-
- private Map vertices;
-
- /**
- * Default constructor
- */
- public DependencyResolver()
- {
- // Create a directed graph.
- graph = new Graph(true);
-
- // Create a map to collapse duplicate vertices.
- // This should be handled in the graph package but
- // I will take care of it here for now.
- vertices = new HashMap();
- }
-
- /**
- * Return a list of sorted dependencies given a starting
- * vertex.
- *
- * @param g Starting vertex in the form of a Graphable object.
- * @return A list of Graphable objects in sorted dependency order.
- */
- public List getSortedDependencies(Graphable g)
- {
- // Create the DFS
- DependencyVisitor visitor = new DependencyVisitor();
- DFS dfs = new DFS(visitor);
- dfs.start(graph,(Vertex)g);
- return visitor.getSortedDependencies();
- }
-
- /**
- * Return a list of sorted dependencies given a starting
- * vertex.
- *
- * @param g Starting vertex in the form of a String object.
- * @return A list of Strings in sorted dependency order.
- */
- public List getSortedDependencies(String g)
- {
- LabeledVertex start = (LabeledVertex) vertices.get(g);
- List l = getSortedDependencies(start);
- ArrayList sl = new ArrayList();
-
- for (Iterator i = l.iterator(); i.hasNext();)
- {
- sl.add(((Graphable)i.next()).getName());
- }
- return sl;
- }
-
- /**
- * Remove all the vertices and edges from the graph.
- */
- public void reset()
- {
- graph.reset();
- }
-
- /**
- * Return a String representation of all the vertices
- * present in the graph.
- *
- * @return String representation of the vertices in the graph.
- */
- public String getVerticesString()
- {
- Vertex[] va = graph.getVertexArray();
- StringBuffer sb = new StringBuffer();
-
- for (int i = 0; i < va.length; i++)
- {
- sb.append(va[i].toString());
- }
-
- return sb.toString();
- }
-
- /**
- * Given a Graphable object which is our starting vertex
- * and a list of dependencies, a List of Graphables, we
- * will create the requisite graph.
- *
- * @param g The starting vertex
- * @param dependencies List of Graphable dependencies
- */
- public void addGraphable(String g, List dependencies)
- {
- LabeledVertex startingVertex = (LabeledVertex) vertices.get(g);
- if (startingVertex == null)
- {
- // Create a labeled vertex with our starting vertex g.
- startingVertex = new LabeledVertex(g);
- vertices.put(g, startingVertex);
- graph.addVertex(startingVertex);
- }
-
- for (Iterator i = dependencies.iterator(); i.hasNext();)
- {
- // Create a vertex and add to the graph.
- String dependencyName = (String) i.next();
-
- // Look to see if this vertex is already contained in
- // 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.
- LabeledVertex dependency = (LabeledVertex)vertices.get(dependencyName);
- if (dependency == null)
- {
- 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);
- }
- }
-
- /**
- * Given a Graphable object which is our starting vertex
- * and a list of dependencies, a List of Graphables, we
- * will create the requisite graph.
- *
-
-* @param g The starting vertex
- * @param dependencies List of Graphable dependencies
- */
- public void addGraphable(Graphable g, List dependencies)
- {
- LabeledVertex startingVertex = (LabeledVertex) vertices.get(g.getName());
- if (startingVertex == null)
- {
- // Create a labeled vertex with our starting vertex g.
- startingVertex = new LabeledVertex(g.getName());
- vertices.put(g.getName(), startingVertex);
- graph.addVertex(startingVertex);
- }
-
- for (Iterator i = dependencies.iterator(); i.hasNext();)
- {
- // Create a vertex and add to the graph.
- Graphable dependencyName = (Graphable) i.next();
-
- // Look to see if this vertex is already contained in
- // 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.
- LabeledVertex dependency = (LabeledVertex)vertices.get(dependencyName.getName());
- if (dependency == null)
- {
- dependency = new LabeledVertex(dependencyName.getName());
- vertices.put(dependencyName.getName(), dependency);
- graph.addVertex(dependency);
- }
-
- // Create an edge between the starting vertex and
- // the dependency.
- graph.addEdge(startingVertex, dependency);
- }
- }
-
- public void printGraph(String file, Graphable start)
- throws Exception
- {
- GraphMLVisualizer v = new GraphMLVisualizer(new FileOutputStream(file),1);
- v.visualize(graph, (LabeledVertex)vertices.get(start.getName()));
- }
-
- 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/BFSVisitor.java b/src/java/org/apache/commons/graph/visitor/BFSVisitor.java
deleted file mode 100644
index 4fc7b3e..0000000
--- a/src/java/org/apache/commons/graph/visitor/BFSVisitor.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package org.apache.commons.graph.visitor;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-import org.apache.commons.graph.BFS;
-import org.apache.commons.graph.GraphConstants;
-import org.apache.commons.graph.Edge;
-import org.apache.commons.graph.Graph;
-import org.apache.commons.graph.Vertex;
-import org.apache.commons.graph.VStack;
-
-/**
- * Visit graph with BFS and compute predecessors during traversal as
- * well as the "distance" to the source node (number of edges in between).
- *
- * @version $Id: BFSVisitor.java,v 1.3 2002/01/16 20:38:29 jvanzyl Exp $
- * @author M. Dahm
- * @see BFS
- */
-public class BFSVisitor extends DefaultVisitor implements GraphConstants {
- private VStack stack; // Stack to remember predecessors
-
- public BFSVisitor() {}
-
- public void discoverGraph(Graph g) {
- int size = g.getNoVertices();
- Vertex[] vertices = g.getVertexArray();
-
- for(int i=0; i < size; i++) {
- vertices[i].setDistance(INFINITE);
- vertices[i].setPredecessor(null);
- }
-
- stack = new VStack(size);
- }
-
- public void discoverVertex(Vertex v) {
- if(stack.empty()) { // At start vertex, v == start
- v.setPredecessor(null);
- v.setDistance(0);
- }
- else {
- Vertex pred = stack.top();
- v.setPredecessor(pred);
- v.setDistance(pred.getDistance() + 1);
- }
-
- stack.push(v);
- }
-
- public void finishVertex(Vertex v) {
- stack.pop();
- }
-
- public void visit(Graph g, Vertex start) {
- new BFS(this).start(g, start);
- }
-}
diff --git a/src/java/org/apache/commons/graph/visitor/DFSVisitor.java b/src/java/org/apache/commons/graph/visitor/DFSVisitor.java
deleted file mode 100644
index da73a15..0000000
--- a/src/java/org/apache/commons/graph/visitor/DFSVisitor.java
+++ /dev/null
@@ -1,122 +0,0 @@
-package org.apache.commons.graph.visitor;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-import org.apache.commons.graph.Edge;
-import org.apache.commons.graph.Graph;
-import org.apache.commons.graph.Vertex;
-import org.apache.commons.graph.VStack;
-
-/**
- * Visit graph with DFS and compute predecessors during traversal as
- * well as discovery and finishing time of all vertices. Instances of
- * this class (and of course its descendants) may be passed to a DFS
- * object.
- *
- * @version $Id: DFSVisitor.java,v 1.3 2002/01/16 20:38:29 jvanzyl Exp $
- * @author M. Dahm
- * @see DFS
- */
-public class DFSVisitor extends DefaultVisitor {
-
- /**
- * Global time.
- */
- private int time;
-
- /**
- * Stack to remember predecessors.
- */
- private VStack stack;
-
- /**
- * Default constructor.
- */
- public DFSVisitor()
- {
- }
-
- public void discoverGraph(Graph g) {
- int size = g.getNoVertices();
- Vertex[] vertices = g.getVertexArray();
-
- for(int i=0; i < size; i++)
- {
- vertices[i].setPredecessor(null);
- }
-
- time = 0; // Reset timer
- stack = new VStack(size);
- }
-
- public void discoverVertex(Vertex v) {
- if(stack.empty()) // First node
- {
- v.setPredecessor(null);
- }
- else
- {
- v.setPredecessor(stack.top());
- }
-
- stack.push(v);
- v.setDiscoveryTime(time++);
- }
-
- public void finishVertex(Vertex v) {
- v.setFinishingTime(time++);
- stack.pop();
- }
-}
diff --git a/src/java/org/apache/commons/graph/visitor/DefaultVisitor.java b/src/java/org/apache/commons/graph/visitor/DefaultVisitor.java
deleted file mode 100644
index c577e65..0000000
--- a/src/java/org/apache/commons/graph/visitor/DefaultVisitor.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package org.apache.commons.graph.visitor;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-import org.apache.commons.graph.DFS;
-import org.apache.commons.graph.Edge;
-import org.apache.commons.graph.Graph;
-import org.apache.commons.graph.Vertex;
-
-/**
- * Empty Visitor, i.e. all visit methods do nothing.
- *
- * @version $Id: DefaultVisitor.java,v 1.2 2002/01/16 20:38:29 jvanzyl Exp $
- * @author M. Dahm
- */
-public class DefaultVisitor implements Visitor {
- protected DFS dfs;
-
- public DefaultVisitor() {}
-
- public void discoverGraph(Graph g) {}
- public void finishGraph(Graph g) {}
- public void discoverVertex(Vertex v) {}
- public void finishVertex(Vertex v) { }
- public void discoverEdge(Edge e) {}
- public void finishEdge(Edge e) {}
-
- public void visit(Graph g, Vertex start) {
- dfs = new DFS(this);
- dfs.start(g, start);
- }
-}
diff --git a/src/java/org/apache/commons/graph/visitor/DependencyVisitor.java b/src/java/org/apache/commons/graph/visitor/DependencyVisitor.java
deleted file mode 100644
index f202808..0000000
--- a/src/java/org/apache/commons/graph/visitor/DependencyVisitor.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package org.apache.commons.graph.visitor;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-import java.util.LinkedList;
-import java.util.List;
-
-import org.apache.commons.graph.Vertex;
-
-/**
- * Visit graph with DFS and compute predecessors during traversal as
- * well as discovery and finishing time of all vertices. Instances of
- * this class (and of course its descendants) may be passed to a DFS
- * object.
- *
- * @version $Id: DependencyVisitor.java,v 1.3 2002/01/16 20:38:29 jvanzyl Exp $
- * @author M. Dahm
- * @see DFS
- */
-public class DependencyVisitor
- extends DFSVisitor
-{
- /**
- * Dependencies in sorted order. The order in which
- * the vertices are finished is the order in which
- * they must be processed by the mechanism using
- * the dependency list.
- */
- LinkedList sortedDependencies;
-
- /**
- * Default constructor.
- */
- public DependencyVisitor()
- {
- sortedDependencies = new LinkedList();
- }
-
- public void finishVertex(Vertex v)
- {
- super.finishVertex(v);
- sortedDependencies.addLast(v);
- }
-
- public List getSortedDependencies()
- {
- return sortedDependencies;
- }
-}
diff --git a/src/java/org/apache/commons/graph/visitor/PrintVisitor.java b/src/java/org/apache/commons/graph/visitor/PrintVisitor.java
deleted file mode 100644
index 5e81fd3..0000000
--- a/src/java/org/apache/commons/graph/visitor/PrintVisitor.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package org.apache.commons.graph.visitor;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-import java.io.PrintWriter;
-
-import org.apache.commons.graph.DFS;
-import org.apache.commons.graph.Edge;
-import org.apache.commons.graph.Graph;
-import org.apache.commons.graph.Vertex;
-
-/**
- * Visit graph with depth first search and simply prints the current
- * vertices and edges as they are discovered. May be used with DFS, BFS,
- * Sequential or any other visitor. Uses DFS by default.
- *
- * @version $Id: PrintVisitor.java,v 1.3 2002/01/16 20:38:29 jvanzyl Exp $
- * @author M. Dahm
-*/
-public class PrintVisitor implements Visitor {
- private PrintWriter out;
- private int verbose;
-
- /**
- * Simply print vertex and edge contents, when visiting them.
- *
- * @param o stream to print to
- * @param v toggle verbosity of output
- * @see GraphConstants
- */
- public PrintVisitor(PrintWriter o, int v) {
- out = o;
- verbose = v;
- }
-
- public void discoverGraph(Graph g) {}
- public void finishGraph(Graph g) {}
- public void finishVertex(Vertex v) {}
- public void finishEdge(Edge e) {}
-
- public void discoverVertex(Vertex v) { out.println(v.toString(verbose)); }
- public void discoverEdge(Edge e) { out.println(e.toString(verbose)); }
-
- public void visit(Graph g, Vertex start) {
- new DFS(this).start(g, start);
- }
-}
diff --git a/src/java/org/apache/commons/graph/visitor/SCCVisitor.java b/src/java/org/apache/commons/graph/visitor/SCCVisitor.java
deleted file mode 100644
index b9bd200..0000000
--- a/src/java/org/apache/commons/graph/visitor/SCCVisitor.java
+++ /dev/null
@@ -1,175 +0,0 @@
-package org.apache.commons.graph.visitor;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-import java.util.Vector;
-
-import org.apache.commons.graph.DFS;
-import org.apache.commons.graph.Edge;
-import org.apache.commons.graph.Graph;
-import org.apache.commons.graph.Vertex;
-import org.apache.commons.graph.VStack;
-
-/**
- * Visit graph computing its "Strongly Connected Components" (SCC).
- *
- * @version $Id: SCCVisitor.java,v 1.2 2002/01/16 20:38:29 jvanzyl Exp $
- * @author M. Dahm
- * @see DFS
- */
-public class SCCVisitor implements Visitor {
- private int time; // Global time
- private VStack stack; // Stack to remember members of a SCC
- private Vector sccs; // Forest of SCCs
- private Graph graph;
- private Graph[] graphs;
- private int size;
-
- public SCCVisitor() {}
-
- public void discoverGraph(Graph g) {
- graph = g;
- size = g.getNoVertices();
- Vertex[] vertices = g.getVertexArray();
-
- for(int i=0; i < size; i++) {
- vertices[i].setDiscoveryTime(0);
- /* Should rather be setMyMinTime(), "abused" to remember local minimum
- */
- vertices[i].setFinishingTime(size * 2); // Invalidate
- }
-
- time = 0; // Reset timer
- stack = new VStack(size);
- sccs = new Vector();
- }
-
-
- public void discoverVertex(Vertex v) {
- int min = time++; // Clock tick
- v.setDiscoveryTime(min); // Remember time of discovery
- v.setFinishingTime(min); // Remember local minimum
- stack.push(v); // Push current node on stack
- }
-
- public void discoverEdge(Edge e) {}
-
- public void finishEdge(Edge e) {
- Vertex src = graph.getSource(e);
- Vertex target = graph.getTarget(e);
- int m = target.getFinishingTime();
-
- /* After recursion, test if the (white) vertex just visited has now a smaller
- * minium than the local one, i.e. if target.min < src.min && !target.isBlack().
- */
- if((m < src.getFinishingTime()) && (target.getDiscoveryTime() < size + 1))
- src.setFinishingTime(m);
- }
-
- public void finishVertex(Vertex v) {
- /* If the local minimum hasn't changed, i.e. if no vertices with smaller minimums
- * have been reached, this must be the root vertex of a SCC.
- */
- if(v.getFinishingTime() == v.getDiscoveryTime()) { // Root of SCC?
- Graph scc = new Graph(); // Gather nodes in subgraph
- Vertex p;
-
- do { // Pop all nodes belonging to this SCC subgraph
- p = stack.pop();
- scc.addVertex(p); // May have no edges, so put it first in there
- p.setDiscoveryTime(size * 2); // Invalidate, i.e. mark vertex as black
- } while(p != v);
-
- Vertex[] vertices = scc.getVertexArray();
- for(int j=0; j < vertices.length; j++) {
- p = vertices[j];
-
- Edge[] edges = graph.getEdgeArray(p);
- for(int i=0; i < edges.length; i++) { // Build up subgraph
- Edge e = edges[i];
- Vertex src = graph.getSource(e);
- Vertex target = graph.getTarget(e);
-
- // Add only edges that are within the subgraph
- if(scc.contains(src) && scc.contains(target))
- scc.addEdge(src, target, e);
- }
- }
-
- sccs.addElement(scc); // Add subgraph vectorto forest of subgraphs
- }
- }
-
- public void finishGraph(Graph g) {
- graphs = new Graph[sccs.size()];
- sccs.copyInto(graphs);
- }
-
- /**
- * @return all strongly connected components found during traversal
- */
- public final Graph[] getSCCs() { return graphs; }
-
- /**
- * Visit graph with DFS and find all its strongly connected components
- * which may be obtained with getSCCs().
- *
- * @param g graph to traverse
- * @param start where to start traversal
- */
- public void visit(Graph g, Vertex start) {
- new DFS(this).start(g, start);
- }
-}
diff --git a/src/java/org/apache/commons/graph/visitor/Visitor.java b/src/java/org/apache/commons/graph/visitor/Visitor.java
deleted file mode 100644
index f0a5a83..0000000
--- a/src/java/org/apache/commons/graph/visitor/Visitor.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package org.apache.commons.graph.visitor;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-import org.apache.commons.graph.Edge;
-import org.apache.commons.graph.Graph;
-import org.apache.commons.graph.Vertex;
-
-/**
- * Interface for visitor patterns.
- *
- * @version $Id: Visitor.java,v 1.2 2002/01/16 20:38:29 jvanzyl Exp $
- * @author M. Dahm
- */
-public interface Visitor {
- public void discoverGraph(Graph g); // may be also used as "visitGraph"
- public void finishGraph(Graph g);
-
- public void discoverVertex(Vertex v); // same as above
- public void finishVertex(Vertex v);
-
- public void discoverEdge(Edge e); // same as above
- public void finishEdge(Edge e);
-
- public void visit(Graph g, Vertex v); // Start visiting graph g beginning at start
-}
diff --git a/src/java/org/apache/commons/graph/visualize/DaVinciVisualizer.java b/src/java/org/apache/commons/graph/visualize/DaVinciVisualizer.java
deleted file mode 100644
index d508a3b..0000000
--- a/src/java/org/apache/commons/graph/visualize/DaVinciVisualizer.java
+++ /dev/null
@@ -1,171 +0,0 @@
-package org.apache.commons.graph.visualize;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-import java.io.OutputStream;
-
-import org.apache.commons.graph.GraphConstants;
-import org.apache.commons.graph.Edge;
-import org.apache.commons.graph.Graph;
-import org.apache.commons.graph.Sequential;
-import org.apache.commons.graph.Vertex;
-
-/**
- * Visualizes directed graphs into the
- *
- * DaVinci format. It can only be used for directed graphs and does not support
- * labeled edges very well, unfortunately. They have to be simulated via dummy vertices.
- *
- * Traverses graph with the Sequential visitor, since it uses invariants of that algorithm.
- *
- * @version $Id: DaVinciVisualizer.java,v 1.3 2002/01/16 20:38:30 jvanzyl Exp $
- * @author M. Dahm
- */
-public class DaVinciVisualizer extends GraphVisualizer implements GraphConstants {
- private Graph graph;
- private int no_edges, edges;
- private int no_vertices, vertices;
-
- /**
- * @param out stream to print output to
- * @param verbose toggle verbosity of output
- */
- public DaVinciVisualizer(OutputStream out, int verbose) {
- super(out, verbose);
- }
-
- public void discoverGraph(Graph g) {
- graph = g;
-
- no_vertices = g.getNoVertices();
- vertices = 0;
- out.println("[");
- }
-
- public void finishGraph(Graph g) {
- out.println("]");
- out.close();
- }
-
- public void discoverVertex(Vertex v) {
- String label = convertString(v.toString(verbose));
- //System.out.println("vertex:" + v.getIdent() + ":" + v);
-
- println(1, "l(\"" + v.getIdent() + "\",");
- println(1, "n(\"anything\", [");
- println(2, "a(\"OBJECT\", \"" + label + "\"),");
- println(2, "a(\"FONTSTYLE\", \"bold\"),");
- println(2, "a(\"FONTFAMILY\", \"courier\")],");
- println(1, "["); // array of successor nodes
-
- no_edges = graph.getNoEdges(v);
- edges = 0;
- }
-
- public void finishVertex(Vertex v) {
- String str = (vertices < no_vertices - 1)? "]))," : "]))";
- println(1, str);
- vertices++;
- }
-
- private static int label_counter=0;
-
- private final String getEdgeAttribute() {
- if(graph.isDirected())
- return "";
- else
- return "a(\"_DIR\", \"none\"";
- }
-
- public void discoverEdge(Edge e) {
- int u = graph.getSource(e).getIdent();
- int v = graph.getTarget(e).getIdent();
- String label = convertString(e.toString(verbose));
-
- if(label.equals("")) {
- print(2, "l(\"" + u + "->" + v + "\", e(\"\", [" + getEdgeAttribute() +
- "], r(\"" + v + "\")))");
- } else { // Simulate labeled edge with intermediate node
- String dummy = "label" + label_counter++; // Dummy name for intermediate node
-
- print(2, "l(\"" + u + "->" + dummy + "\", e(\"\", [a(\"_DIR\", \"none\")], " +
- "l(\"" + dummy + "\", n(\"anything\",[a(\"OBJECT\", \"" + label +
- "\"), a(\"_GO\", \"text\")], [l(\"" + dummy + "->" + v +
- "\", e(\"\",[" + getEdgeAttribute() + "], r(\"" + v + "\")))]))))");
- //System.out.println(graph.getTarget(e).getIdent() + ":" + graph.getTarget(e));
- }
- }
-
- public void finishEdge(Edge e) {
- if(edges < no_edges - 1)
- out.println(", ");
- else
- out.print('\n');
-
- edges++;
- }
-
- /**
- * Visualize graph g with this Visualizer.
- *
- * @param g graph to visualize
- * @param start node to start at
- */
- public void visualize(Graph g, Vertex start) {
- new Sequential(this).start(g);
- }
-}
-
-
diff --git a/src/java/org/apache/commons/graph/visualize/GMLVisualizer.java b/src/java/org/apache/commons/graph/visualize/GMLVisualizer.java
deleted file mode 100644
index 381a7df..0000000
--- a/src/java/org/apache/commons/graph/visualize/GMLVisualizer.java
+++ /dev/null
@@ -1,163 +0,0 @@
-package org.apache.commons.graph.visualize;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-import java.io.OutputStream;
-
-import org.apache.commons.graph.GraphConstants;
-import org.apache.commons.graph.DFS;
-import org.apache.commons.graph.Edge;
-import org.apache.commons.graph.Graph;
-import org.apache.commons.graph.Vertex;
-
-/**
- * Visualizes graphs into the GML
- * format.
- *
- * @version $Id: GMLVisualizer.java,v 1.3 2002/01/16 20:38:30 jvanzyl Exp $
- * @author M. Dahm
- */
-public class GMLVisualizer extends GraphVisualizer {
- private Graph graph;
-
- /**
- * @param out stream to print output to
- * @param verbose toggle verbosity of output
- */
- public GMLVisualizer(OutputStream out, int verbose) {
- super(out, verbose);
- }
-
- public void discoverGraph(Graph g) {
- String d = g.isDirected()? "1" : "0";
-
- graph = g;
-
- println(0, "graph [");
- println(1, "Creator\t \"GMLVisualizer\"");
- println(1, "id\t " + Vertex.getCounter()); // Make sure this is a unique number
- println(1, "directed\t " + d + "\n");
- }
-
- public void finishGraph(Graph g) {
- println(0, "]\n");
- out.close();
- }
-
- public void discoverVertex(Vertex v) {
- println(1, "node [");
- println(2, "id\t " + v.getIdent());
- println(2, "label");
-
- out.println("\"" + v.toString(verbose) + "\"");
-
- println(2, "graphics [");
- println(3, "type\t\t \"rectangle\"");
- println(3, "fill\t\t \"white\"");
- println(3, "outline\t\t \"black\"");
- println(3, "background\t \"blue\"");
- println(3, "foreground\t \"green\"");
- println(2, "]\n");
-
- println(2, "LabelGraphics [");
- println(3, "type\t \"text\"");
- println(3, "fill\t \"black\"");
- println(3, "justify\t \"left\"");
- println(2, "]\n");
-
- println(1, "]\n");
- }
-
- public void finishVertex(Vertex v) {}
-
- public void discoverEdge(Edge e) {
- int src = graph.getSource(e).getIdent();
- int target = graph.getTarget(e).getIdent();
-
- println(1, "edge [");
- println(2, "source\t " + src);
- println(2, "target\t " + target);
-
- println(2, "label");
- out.println("\"" + e.toString(verbose) + "\"");
-
- println(2, "graphics [");
-
- println(3, "fill\t \"black\"");
- //println(3, "fill\t\t \"white\"");
-
- println(3, "arrow\t \"last\"");
- println(2, "]\n");
-
- println(2, "LabelGraphics [");
- println(3, "type\t \"text\"");
- println(3, "fill\t \"black\"");
- println(2, "]\n");
-
- println(1, "]\n");
- }
-
- public void finishEdge(Edge e) {}
-
- /**
- * Visualize graph g with this Visualizer.
- *
- * @param g graph to visualize
- * @param start node to start at
- */
- public void visualize(Graph g, Vertex start) {
- new DFS(this).start(g, start);
- }
-}
diff --git a/src/java/org/apache/commons/graph/visualize/GraphMLVisualizer.java b/src/java/org/apache/commons/graph/visualize/GraphMLVisualizer.java
deleted file mode 100644
index 6afdc13..0000000
--- a/src/java/org/apache/commons/graph/visualize/GraphMLVisualizer.java
+++ /dev/null
@@ -1,127 +0,0 @@
-package org.apache.commons.graph.visualize;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-import java.io.OutputStream;
-
-import org.apache.commons.graph.GraphConstants;
-import org.apache.commons.graph.DFS;
-import org.apache.commons.graph.Edge;
-import org.apache.commons.graph.Graph;
-import org.apache.commons.graph.Vertex;
-
-/**
- * Visualizes graphs into the GML
- * format.
- *
- * @version $Id: GraphMLVisualizer.java,v 1.3 2002/01/16 20:38:30 jvanzyl Exp $
- * @author Jason van Zyl
- */
-public class GraphMLVisualizer
- extends GraphVisualizer
-{
- private Graph graph;
-
- /**
- * @param out stream to print output to
- * @param verbose toggle verbosity of output
- */
- public GraphMLVisualizer(OutputStream out, int verbose) {
- super(out, verbose);
- }
-
- public void discoverGraph(Graph g) {
- String d = g.isDirected()? "true" : "false";
-
- graph = g;
-
- println(0, "");
- println(0, "");
- }
-
- public void finishGraph(Graph g)
- {
- println(0, "");
- println(0, "");
- out.close();
- }
-
- public void discoverVertex(Vertex v)
- {
- println(0, "");
- }
-
- public void finishVertex(Vertex v) {}
-
- public void discoverEdge(Edge e)
- {
- String src = graph.getSource(e).toString();
- String target = graph.getTarget(e).toString();
-
- println(0, "");
- }
-
- public void finishEdge(Edge e) {}
-
- /**
- * Visualize graph g with this Visualizer.
- *
- * @param g graph to visualize
- * @param start node to start at
- */
- public void visualize(Graph g, Vertex start) {
- new DFS(this).start(g, start);
- }
-}
diff --git a/src/java/org/apache/commons/graph/visualize/GraphVisualizer.java b/src/java/org/apache/commons/graph/visualize/GraphVisualizer.java
deleted file mode 100644
index 9c0ee39..0000000
--- a/src/java/org/apache/commons/graph/visualize/GraphVisualizer.java
+++ /dev/null
@@ -1,171 +0,0 @@
-package org.apache.commons.graph.visualize;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-import java.io.*;
-import java.util.StringTokenizer;
-
-import org.apache.commons.graph.GraphConstants;
-import org.apache.commons.graph.Edge;
-import org.apache.commons.graph.Graph;
-import org.apache.commons.graph.Vertex;
-import org.apache.commons.graph.visitor.Visitor;
-
-/**
- * Abstract super class for drivers that visualize graphs
- * in different graph formats such as
- * GML or
- *
- * daVinci or
- * VCG.
- *
- * By default graphs are dumped in the native Java format, i.e. by using the
- * Serialization feature.
- *
- * @version $Id: GraphVisualizer.java,v 1.3 2002/01/16 20:38:30 jvanzyl Exp $
- * @author M. Dahm
- * @see DaVinciVisualizer
- * @see GMLVisualizer
- * @see VCGVisualizer
- */
-public class GraphVisualizer implements Visitor {
- protected OutputStream orig_out;
- protected PrintWriter out;
- protected int verbose;
-
- /**
- * @param out stream to print output to
- * @param verbose toggle verbosity
- */
- public GraphVisualizer(OutputStream out, int verbose) {
- orig_out = out;
- this.out = new PrintWriter(out, true);
- this.verbose = verbose;
- }
-
- /**
- * Print string using ident tab as prefix, used for nested calls
- *
- * @param indent how many tabs
- * @param s string to print
- */
- protected final void print(int indent, String s) {
- for(int i=0; i < indent; i++)
- out.print('\t');
-
- out.print(s);
- }
-
- /**
- * Print string using ident tab as prefix, used for nested calls
- *
- * @param indent how many tabs
- * @param s string to print
- */
- protected final void println(int indent, String s) {
- print(indent, s);
- out.print('\n');
- }
-
-
- /**
- * Escape all occurences of newline chars '\n' and quotes \"
- */
- protected static final String convertString(String label) {
- char[] ch = label.toCharArray();
- StringBuffer buf = new StringBuffer();
-
- for(int i=0; i < ch.length; i++) {
- switch(ch[i]) {
- case '\n':
- buf.append("\\n"); break;
- case '\"':
- buf.append("\\\""); break;
- case '\\':
- buf.append("\\\\"); break;
- default:
- buf.append(ch[i]); break;
- }
- }
-
- return buf.toString();
- }
-
- /**
- * Visualize graph g with this Visualizer.
- *
- * @param g graph to visualize
- * @param start node to start at
- */
- public void visualize(Graph g, Vertex start) {
- try {
- g.dump(orig_out);
- } catch(IOException e) {
- System.err.println(e);
- }
-
- out.close();
- }
-
- public void discoverGraph(Graph g) {}
- public void finishGraph(Graph g) {}
- public void discoverVertex(Vertex v) {}
- public void finishVertex(Vertex v) {}
- public void discoverEdge(Edge e) {}
- public void finishEdge(Edge e) {}
-
- public void visit(Graph g, Vertex start) {
- visualize(g, start);
- }
-}
diff --git a/src/java/org/apache/commons/graph/visualize/VCGVisualizer.java b/src/java/org/apache/commons/graph/visualize/VCGVisualizer.java
deleted file mode 100644
index 1d3d42e..0000000
--- a/src/java/org/apache/commons/graph/visualize/VCGVisualizer.java
+++ /dev/null
@@ -1,144 +0,0 @@
-package org.apache.commons.graph.visualize;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-import java.io.OutputStream;
-
-import org.apache.commons.graph.GraphConstants;
-import org.apache.commons.graph.DFS;
-import org.apache.commons.graph.Edge;
-import org.apache.commons.graph.Graph;
-import org.apache.commons.graph.Vertex;
-
-/**
- * Visualizes graphs into the VCG
- * format.
- *
- * @version $Id: VCGVisualizer.java,v 1.3 2002/01/16 20:38:30 jvanzyl Exp $
- * @author M. Dahm
- */
-public class VCGVisualizer extends GraphVisualizer {
- private Graph graph;
-
- /**
- * @param out stream to print output to
- * @param verbose toggle verbosity of output
- */
- public VCGVisualizer(OutputStream out, int verbose) {
- super(out, verbose);
- }
-
- public void discoverGraph(Graph g) {
- String d = g.isDirected()? "1" : "0";
-
- graph = g;
-
- println(0, "/* Created by VCGVisualizer */\n");
- println(0, "graph: {");
- println(1, "display_edge_labels: yes");
- println(1, "port_sharing: no");
- println(1, "manhattan_edges: yes");
- println(1, "straight_phase: yes");
- println(1, "priority_phase: yes");
- println(1, "node.color: white");
- println(1, "node.bordercolor: black");
- println(1, "node.textcolor: black");
- println(1, "node.shape: box");
- println(1, "node.textmode: left_justify");
- println(1, "edge.textcolor: black");
- println(1, "edge.color: black\n");
- }
-
- public void finishGraph(Graph g) {
- println(0, "}");
- out.close();
- }
-
- public void discoverVertex(Vertex v) {
- String label = convertString(v.toString(verbose));
-
- println(1, "node: {");
- println(2, "title: \"" + v.getIdent() + "\"");
- println(2, "label: \"" + label + "\"");
- println(1, "}");
- }
-
- public void finishVertex(Vertex v) {}
-
- public void discoverEdge(Edge e) {
- int src = graph.getSource(e).getIdent();
- int target = graph.getTarget(e).getIdent();
- String label = convertString(e.toString(verbose));
-
- println(1, "edge: {");
- println(2, "sourcename: \"" + src + "\"");
- println(2, "targetname: \"" + target + "\"");
- if(!label.equals(""))
- println(2, "label: \"" + label + "\"");
- println(1, "}");
- }
-
- public void finishEdge(Edge e) {}
-
- /**
- * Visualize graph g with this Visualizer.
- *
- * @param g graph to visualize
- * @param start node to start at
- */
- public void visualize(Graph g, Vertex start) {
- new DFS(this).start(g, start);
- }
-}
diff --git a/src/test/org/apache/commons/graph/algo/TestBackEdges.java b/src/test/org/apache/commons/graph/algo/TestBackEdges.java
deleted file mode 100644
index c6044e9..0000000
--- a/src/test/org/apache/commons/graph/algo/TestBackEdges.java
+++ /dev/null
@@ -1,215 +0,0 @@
-package org.apache.commons.graph.algo;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-import junit.framework.*;
-import org.apache.commons.graph.*;
-import org.apache.commons.graph.algo.BackEdges;
-import java.util.Set;
-import java.util.Iterator;
-
-/**
- * TestBackEdges
- *
- * JUnit test for testing the BackEdgeCollector
- * visitor.
- *
- * We need to test it on several types of
- * directed graphs.
- *
- * ---------------------
- *
- *
- * Can't test. Can't call DFS without a start
- * vertex.
- * ---------------------
- *
- * *
- *
- * ---------------------
- *
- * *->*
- *
- * --------------------
- *
- * *->*->*
- *
- * -------------------
- *
- * *-->*-->*
- * ^ |
- * \-/
- *
- * -------------------
- *
- * *-->*
- * ^ |
- * \-/
- *
- * -------------------
- *
- * That should be enough
- * for now.
- */
-public class TestBackEdges
- extends TestCase
-{
- public TestBackEdges( String testName ) {
- super( testName );
- }
-
- private Vertex A = new LabeledVertex("A");
- private Vertex B = new LabeledVertex("B");
- private Vertex C = new LabeledVertex("C");
-
- private Edge AB = new LabeledEdge("AB");
- private Edge AC = new LabeledEdge("AC");
-
- private Edge BA = new LabeledEdge("BA");
- private Edge BC = new LabeledEdge("BC");
-
- private Edge CA = new LabeledEdge("CA");
- private Edge CB = new LabeledEdge("CB");
-
- private BackEdges BACK = BackEdges.getInstance();
-
- public void testNoEdges() throws Throwable {
- DirectedGraph g = new DirectedGraph();
- g.addVertex( A );
-
- Set backEdges = BACK.getBackEdges(g, A);
-
- assert( "Edges not empty.",
- backEdges.size() == 0 );
- }
-
- public void testOneEdges() throws Throwable {
- DirectedGraph g = new DirectedGraph();
-
- g.addVertex( A );
- g.addVertex( B );
-
- g.addEdge( A, B, AB );
-
- Set backEdges = BACK.getBackEdges(g, A);
-
- assert( "Edges not empty.",
- backEdges.size() == 0 );
- }
-
- public void testCycle1() throws Throwable {
- DirectedGraph g = new DirectedGraph();
-
- g.addVertex( A );
- g.addVertex( B );
-
- g.addEdge( A, B, AB );
- g.addEdge( B, A, BA );
-
- Set backEdges = BACK.getBackEdges(g, A);
- assert( "BA not present",
- backEdges.contains(BA));
- }
-
- public void testCycle2() throws Throwable {
- DirectedGraph g = new DirectedGraph();
-
- g.addVertex( A );
- g.addVertex( B );
- g.addVertex( C );
-
- g.addEdge( A, B, AB );
- g.addEdge( B, C, BC );
- g.addEdge( C, A, CA );
-
- Set backEdges = BACK.getBackEdges(g, A);
- assert( "CA not present",
- backEdges.contains(CA));
- }
-
- public void testCycle3() throws Throwable {
- DirectedGraph g = new DirectedGraph();
-
- g.addVertex( A );
- g.addVertex( B );
- g.addVertex( C );
-
- g.addEdge( A, B, AB );
- g.addEdge( B, C, BC );
- g.addEdge( C, A, CA );
-
- Set backEdges = BACK.getBackEdges(g, C);
- assert( "BC not present",
- backEdges.contains(BC));
- }
-
- public void testCycle4() throws Throwable {
- DirectedGraph g = new DirectedGraph();
-
- g.addVertex( A );
- g.addVertex( B );
- g.addVertex( C );
-
- g.addEdge( A, B, AB );
- g.addEdge( B, C, BC );
- g.addEdge( C, B, CB );
-
- Set backEdges = BACK.getBackEdges(g, A);
- assert( "CB not present",
- backEdges.contains(CB));
- }
-
-
-}
diff --git a/src/test/org/apache/commons/graph/algo/TestMinimumSpanningForest.java b/src/test/org/apache/commons/graph/algo/TestMinimumSpanningForest.java
deleted file mode 100644
index 0138d98..0000000
--- a/src/test/org/apache/commons/graph/algo/TestMinimumSpanningForest.java
+++ /dev/null
@@ -1,346 +0,0 @@
-package org.apache.commons.graph.algo;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-import java.util.List;
-import java.util.Iterator;
-
-import org.apache.commons.graph.*;
-import junit.framework.*;
-
-/**
- * TestMinimumSpanningForrest
- *
- * This class tests the implementation of the MinimumSpanning
- * forrest.
- *
- * We are going to test the following graphs.
- *
- *
- *
- * ------------------
- *
- * *
- *
- * ------------------
- *
- * *----*
- *
- * ------------------
- *
- * * *
- *
- * ------------------
- *
- * *
- * |
- * *-*-*
- *
- * ------------------
- *
- * *
- * / \
- * * *
- * \ /
- * *
- *
- * -----------------
- *
- * *
- * /
- * *---*
- * \ /
- * *
- *
- * ----------------
- *
- * * *
- * | |
- * * *
- *
- * -----------------
- *
- * *
- *
- * *---*
- * \ /
- * *
- *
- * -----------------
- *
- * *
- * /|\
- * *-+-*
- * \|/
- * *
- *
- */
-public class TestMinimumSpanningForest
- extends TestCase
-{
- private Vertex A = new LabeledVertex("A");
- private Vertex B = new LabeledVertex("B");
- private Vertex C = new LabeledVertex("C");
- private Vertex D = new LabeledVertex("D");
-
- private Edge AB = new LabeledEdge("AB");
- private Edge AC = new LabeledEdge("AC");
- private Edge AD = new LabeledEdge("AD");
- private Edge BC = new LabeledEdge("BC");
- private Edge BD = new LabeledEdge("BD");
- private Edge CD = new LabeledEdge("CD");
-
- public TestMinimumSpanningForest( String name ) {
- super( name );
- }
-
- public void setUp() {
-
- }
-
- public void testNoVertex() throws Throwable {
- Graph g = new Graph();
- MinimumSpanningForest msf =
- MinimumSpanningForest.getMSF( g );
-
- assert("Wrong number of vertexes: " + msf.getNoVertices(),
- msf.getNoVertices() == 0);
- assert("Wrong number of edges: " + msf.getNoEdges(),
- msf.getNoEdges() == 0);
- }
-
- public void testOneVertex() throws Throwable
- {
- Graph g = new Graph();
- g.addVertex( A ); // A
-
- MinimumSpanningForest msf =
- MinimumSpanningForest.getMSF( g );
- assert("Wrong number of vertexes: " + msf.getNoVertices(),
- msf.getNoVertices() == 1);
- assert("Wrong number of edges: " + msf.getNoEdges(),
- msf.getNoEdges() == 0);
-
- }
-
- public void testTwoVertexNoEdge() throws Throwable
- {
- Graph g = new Graph();
- g.addVertex( A );
- g.addVertex( B ); // A B
-
- MinimumSpanningForest msf =
- MinimumSpanningForest.getMSF( g );
- assert("Wrong number of vertexes: " + msf.getNoVertices(),
- msf.getNoVertices() == 2);
- assert("Wrong number of edges: " + msf.getNoEdges(),
- msf.getNoEdges() == 0);
-
- assert("Wrong number of roots: " + msf.getTreeRoots().size(),
- msf.getTreeRoots().size() == 2);
-
- }
-
- public void testTwoVertexOneEdge() throws Throwable
- {
- Graph g = new Graph();
-
- g.addVertex( A );
- g.addVertex( B ); // A---B
- g.addEdge( A, B, AB );
-
- MinimumSpanningForest msf =
- MinimumSpanningForest.getMSF( g );
- assert("Wrong number of vertexes: " + msf.getNoVertices(),
- msf.getNoVertices() == 2);
- assert("Wrong number of edges: " + msf.getNoEdges(),
- msf.getNoEdges() == 1);
-
- assert("Wrong number of roots: " + msf.getTreeRoots().size(),
- msf.getTreeRoots().size() == 1);
- }
-
- public void testCycle1() throws Throwable
- {
- Graph g = new Graph();
-
- g.addVertex( A );
- g.addVertex( B );
- g.addVertex( C );
- g.addVertex( D );
-
- g.addEdge( A, B, AB ); // A A
- g.addEdge( B, C, BC ); // / \ / \
- g.addEdge( C, D, CD ); // B D ===> B D
- g.addEdge( A, D, AD ); // \ / \
- // C C
-
- MinimumSpanningForest msf =
- MinimumSpanningForest.getMSF( g );
- assert("Wrong number of vertexes: " + msf.getNoVertices(),
- msf.getNoVertices() == 4);
- assert("Wrong number of edges: " + msf.getNoEdges(),
- msf.getNoEdges() == 3);
-
- assert("Wrong number of roots: " + msf.getTreeRoots().size(),
- msf.getTreeRoots().size() == 1);
- }
-
- public void testCycle2() throws Throwable
- {
- Graph g = new Graph();
-
- g.addVertex( A );
- g.addVertex( B );
- g.addVertex( C );
- g.addVertex( D );
-
- g.addEdge( A, B, AB ); // A---D A---D
- g.addEdge( A, C, AC ); // / \ =====> / \
- g.addEdge( B, C, BC ); // B---C B C
- g.addEdge( A, D, AD );
-
- MinimumSpanningForest msf =
- MinimumSpanningForest.getMSF( g );
- assert("Wrong number of vertexes: " + msf.getNoVertices(),
- msf.getNoVertices() == 4);
- assert("Wrong number of edges: " + msf.getNoEdges(),
- msf.getNoEdges() == 3);
-
- assert("Wrong number of roots: " + msf.getTreeRoots().size(),
- msf.getTreeRoots().size() == 1);
- }
-
- public void testTwoTrees() throws Throwable
- {
- Graph g = new Graph();
-
- g.addVertex( A );
- g.addVertex( B );
- g.addVertex( C );
- g.addVertex( D );
-
- g.addEdge( A, B, AB ); // A---B
- g.addEdge( C, D, CD ); //
- // C---D
-
- MinimumSpanningForest msf =
- MinimumSpanningForest.getMSF( g );
- assert("Wrong number of vertexes: " + msf.getNoVertices(),
- msf.getNoVertices() == 4);
- assert("Wrong number of edges: " + msf.getNoEdges(),
- msf.getNoEdges() == 2);
-
- assert("Wrong number of roots: " + msf.getTreeRoots().size(),
- msf.getTreeRoots().size() == 2);
- }
-
- public void testTwoTreesOneCycle() throws Throwable
- {
- Graph g = new Graph();
-
- g.addVertex( A );
- g.addVertex( B );
- g.addVertex( C );
- g.addVertex( D );
-
- g.addEdge( A, B, AB ); // A D A D
- g.addEdge( B, C, BC ); // / \ ==> / \
- g.addEdge( A, C, AC ); // B---C B C
-
- MinimumSpanningForest msf =
- MinimumSpanningForest.getMSF( g );
-
- assert("Wrong number of vertexes: " + msf.getNoVertices(),
- msf.getNoVertices() == 4);
- assert("Wrong number of edges: " + msf.getNoEdges(),
- msf.getNoEdges() == 2);
-
- assert("Wrong number of roots: " + msf.getTreeRoots().size(),
- msf.getTreeRoots().size() == 2);
- }
-
- public void testConnected() throws Throwable
- {
- Graph g = new Graph();
-
- g.addVertex( A );
- g.addVertex( B );
- g.addVertex( C );
- g.addVertex( D );
-
- g.addEdge( A, B, AB ); // A A
- g.addEdge( A, C, AC ); // /|\ /|\
- g.addEdge( A, D, AD ); // B-+-C ==> B D C
- // \|/
- // D
-
- g.addEdge( B, C, BC );
- g.addEdge( B, D, BD );
-
- g.addEdge( C, D, CD );
-
- MinimumSpanningForest msf =
- MinimumSpanningForest.getMSF( g );
- assert("Wrong number of vertexes: " + msf.getNoVertices(),
- msf.getNoVertices() == 4);
- assert("Wrong number of edges: " + msf.getNoEdges(),
- msf.getNoEdges() == 3);
-
- assert("Wrong number of roots: " + msf.getTreeRoots().size(),
- msf.getTreeRoots().size() == 1);
- }
-
-}
diff --git a/src/test/org/apache/commons/graph/algo/TestSort.java b/src/test/org/apache/commons/graph/algo/TestSort.java
deleted file mode 100644
index f2de41d..0000000
--- a/src/test/org/apache/commons/graph/algo/TestSort.java
+++ /dev/null
@@ -1,166 +0,0 @@
-package org.apache.commons.graph.algo;
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Commons" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Commons", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-import junit.framework.*;
-import org.apache.commons.graph.*;
-
-import java.util.List;
-import java.util.Iterator;
-
-/**
- * TestSort
- *
- * JUnit test for testing the Sort class.
- * (or Topological Sort)
- *
- * We need to test it on several types of
- * directed graphs.
- *
- * ---------------------
- *
- *
- * Can't test. Can't call DFS without a start
- * vertex.
- * ---------------------
- *
- * A
- *
- * ---------------------
- *
- * A->B
- * (Start at A)
- *
- * --------------------
- *
- * A-->B
- * (Start at B)
- *
- * --------------------
- *
- * A->B->C
- *
- * -------------------
- *
- * A-->B-->C
- * ^ |
- * \-/
- *
- * -------------------
- *
- * A-->B
- * ^ |
- * \-/
- *
- * -------------------
- *
- * A-->B
- *
- * C-->D
- *
- * ------------------
- *
- * A--->B
- * --^
- * /
- * C--->D
- *
- * ------------------
- * That should be enough
- * for now.
- */
-public class TestSort
- extends TestCase
-{
- public TestSort( String testName ) {
- super( testName );
- }
-
- private Vertex A = new LabeledVertex("A");
- private Vertex B = new LabeledVertex("B");
- private Vertex C = new LabeledVertex("C");
- private Vertex D = new LabeledVertex("D");
-
- private Edge AB = new LabeledEdge("AB");
- private Edge AC = new LabeledEdge("AC");
- private Edge AD = new LabeledEdge("AD");
-
- private Edge BA = new LabeledEdge("BA");
- private Edge BC = new LabeledEdge("BC");
- private Edge BD = new LabeledEdge("BD");
-
- private Edge CA = new LabeledEdge("CA");
- private Edge CB = new LabeledEdge("CB");
- private Edge CD = new LabeledEdge("CD");
-
- private Edge DA = new LabeledEdge("DA");
- private Edge DB = new LabeledEdge("DB");
- private Edge DC = new LabeledEdge("DC");
-
- private Sort SORT = Sort.getInstance();
-
- public void testOneVertex() throws Throwable {
- DirectedGraph g = new DirectedGraph();
-
- g.addVertex( A );
-
- List vertices = SORT.topologicalSort( g );
- Iterator i = vertices.iterator();
-
- assert( "Wrong number of vertexes: " + vertices.size(),
- vertices.size() == 1 );
- assert( "A not in proper place.", A == i.next() );
- }
-}
diff --git a/src/test/org/apache/commons/graph/util/TestDependencyResolver.java b/src/test/org/apache/commons/graph/util/TestDependencyResolver.java
deleted file mode 100644
index ab4b0c9..0000000
--- a/src/test/org/apache/commons/graph/util/TestDependencyResolver.java
+++ /dev/null
@@ -1,197 +0,0 @@
-package org.apache.commons.graph.util;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.StringTokenizer;
-
-/**
- * @author Jason van Zyl
- * @version $Id: TestDependencyResolver.java,v 1.3 2001/12/02 19:25:44 jvanzyl Exp $
- */
-public class TestDependencyResolver
- extends TestCase
-{
- private DependencyResolver d;
-
- public TestDependencyResolver(String testName)
- {
- super(testName);
- }
-
- public static Test suite()
- {
- return new TestSuite(TestDependencyResolver.class);
- }
-
- public void setUp()
- {
- d = new DependencyResolver();
- }
-
- public void testCookieList()
- {
- String compare = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
-
- try
- {
- addAlphabetProjects(d);
- }
- catch(Exception e)
- {
- fail();
- }
- }
-
- /*
- public void testReset()
- {
- String compare = "";
-
- try
- {
- addAlphabetProjects(d);
- d.reset();
- assertEquals(compare,getList(d.getSortedDependencies("")));
- }
- catch(Exception e)
- {
- fail();
- }
- }
- */
-
- public void testSingleProjectDependency()
- {
- // tests the engine with
- //
- // A B C
- // ^ ^ ^\
- // \/ \/ |
- // D <-E |
- // ^ /
- // \ /
- // F <-
-
- String compare = "ABDFCE";
-
- try
- {
- d.reset();
- d.addGraphable("A", deps(null));
- d.addGraphable("B", deps(null));
- d.addGraphable("C", deps("F"));
- d.addGraphable("D", deps("A,B"));
- d.addGraphable("E", deps("B,C,D"));
- d.addGraphable("F", deps("D"));
-
- // Get the dependencies where we exclude the
- // specified target.
- assertEquals(compare,getList(d.getSortedDependencies("F")));
-
- }
- catch( Exception e )
- {
- e.printStackTrace();
- fail();
- }
- }
-
- /*
- public void testMultiProjectDependency()
- {
- String compare = "12BCDA3";
-
- try
- {
- d.reset();
- d.addGraphable("A", deps("B,C,D"));
- d.addGraphable("B", deps("1,2"));
- d.addGraphable("C", deps(null));
- d.addGraphable("D", deps(null));
- d.addGraphable("1", deps(null));
- d.addGraphable("2", deps(null));
- d.addGraphable("3", deps("C"));
-
- ArrayList projects = new ArrayList();
- projects.add("A");
- projects.add("3");
-
- // We do not want to exclude the target. This is simulating
- // maven where all dependencies are built including the
- // target package.
- assertEquals(compare,getList(d.getSortedDependencies("")));
-
- }
- catch( Exception e )
- {
- fail();
- }
- }
- */
-
- private void addAlphabetProjects(DependencyResolver d)
- throws Exception
- {
- d.addGraphable( "Z", deps("Y"));
- d.addGraphable( "Y", deps("X"));
- d.addGraphable( "X", deps("W"));
- d.addGraphable( "W", deps("V"));
- d.addGraphable( "V", deps("U"));
- d.addGraphable( "U", deps("T"));
- d.addGraphable( "T", deps("S"));
- d.addGraphable( "S", deps("R"));
- d.addGraphable( "R", deps("Q"));
- d.addGraphable( "Q", deps("P"));
- d.addGraphable( "P", deps("O"));
- d.addGraphable( "O", deps("N"));
- d.addGraphable( "N", deps("M"));
- d.addGraphable( "M", deps("L"));
- d.addGraphable( "L", deps("K"));
- d.addGraphable( "K", deps("J"));
- d.addGraphable( "J", deps("I"));
- d.addGraphable( "I", deps("H"));
- d.addGraphable( "H", deps("G"));
- d.addGraphable( "G", deps("F"));
- d.addGraphable( "F", deps("E"));
- d.addGraphable( "E", deps("D"));
- d.addGraphable( "D", deps("C"));
- d.addGraphable( "C", deps("B"));
- d.addGraphable( "B", deps("A"));
- d.addGraphable( "A", deps(null));
- }
-
- private String getList(List list)
- throws Exception
- {
- StringBuffer sb = new StringBuffer();
- Iterator i = list.iterator();
- while(i.hasNext())
- {
- String item = (String) i.next();
- sb.append(item);
- }
-
- return sb.toString();
- }
-
- private List deps(String project)
- {
- ArrayList deps = new ArrayList();
-
- if (project != null)
- {
- StringTokenizer st = new StringTokenizer(project, ",");
-
- while(st.hasMoreTokens())
- {
- deps.add(st.nextToken());
- }
- }
-
- return deps;
- }
-}