com.pmease.quickbuild.execution.killtree
Class CyclicGraphDetector<N>
java.lang.Object
com.pmease.quickbuild.execution.killtree.CyclicGraphDetector<N>
public abstract class CyclicGraphDetector<N>
- extends java.lang.Object
Traverses a directed graph and if it contains any cycle, throw an exception.
Method Summary |
protected abstract java.lang.Iterable<? extends N> |
getEdges(N n)
List up edges from the given node (by listing nodes that those edges point to.) |
java.util.List<N> |
getSorted()
Returns all the nodes in the topologically sorted order. |
protected void |
reactOnCycle(N q,
java.util.List<N> cycle)
React on detected cycles - default implementation throws an exception. |
void |
run(java.lang.Iterable<? extends N> allNodes)
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
CyclicGraphDetector
public CyclicGraphDetector()
run
public void run(java.lang.Iterable<? extends N> allNodes)
throws CyclicGraphDetector.CycleDetectedException
- Throws:
CyclicGraphDetector.CycleDetectedException
getSorted
public java.util.List<N> getSorted()
- Returns all the nodes in the topologically sorted order.
That is, if there's an edge a->b, b always come earlier than a.
getEdges
protected abstract java.lang.Iterable<? extends N> getEdges(N n)
- List up edges from the given node (by listing nodes that those edges point to.)
- Returns:
- Never null.
reactOnCycle
protected void reactOnCycle(N q,
java.util.List<N> cycle)
throws CyclicGraphDetector.CycleDetectedException
- React on detected cycles - default implementation throws an exception.
- Parameters:
q
- cycle
-
- Throws:
CyclicGraphDetector.CycleDetectedException
Copyright © 2005-2010 PMEase Inc. All Rights Reserved.