org.codehaus.plexus.util.dag
Class DAG

java.lang.Object
  extended by org.codehaus.plexus.util.dag.DAG
All Implemented Interfaces:
Serializable, Cloneable

public class DAG
extends Object
implements Cloneable, Serializable

DAG = Directed Acyclic Graph

Version:
$Id$
Author:
Michal Maczka
See Also:
Serialized Form

Constructor Summary
DAG()
           
 
Method Summary
 void addEdge(String from, String to)
           
 void addEdge(Vertex from, Vertex to)
           
 Vertex addVertex(String label)
          Adds vertex to DAG.
 Object clone()
           
 List getChildLabels(String label)
           
 Set getLabels()
           
 List getParentLabels(String label)
           
 List getSuccessorLabels(String label)
          Return the list of labels of successor in order decided by topological sort
 Vertex getVertex(String label)
           
 List getVerticies()
           
 boolean hasEdge(String label1, String label2)
           
 boolean isConnected(String label)
          Indicates if there is at least one edge leading to or from vertex of given label
 void removeEdge(String from, String to)
           
 void removeEdge(Vertex from, Vertex to)
           
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DAG

public DAG()
Method Detail

getVerticies

public List getVerticies()
Returns:

getLabels

public Set getLabels()

addVertex

public Vertex addVertex(String label)
Adds vertex to DAG. If vertex of given label alredy exist in DAG no vertex is added

Parameters:
label - The lable of the Vertex
Returns:
New vertex if vertext of given label was not presenst in the DAG or exising vertex if vertex of given labale was alredy added to DAG

addEdge

public void addEdge(String from,
                    String to)
             throws CycleDetectedException
Throws:
CycleDetectedException

addEdge

public void addEdge(Vertex from,
                    Vertex to)
             throws CycleDetectedException
Throws:
CycleDetectedException

removeEdge

public void removeEdge(String from,
                       String to)

removeEdge

public void removeEdge(Vertex from,
                       Vertex to)

getVertex

public Vertex getVertex(String label)

hasEdge

public boolean hasEdge(String label1,
                       String label2)

getChildLabels

public List getChildLabels(String label)
Parameters:
label -
Returns:

getParentLabels

public List getParentLabels(String label)
Parameters:
label -
Returns:

clone

public Object clone()
             throws CloneNotSupportedException
Overrides:
clone in class Object
Throws:
CloneNotSupportedException
See Also:
Object.clone()

isConnected

public boolean isConnected(String label)
Indicates if there is at least one edge leading to or from vertex of given label

Returns:
true if this vertex is connected with other vertex,false otherwise

getSuccessorLabels

public List getSuccessorLabels(String label)
Return the list of labels of successor in order decided by topological sort

Parameters:
label - The label of the vertex whose predessors are serched
Returns:
The list of labels. Returned list contains also the label passed as parameter to this method. This label should always be the last item in the list.


Copyright © 2001-2012 Codehaus. All Rights Reserved.