KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > prefuse > data > expression > IfExpression


1 package prefuse.data.expression;
2
3 import prefuse.data.Schema;
4 import prefuse.data.Tuple;
5 import prefuse.util.TypeLib;
6
7 /**
8  * Expression instance representing an "if then else" clause in the prefuse
9  * expression language.
10  *
11  * @author <a HREF="http://jheer.org">jeffrey heer</a>
12  */

13 public class IfExpression extends AbstractExpression {
14
15     private Predicate m_test;
16     private Expression m_then;
17     private Expression m_else;
18     
19     /**
20      * Create a new IfExpression.
21      * @param test the predicate test for the if statement
22      * @param thenExpr the expression to evaluate if the test predicate
23      * evaluates to true
24      * @param elseExpr the expression to evaluate if the test predicate
25      * evaluates to false
26      */

27     public IfExpression(Predicate test,
28             Expression thenExpr, Expression elseExpr)
29     {
30         m_test = test;
31         m_then = thenExpr;
32         m_else = elseExpr;
33     }
34     
35     // ------------------------------------------------------------------------
36

37     /**
38      * Get the test predicate.
39      * @return the test predicate
40      */

41     public Predicate getTestPredicate() {
42         return m_test;
43     }
44
45     /**
46      * Get the then expression
47      * @return the then expression
48      */

49     public Expression getThenExpression() {
50         return m_then;
51     }
52
53     /**
54      * Get the else expression
55      * @return the else expression
56      */

57     public Expression getElseExpression() {
58         return m_else;
59     }
60     
61     /**
62      * Set the test predicate.
63      * @param p the test predicate
64      */

65     public void setTestPredicate(Predicate p) {
66         m_test.removeExpressionListener(this);
67         m_test = p;
68         if ( hasListeners() ) p.addExpressionListener(this);
69         fireExpressionChange();
70     }
71
72     /**
73      * Set the then expression
74      * @param e the then expression to set
75      */

76     public void setThenExpression(Expression e) {
77         m_then.removeExpressionListener(this);
78         m_then = e;
79         if ( hasListeners() ) e.addExpressionListener(this);
80         fireExpressionChange();
81     }
82
83     /**
84      * Set the else expression
85      * @param e the else expression to set
86      */

87     public void setElseExpression(Expression e) {
88         m_else.removeExpressionListener(this);
89         m_else = e;
90         if ( hasListeners() ) e.addExpressionListener(this);
91         fireExpressionChange();
92     }
93     
94     // ------------------------------------------------------------------------
95

96     /**
97      * @see prefuse.data.expression.Expression#getType(prefuse.data.Schema)
98      */

99     public Class JavaDoc getType(Schema s) {
100         Class JavaDoc type1 = m_then.getType(s);
101         Class JavaDoc type2 = m_else.getType(s);
102         return TypeLib.getSharedType(type1, type2);
103     }
104
105     /**
106      * @see prefuse.data.expression.Expression#get(prefuse.data.Tuple)
107      */

108     public Object JavaDoc get(Tuple t) {
109         return (m_test.getBoolean(t) ? m_then : m_else).get(t);
110     }
111
112     /**
113      * @see prefuse.data.expression.Expression#getBoolean(prefuse.data.Tuple)
114      */

115     public boolean getBoolean(Tuple t) {
116         return (m_test.getBoolean(t) ? m_then : m_else).getBoolean(t);
117     }
118
119     /**
120      * @see prefuse.data.expression.Expression#getDouble(prefuse.data.Tuple)
121      */

122     public double getDouble(Tuple t) {
123         return (m_test.getBoolean(t) ? m_then : m_else).getDouble(t);
124     }
125
126     /**
127      * @see prefuse.data.expression.Expression#getFloat(prefuse.data.Tuple)
128      */

129     public float getFloat(Tuple t) {
130         return (m_test.getBoolean(t) ? m_then : m_else).getFloat(t);
131     }
132
133     /**
134      * @see prefuse.data.expression.Expression#getInt(prefuse.data.Tuple)
135      */

136     public int getInt(Tuple t) {
137         return (m_test.getBoolean(t) ? m_then : m_else).getInt(t);
138     }
139
140     /**
141      * @see prefuse.data.expression.Expression#getLong(prefuse.data.Tuple)
142      */

143     public long getLong(Tuple t) {
144         return (m_test.getBoolean(t) ? m_then : m_else).getLong(t);
145     }
146
147     // ------------------------------------------------------------------------
148

149     /**
150      * @see prefuse.data.expression.Expression#visit(prefuse.data.expression.ExpressionVisitor)
151      */

152     public void visit(ExpressionVisitor v) {
153         v.visitExpression(this);
154         v.down(); m_test.visit(v); v.up();
155         v.down(); m_then.visit(v); v.up();
156         v.down(); m_else.visit(v); v.up();
157     }
158     
159     /**
160      * @see prefuse.data.expression.AbstractExpression#addChildListeners()
161      */

162     protected void addChildListeners() {
163         m_test.addExpressionListener(this);
164         m_then.addExpressionListener(this);
165         m_else.addExpressionListener(this);
166     }
167     
168     /**
169      * @see prefuse.data.expression.AbstractExpression#removeChildListeners()
170      */

171     protected void removeChildListeners() {
172         m_test.removeExpressionListener(this);
173         m_then.removeExpressionListener(this);
174         m_else.removeExpressionListener(this);
175     }
176     
177     /**
178      * @see java.lang.Object#toString()
179      */

180     public String JavaDoc toString() {
181         return "IF " + m_test.toString()
182             + " THEN " + m_then.toString()
183             + " ELSE " + m_else.toString();
184     }
185     
186 } // end of class IfExpression
187
Popular Tags