NAME
Tree::Simple::Manager::Index - A class for quick-access indexing for Tree::Simple hierarchies
SYNOPSIS
use Tree::Simple::Manager::Index;
my $index = Tree::Simple::Manager::Index->new($tree_hierarchy);
my $node_deep_in_the_tree = $index->getTreeByID(100134);
DESCRIPTION
This module will index a Tree::Simple hierarchy so that node's can be quickly accessed without needing to search the entire heirarchy. It currently will index the Tree::Simple nodes by their UID property. Plans for allowing other means of indexing are in the future.
METHODS
- new ($tree)
-
Given a
$tree
it will index all it's nodes by their UID values. - indexTree
-
This will take the root tree (the
$tree
arguments innew
) and index it. This method can be overridden by a subclass to provide custom indexing functionality. See the SUBCLASSING section below. - getIndexKeys
-
This will return a list of all the index keys.
- getRootTree
-
This will return the root of the indexed tree.
- getTreeByID ($id)
-
Given an
$id
this will return the tree associated with it. If no tree is associated with it, an exeception will be thrown. - hasTreeAtID ($id)
-
Returns a boolean if there is a tree associated with that
$id
.
SUBCLASSING
This module will index a Tree::Simple hierarchy using the UID property of each tree node (fetched with the getUID
method of Tree::Simple). This works well with the Tree::Simple::Manager's default tree file parser filter, which expects a tree file format which supplies an id field. It is obvious that this approach may not be useful in all cases, so I have built this module too easily allow for subclassing and customization of the indexing process.
You will need to override the indexTree
method. The root tree is accessible by the getRootTree
method, and the index is a hash reference available as a public field $self->{index}
. How you choose to construct the index from here is up to you. Here are a couple of things to keep in mind though.
- Duplicate index keys
-
We throw an exception in the default indexer if we notice a duplicate key being created. It is the responsibility of the subclass author to check.
BUGS
None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it.
CODE COVERAGE
I use Devel::Cover to test the code coverage of my tests, see the Tree::Simple::Manager documentation for more details.
AUTHOR
stevan little, <stevan@iinteractive.com>
COPYRIGHT AND LICENSE
Copyright 2004-2007 by Infinity Interactive, Inc.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 126:
Expected text after =item, not a bullet