Package weka.gui
Class HierarchyPropertyParser
java.lang.Object
weka.gui.HierarchyPropertyParser
- All Implemented Interfaces:
Serializable
This class implements a parser to read properties that have a hierarchy(i.e.
tree) structure. Conceptually it's similar to the XML DOM/SAX parser but of
course is much simpler and uses dot as the seperator of levels instead of
back-slash.
It provides interfaces to both build a parser tree and traverse the tree.
Note that this implementation does not lock the tree when different threads are traversing it simultaneously, i.e. it's NOT synchronized and multi-thread safe. It is recommended that later implementation extending this class provide a locking scheme and override the functions with the "synchronized" modifier (most of them are goToXXX() and information accessing functions).
It provides interfaces to both build a parser tree and traverse the tree.
Note that this implementation does not lock the tree when different threads are traversing it simultaneously, i.e. it's NOT synchronized and multi-thread safe. It is recommended that later implementation extending this class provide a locking scheme and override the functions with the "synchronized" modifier (most of them are goToXXX() and information accessing functions).
- Version:
- $Revision: 11269 $
- Author:
- Xin Xu (xx5@cs.waikato.ac.nz)
- See Also:
-
Constructor Summary
ConstructorDescriptionDefault constructorHierarchyPropertyParser
(String p, String delim) Constructor that builds a tree from the given property with the given delimitor -
Method Summary
Modifier and TypeMethodDescriptionvoid
Add the given item of property to the treevoid
Build a tree from the given property with the given delimitorString[]
The value in the children nodes.boolean
Whether the HierarchyPropertyParser contains the given stringcontext()
The context of the current node, i.e.int
depth()
Get the depth of the tree, i.e.The full value of the current node, i.e.int
getLevel()
Get the level of current node.Get the seperator between levels.getValue()
Get the value of current nodeboolean
Go to a certain node of the tree down from the current node according to the specified relative path.boolean
Go to a certain node of the tree according to the specified path Note that the path must be absolute path from the root.void
goToChild
(int pos) Go to one child node from the current position in the tree according to the given positionboolean
Go to one child node from the current position in the tree according to the given value
If the child node with the given value cannot be found it returns false, true otherwise.void
Go to the parent from the current position in the tree If the current position is the root, it stays there and does not movevoid
goToRoot()
Go to the root of the treeboolean
isHierachic
(String string) Whether the given string has a hierachy structure with the seperatorsboolean
Whether the current position is a leafboolean
Whether the current position is the rootstatic void
Tests out the parser.int
The number of the children nodes.The value in the parent node.int
Helper function to search for the given target string in a given vector in which the elements' value may hopefully is equal to the target.void
Set the seperator between levels.showTree()
Show the whole tree in text formatString[]
Tokenize the given string based on the seperator and put the tokens into an array of strings
-
Constructor Details
-
HierarchyPropertyParser
public HierarchyPropertyParser()Default constructor -
HierarchyPropertyParser
Constructor that builds a tree from the given property with the given delimitor- Parameters:
p
- the given property stringdelim
- the given dilimitor- Throws:
Exception
-
-
Method Details
-
setSeperator
Set the seperator between levels. Default is dot.- Parameters:
s
- the seperator symbol
-
getSeperator
Get the seperator between levels. Default is dot.- Returns:
- the seperator symbol
-
build
Build a tree from the given property with the given delimitor- Parameters:
p
- the given propertydelim
- the given delimitor- Throws:
Exception
-
add
Add the given item of property to the tree- Parameters:
property
- the given item
-
tokenize
Tokenize the given string based on the seperator and put the tokens into an array of strings- Parameters:
rawString
- the given string- Returns:
- an array of strings
-
contains
Whether the HierarchyPropertyParser contains the given string- Parameters:
string
- the given string- Returns:
- whether contains
-
isHierachic
Whether the given string has a hierachy structure with the seperators- Parameters:
string
- the given string
-
search
Helper function to search for the given target string in a given vector in which the elements' value may hopefully is equal to the target. If such elements are found the first index is returned, otherwise -1- Parameters:
vct
- the given vectortarget
- the given target string- Returns:
- the index of the found element, -1 if not found
-
goTo
Go to a certain node of the tree according to the specified path Note that the path must be absolute path from the root.
For relative path, see goDown(String path).- Parameters:
path
- the given absolute path- Returns:
- whether the path exists, if false the current position does not move
-
goDown
Go to a certain node of the tree down from the current node according to the specified relative path. The path does not contain the value of current node- Parameters:
path
- the given relative path- Returns:
- whether the path exists, if false the current position does not move
-
goToRoot
public void goToRoot()Go to the root of the tree -
goToParent
public void goToParent()Go to the parent from the current position in the tree If the current position is the root, it stays there and does not move -
goToChild
Go to one child node from the current position in the tree according to the given value
If the child node with the given value cannot be found it returns false, true otherwise. If false, the current position does not change- Parameters:
value
- the value of the given child- Returns:
- whether the child can be found
-
goToChild
Go to one child node from the current position in the tree according to the given position- Parameters:
pos
- the position of the given child- Throws:
Exception
- if the position is out of range or leaf is reached
-
numChildren
public int numChildren()The number of the children nodes. If current node is leaf, it returns 0.- Returns:
- the number of the children nodes of the current position
-
childrenValues
The value in the children nodes. If current node is leaf, it returns null.- Returns:
- the value in the children nodes
-
parentValue
The value in the parent node. If current node is root, it returns null.- Returns:
- the value in the parent node
-
isLeafReached
public boolean isLeafReached()Whether the current position is a leaf- Returns:
- whether the current position is a leaf
-
isRootReached
public boolean isRootReached()Whether the current position is the root- Returns:
- whether the current position is the root
-
getValue
Get the value of current node- Returns:
- value level
-
getLevel
public int getLevel()Get the level of current node. Note the level starts from 0- Returns:
- the level
-
depth
public int depth()Get the depth of the tree, i.e. (the largest level)+1- Returns:
- the depth of the tree
-
context
The context of the current node, i.e. the path from the root to the parent node of the current node, seperated by the seperator. If root, it returns null- Returns:
- the context path
-
fullValue
The full value of the current node, i.e. its context + seperator + its value. For root, only its value.- Returns:
- the context path
-
showTree
Show the whole tree in text format- Returns:
- the whole tree in text format
-
main
Tests out the parser.- Parameters:
args
- should contain nothing
-