1 /**
2 * Copyright 2010 The Kuali Foundation Licensed under the
3 * Educational Community License, Version 2.0 (the "License"); you may
4 * not use this file except in compliance with the License. You may
5 * obtain a copy of the License at
6 *
7 * http://www.osedu.org/licenses/ECL-2.0
8 *
9 * Unless required by applicable law or agreed to in writing,
10 * software distributed under the License is distributed on an "AS IS"
11 * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
12 * or implied. See the License for the specific language governing
13 * permissions and limitations under the License.
14 */
15
16 package org.kuali.student.common.messagebuilder.booleanmessage.ast;
17
18 import org.antlr.runtime.Token;
19 import org.antlr.runtime.tree.CommonTree;
20
21 /**
22 * This class is a boolean node in a binary tree.
23 */
24 public class BooleanNode extends CommonTree {
25
26 private BooleanNode parent;
27 private Boolean value;
28 private String nodeMessage;
29 private String language;
30
31 /**
32 * Construct a boolean node for a particular token in a binary tree.
33 * Tokens are +, *, (, ) and propositions e.g. tokens: (M1*M2)+M3
34 * See BooleanFunctionParser.java
35 *
36 * @param payload Node token
37 */
38 public BooleanNode(Token payload) {
39 super(payload);
40 }
41
42 /**
43 * Gets the parent boolean node.
44 *
45 * @return Parent boolean node
46 */
47 public BooleanNode getParent(){
48 return parent;
49 }
50
51 /**
52 * Gets the b-tree left node.
53 *
54 * @return B-tree left boolean node
55 */
56 public BooleanNode getLeftNode(){
57 return (BooleanNode) this.getChild(0);
58 }
59
60 /**
61 * Gets the b-tree right node.
62 *
63 * @return B-tree right boolean node
64 */
65 public BooleanNode getRightNode(){
66 return (BooleanNode) this.getChild(1);
67 }
68
69 /**
70 * Gets the label of the node.
71 *
72 * @return Node label
73 */
74 public String getLabel(){
75 return this.getText();
76 }
77
78 /**
79 * Gets the boolean value (true or false).
80 *
81 * @return Boolean value
82 */
83 public Boolean getValue(){
84 return value;
85 }
86
87 /**
88 * Gets the node message.
89 *
90 * @return Node message
91 */
92 public String getNodeMessage(){
93 return nodeMessage;
94 }
95
96 /**
97 * Gets the message language.
98 *
99 * @return Message language
100 */
101 public String getLanguage() {
102 return language;
103 }
104
105 /**
106 * org.antlr.runtime.tree.CommonTree.getParent() is not implemented
107 * you have to set the parent yourself, BinaryMessageTree.java
108 *
109 * @param parent Parent node
110 */
111 public void setParent(BooleanNode parent){
112 this.parent = parent;
113 }
114
115 /**
116 * Sets the boolean value (true or false).
117 *
118 * @param value Boolean value
119 */
120 public void setValue(Boolean value){
121 this.value = value;
122 }
123
124 /**
125 * Sets the node message.
126 *
127 * @param nodeMessage Node message
128 */
129 public void setNodeMessage(String nodeMessage){
130 this.nodeMessage = nodeMessage;
131 }
132
133 /**
134 * Sets the message language.
135 *
136 * @param language Message language
137 */
138 public void setLanguage(String language) {
139 this.language = language;
140 }
141
142 @Override
143 public String toString() {
144 return "BooleanNode["
145 + "label=" + getLabel()
146 + ", value=" + value
147 + ", leftNodeLabel=" + (getLeftNode() == null ? null : getLeftNode().getLabel())
148 + ", rightNodeLabel=" + (getRightNode() == null ? null : getRightNode().getLabel())
149 + ", parentLabel=" + (parent == null ? null : parent.getLabel())
150 + "]";
151 }
152
153 }