Class Graph<T>


  • public class Graph<T>
    extends java.lang.Object
    Simple graph class to implement topological sort (used to sort methods based on what groups they depend on).
    • Field Detail

      • m_verbose

        private static boolean m_verbose
      • m_nodes

        private java.util.Map<T,​Graph.Node<T>> m_nodes
      • m_strictlySortedNodes

        private java.util.List<T> m_strictlySortedNodes
      • comparator

        private final java.util.Comparator<Graph.Node<T>> comparator
      • m_independentNodes

        private java.util.Map<T,​Graph.Node<T>> m_independentNodes
    • Constructor Detail

      • Graph

        public Graph​(java.util.Comparator<Graph.Node<T>> comparator)
    • Method Detail

      • addNode

        public void addNode​(T tm)
      • getPredecessors

        public java.util.Set<T> getPredecessors​(T node)
      • isIndependent

        public boolean isIndependent​(T object)
      • addPredecessor

        public void addPredecessor​(T tm,
                                   T predecessor)
      • addNeighbor

        private void addNeighbor​(T tm,
                                 T predecessor)
      • getNodes

        private java.util.Collection<Graph.Node<T>> getNodes()
      • getIndependentNodes

        public java.util.Set<T> getIndependentNodes()
        Returns:
        All the nodes that don't have any order with each other.
      • getStrictlySortedNodes

        public java.util.List<T> getStrictlySortedNodes()
        Returns:
        All the nodes that have an order with each other, sorted in one of the valid sorts.
      • topologicalSort

        public void topologicalSort()
      • initializeIndependentNodes

        private void initializeIndependentNodes()
      • dumpSortedNodes

        private void dumpSortedNodes()
      • removeFromNodes

        private void removeFromNodes​(java.util.List<Graph.Node<T>> nodes,
                                     Graph.Node<T> node)
        Remove a node from a list of nodes and update the list of predecessors for all the remaining nodes.
      • ppp

        private static void ppp​(java.lang.String s)
      • findNodeWithNoPredecessors

        private Graph.Node<T> findNodeWithNoPredecessors​(java.util.List<Graph.Node<T>> nodes)
      • findPredecessors

        public java.util.List<T> findPredecessors​(T o)
        Parameters:
        o - - The predecessor
        Returns:
        A list of all the predecessors for o
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object