Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

org.apache.jorphan.collections
Class SearchByClass  view SearchByClass download SearchByClass.java

java.lang.Object
  extended byorg.apache.jorphan.collections.SearchByClass
All Implemented Interfaces:
HashTreeTraverser

public class SearchByClass
extends java.lang.Object
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 StringBuffer objects, you can use the SearchByClass traverser to find all the StringBuffer 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(StringBuffer.class);
 tree.traverse(searcher);
 Iterator iter = searcher.getSearchResults().iterator();
 while (iter.hasNext()) {
 	StringBuffer foundNode = (StringBuffer) iter.next();
 	HashTree subTreeOfFoundNode = searcher.getSubTree(foundNode);
 	//  .... do something with node and subTree...
 }
 

Version:
$Revision: 1.5 $

Nested Class Summary
static class SearchByClass.Test
           
 
Field Summary
(package private)  java.util.List objectsOfClass
           
(package private)  java.lang.Class searchClass
           
(package private)  java.util.Map subTrees
           
 
Constructor Summary
SearchByClass()
          Creates an instance of SearchByClass.
SearchByClass(java.lang.Class searchClass)
          Creates an instance of SearchByClass, and sets the Class to be searched for.
 
Method Summary
 void addNode(java.lang.Object node, HashTree subTree)
          The tree traverses itself depth-first, calling addNode for each object it encounters as it goes.
 java.util.Collection getSearchResults()
          After traversing the HashTree, call this method to get a collection of the nodes that were found.
 HashTree getSubTree(java.lang.Object root)
          Given a specific found node, this method will return the sub tree of that node.
 void processPath()
          Process path is called when a leaf is reached.
 void subtractNode()
          Indicates traversal has moved up a step, and the visitor should remove the top node from its stack structure.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

objectsOfClass

java.util.List objectsOfClass

subTrees

java.util.Map subTrees

searchClass

java.lang.Class searchClass
Constructor Detail

SearchByClass

public SearchByClass()
Creates an instance of SearchByClass. However, without setting the Class to search for, it will be a useless object.


SearchByClass

public SearchByClass(java.lang.Class searchClass)
Creates an instance of SearchByClass, and sets the Class to be searched for.

Method Detail

getSearchResults

public java.util.Collection getSearchResults()
After traversing the HashTree, call this method to get a collection of the nodes that were found.


getSubTree

public HashTree getSubTree(java.lang.Object root)
Given a specific found node, this method will return the sub tree of that node.


addNode

public void addNode(java.lang.Object node,
                    HashTree subTree)
Description copied from interface: HashTreeTraverser
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.

Specified by:
addNode in interface HashTreeTraverser

subtractNode

public void subtractNode()
Description copied from interface: HashTreeTraverser
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.

Specified by:
subtractNode in interface HashTreeTraverser

processPath

public void processPath()
Description copied from interface: HashTreeTraverser
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 HashTreeTraverser.subtractNode() 55 call. This is a callback method, and should not be called except by a HashTree during traversal.

Specified by:
processPath in interface HashTreeTraverser