java.lang.Object
org.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 $
|
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 |
objectsOfClass
java.util.List objectsOfClass
subTrees
java.util.Map subTrees
searchClass
java.lang.Class searchClass
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.
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