Class SearchByClass

  • All Implemented Interfaces:
    org.apache.jorphan.collections.HashTreeTraverser

    
    public class SearchByClass<T>
     implements HashTreeTraverser
                        

    Useful for finding all nodes in the tree that represent objects of a particular type. For instance, if your tree contains all strings, and a few StringBuilder objects, you can use the SearchByClass traverser to find all the StringBuilder objects in your tree.

    Usage is simple. Given a HashTree object "tree", and a SearchByClass object:

    HashTree tree = new HashTree();
    // ... tree gets filled with objects
    SearchByClass searcher = new SearchByClass(StringBuilder.class);
    tree.traverse(searcher);
    Iterator iter = searcher.getSearchResults().iterator();
    while (iter.hasNext()) {
        StringBuilder foundNode = (StringBuilder) iter.next();
        HashTree subTreeOfFoundNode = searcher.getSubTree(foundNode);
        // .... do something with node and subTree...
    }
    
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
    • Field Summary

      Fields 
      Modifier and Type Field Description
    • Constructor Summary

      Constructors 
      Constructor Description
      SearchByClass(Class<T> searchClass) Creates an instance of SearchByClass, and sets the Class to be searched for.
    • Enum Constant Summary

      Enum Constants 
      Enum Constant Description
    • Method Summary

      Modifier and Type Method Description
      Collection<T> getSearchResults() After traversing the HashTree, call this method to get a collection of the nodes that were found.
      HashTree getSubTree(Object root) Given a specific found node, this method will return the sub tree of that node.
      void addNode(Object node, HashTree subTree) The tree traverses itself depth-first, calling addNode for each object it encounters as it goes.
      void subtractNode() Indicates traversal has moved up a step, and the visitor should remove the top node from its stack structure.
      void processPath() Process path is called when a leaf is reached.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • SearchByClass

        SearchByClass(Class<T> searchClass)
        Creates an instance of SearchByClass, and sets the Class to be searched for.
        Parameters:
        searchClass - class to be searched for
    • Method Detail

      • getSearchResults

         Collection<T> getSearchResults()

        After traversing the HashTree, call this method to get a collection of the nodes that were found.

        Returns:

        Collection All found nodes of the requested type

      • getSubTree

         HashTree getSubTree(Object root)

        Given a specific found node, this method will return the sub tree of that node.

        Parameters:
        root - the node for which the sub tree is requested
        Returns:

        HashTree

      • addNode

         void addNode(Object node, HashTree subTree)

        The tree traverses itself depth-first, calling addNode for each object it encounters as it goes. This is a callback method, and should not be called except by a HashTree during traversal.

      • subtractNode

         void subtractNode()

        Indicates traversal has moved up a step, and the visitor should remove the top node from its stack structure. This is a callback method, and should not be called except by a HashTree during traversal.

      • processPath

         void processPath()

        Process path is called when a leaf is reached. If a visitor wishes to generate Lists of path elements to each leaf, it should keep a Stack data structure of nodes passed to it with addNode, and removing top items for every #subtractNode() call. This is a callback method, and should not be called except by a HashTree during traversal.