Package org.codehaus.plexus.util.dag
Class DAG
- java.lang.Object
-
- org.codehaus.plexus.util.dag.DAG
-
- All Implemented Interfaces:
java.io.Serializable,java.lang.Cloneable
public class DAG extends java.lang.Object implements java.lang.Cloneable, java.io.SerializableDAG = Directed Acyclic Graph- Author:
- Michal Maczka TODO this class should be renamed from DAG to Dag
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description DAG()
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidaddEdge(java.lang.String from, java.lang.String to)voidaddEdge(Vertex from, Vertex to)VertexaddVertex(java.lang.String label)Adds vertex to DAG.java.lang.Objectclone()java.util.List<java.lang.String>getChildLabels(java.lang.String label)java.util.Set<java.lang.String>getLabels()java.util.List<java.lang.String>getParentLabels(java.lang.String label)java.util.List<java.lang.String>getSuccessorLabels(java.lang.String label)Return the list of labels of successor in order decided by topological sortVertexgetVertex(java.lang.String label)java.util.List<Vertex>getVertices()java.util.List<Vertex>getVerticies()Deprecated.instead usegetVertices()booleanhasEdge(java.lang.String label1, java.lang.String label2)booleanisConnected(java.lang.String label)Indicates if there is at least one edge leading to or from vertex of given labelvoidremoveEdge(java.lang.String from, java.lang.String to)voidremoveEdge(Vertex from, Vertex to)
-
-
-
Method Detail
-
getVertices
public java.util.List<Vertex> getVertices()
- Returns:
- the vertices
-
getVerticies
@Deprecated public java.util.List<Vertex> getVerticies()
Deprecated.instead usegetVertices()- Returns:
- the vertices
-
getLabels
public java.util.Set<java.lang.String> getLabels()
-
addVertex
public Vertex addVertex(java.lang.String label)
Adds vertex to DAG. If vertex of given label already exist in DAG no vertex is added- Parameters:
label- The label of the Vertex- Returns:
- New vertex if vertex of given label was not present in the DAG or existing vertex if vertex of given label was already added to DAG
-
addEdge
public void addEdge(java.lang.String from, java.lang.String to) throws CycleDetectedException- Throws:
CycleDetectedException
-
addEdge
public void addEdge(Vertex from, Vertex to) throws CycleDetectedException
- Throws:
CycleDetectedException
-
removeEdge
public void removeEdge(java.lang.String from, java.lang.String to)
-
getVertex
public Vertex getVertex(java.lang.String label)
-
hasEdge
public boolean hasEdge(java.lang.String label1, java.lang.String label2)
-
getChildLabels
public java.util.List<java.lang.String> getChildLabels(java.lang.String label)
- Parameters:
label- see name- Returns:
- the childs
-
getParentLabels
public java.util.List<java.lang.String> getParentLabels(java.lang.String label)
- Parameters:
label- see name- Returns:
- the parents
-
clone
public java.lang.Object clone() throws java.lang.CloneNotSupportedException- Overrides:
clonein classjava.lang.Object- Throws:
java.lang.CloneNotSupportedException- See Also:
Object.clone()
-
isConnected
public boolean isConnected(java.lang.String label)
Indicates if there is at least one edge leading to or from vertex of given label- Parameters:
label- the label- Returns:
trueif this vertex is connected with other vertex,falseotherwise
-
getSuccessorLabels
public java.util.List<java.lang.String> getSuccessorLabels(java.lang.String label)
Return the list of labels of successor in order decided by topological sort- Parameters:
label- The label of the vertex whose predecessors are searched- 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.
-
-