M
Mize-ze
Hello,
I want to add a custom tag to my application so it will be more
mainatable.
Let's say I have some tree like structure that can be used like that in
a scriptlet:
AndOrTree t = new AndOrTree();
t.addCondition("1","eq","cpu-time","5");
t.addCondition("2","eq","size","8");
t.addAccumulator("3","1","2",AndOrTree.ACCUMULATOR.AND);
t.addCondition("4","eq","fullscans","0");
t.addAccumulator("5","3","4",AndOrTree.ACCUMULATOR.OR);
out.print(t.toString());
The addCondition and addAccumulator functions take as a first argument
an "id"
this id uniquelly identifies the node in the tree.
The addAccumulator takes two "ids" of nodes, which will be the new
Node's sons.
So basically when I create a new "Accumulator" with
t.addAccumulator("5","3","4",AndOrTree.ACCUMULATOR.OR); I create a new
Node with identifier 5 that is a parent of nodes 3 and 4.
Now, I want to keep the same functionallity under customer Tags.
In my vision, it should look something like that:
<aot:condition id="1" operator="<" property="size" value="8" >
<aot:condition id="2" operator="<" property="cpu-time" value="85" >
<aot:accumulator id="3" name1="1" name2="2" ...>
Since there is a Tree out there, I guess I should also implement a tag
that initializes the tree
The tree should also be transferred to other tags for reference, so it
should be something like that:
<aot:tree id="myTree">
<aot:condition tree="myTree" id="1" operator="<" property="size"
value="8" >
<aot:condition tree="myTree" id="2" operator="<" property="cpu-time"
value="85" >
<aot:accumulator tree="myTree" id="3" name1="1" name2="2" ...>
I "extended" TagSupport and did the previous bit of
tree.addCondition(this.id,this.operator,this.property,this.value)
inside the doStartTag () function.
My problem is with the TreeTag, How can I implement and extended
TagSupport that will have a reference to a AndOrTree that I can later
set as a member of the other Tag classes?
My tag handlers looks like that:
public class ConditionTag extends javax.servlet.jsp.tagext.TagSupport{
//For the TLD calls;
private String property;
private String operator;
private String value;
private AndOrTree tree;
/** Creates a new instance of ConditionTag */
public ConditionTag() {
}
public void setOperator(String operator) {
this.operator = operator;
}
public String getOperator() {
return operator;
}
public String getValue() {
return value;
}
public String getProperty() {
return property;
}
public void setValue(String value) {
this.value = value;
}
public void setProperty(String property) {
this.property = property;
}
public AndOrTree getTree() {
return tree;
}
public void setTree(AndOrTree tree) {
this.tree = tree;
}
public int doStartTag ()
{
tree.addCondition(this.id,this.operator,this.property,this.value);
return SKIP_BODY;
}
public int doEndTag()
{
return EVAL_PAGE;
}
}
How should I implement the TreeTag class?
Thanks.
I want to add a custom tag to my application so it will be more
mainatable.
Let's say I have some tree like structure that can be used like that in
a scriptlet:
AndOrTree t = new AndOrTree();
t.addCondition("1","eq","cpu-time","5");
t.addCondition("2","eq","size","8");
t.addAccumulator("3","1","2",AndOrTree.ACCUMULATOR.AND);
t.addCondition("4","eq","fullscans","0");
t.addAccumulator("5","3","4",AndOrTree.ACCUMULATOR.OR);
out.print(t.toString());
The addCondition and addAccumulator functions take as a first argument
an "id"
this id uniquelly identifies the node in the tree.
The addAccumulator takes two "ids" of nodes, which will be the new
Node's sons.
So basically when I create a new "Accumulator" with
t.addAccumulator("5","3","4",AndOrTree.ACCUMULATOR.OR); I create a new
Node with identifier 5 that is a parent of nodes 3 and 4.
Now, I want to keep the same functionallity under customer Tags.
In my vision, it should look something like that:
<aot:condition id="1" operator="<" property="size" value="8" >
<aot:condition id="2" operator="<" property="cpu-time" value="85" >
<aot:accumulator id="3" name1="1" name2="2" ...>
Since there is a Tree out there, I guess I should also implement a tag
that initializes the tree
The tree should also be transferred to other tags for reference, so it
should be something like that:
<aot:tree id="myTree">
<aot:condition tree="myTree" id="1" operator="<" property="size"
value="8" >
<aot:condition tree="myTree" id="2" operator="<" property="cpu-time"
value="85" >
<aot:accumulator tree="myTree" id="3" name1="1" name2="2" ...>
I "extended" TagSupport and did the previous bit of
tree.addCondition(this.id,this.operator,this.property,this.value)
inside the doStartTag () function.
My problem is with the TreeTag, How can I implement and extended
TagSupport that will have a reference to a AndOrTree that I can later
set as a member of the other Tag classes?
My tag handlers looks like that:
public class ConditionTag extends javax.servlet.jsp.tagext.TagSupport{
//For the TLD calls;
private String property;
private String operator;
private String value;
private AndOrTree tree;
/** Creates a new instance of ConditionTag */
public ConditionTag() {
}
public void setOperator(String operator) {
this.operator = operator;
}
public String getOperator() {
return operator;
}
public String getValue() {
return value;
}
public String getProperty() {
return property;
}
public void setValue(String value) {
this.value = value;
}
public void setProperty(String property) {
this.property = property;
}
public AndOrTree getTree() {
return tree;
}
public void setTree(AndOrTree tree) {
this.tree = tree;
}
public int doStartTag ()
{
tree.addCondition(this.id,this.operator,this.property,this.value);
return SKIP_BODY;
}
public int doEndTag()
{
return EVAL_PAGE;
}
}
How should I implement the TreeTag class?
Thanks.