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.Serializable
DAG = Directed Acyclic Graph- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.List<Vertex>
vertexList
Conatin list of all verticesprivate java.util.Map<java.lang.String,Vertex>
vertexMap
Maps vertex's label to vertex
-
Constructor Summary
Constructors Constructor Description DAG()
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
addEdge(java.lang.String from, java.lang.String to)
void
addEdge(Vertex from, Vertex to)
Vertex
addVertex(java.lang.String label)
Adds vertex to DAG.java.lang.Object
clone()
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 sortVertex
getVertex(java.lang.String label)
java.util.List<Vertex>
getVertices()
java.util.List<Vertex>
getVerticies()
Deprecated.instead usegetVertices()
boolean
hasEdge(java.lang.String label1, java.lang.String label2)
boolean
isConnected(java.lang.String label)
Indicates if there is at least one edge leading to or from vertex of given labelvoid
removeEdge(java.lang.String from, java.lang.String to)
void
removeEdge(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:
clone
in 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:
true
if this vertex is connected with other vertex,false
otherwise
-
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.
-
-