com.pmease.quickbuild.execution.killtree
Class CyclicGraphDetector<N>

java.lang.Object
  extended by 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.


Nested Class Summary
static class CyclicGraphDetector.CycleDetectedException
           
 
Constructor Summary
CyclicGraphDetector()
           
 
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
 

Constructor Detail

CyclicGraphDetector

public CyclicGraphDetector()
Method Detail

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.