KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > taglibs > standard > lang > jstl > UnaryOperatorExpression


1 /*
2  * Copyright 1999-2004 The Apache Software Foundation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16
17 package org.apache.taglibs.standard.lang.jstl;
18
19 import java.util.List JavaDoc;
20 import java.util.Map JavaDoc;
21
22 /**
23  *
24  * <p>An expression representing one or more unary operators on a
25  * value
26  *
27  * @author Nathan Abramson - Art Technology Group
28  * @author Shawn Bayern
29  * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: pierred $
30  **/

31
32 public class UnaryOperatorExpression
33   extends Expression
34 {
35   //-------------------------------------
36
// Properties
37
//-------------------------------------
38
// property operator
39

40   UnaryOperator mOperator;
41   public UnaryOperator getOperator ()
42   { return mOperator; }
43   public void setOperator (UnaryOperator pOperator)
44   { mOperator = pOperator; }
45
46   //-------------------------------------
47
// property operators
48

49   List JavaDoc mOperators;
50   public List JavaDoc getOperators ()
51   { return mOperators; }
52   public void setOperators (List JavaDoc pOperators)
53   { mOperators = pOperators; }
54
55   //-------------------------------------
56
// property expression
57

58   Expression mExpression;
59   public Expression getExpression ()
60   { return mExpression; }
61   public void setExpression (Expression pExpression)
62   { mExpression = pExpression; }
63
64   //-------------------------------------
65
/**
66    *
67    * Constructor
68    **/

69   public UnaryOperatorExpression (UnaryOperator pOperator,
70                   List JavaDoc pOperators,
71                   Expression pExpression)
72   {
73     mOperator = pOperator;
74     mOperators = pOperators;
75     mExpression = pExpression;
76   }
77
78   //-------------------------------------
79
// Expression methods
80
//-------------------------------------
81
/**
82    *
83    * Returns the expression in the expression language syntax
84    **/

85   public String JavaDoc getExpressionString ()
86   {
87     StringBuffer JavaDoc buf = new StringBuffer JavaDoc ();
88     buf.append ("(");
89     if (mOperator != null) {
90       buf.append (mOperator.getOperatorSymbol ());
91       buf.append (" ");
92     }
93     else {
94       for (int i = 0; i < mOperators.size (); i++) {
95     UnaryOperator operator = (UnaryOperator) mOperators.get (i);
96     buf.append (operator.getOperatorSymbol ());
97     buf.append (" ");
98       }
99     }
100     buf.append (mExpression.getExpressionString ());
101     buf.append (")");
102     return buf.toString ();
103   }
104
105   //-------------------------------------
106
/**
107    *
108    * Evaluates to the literal value
109    **/

110   public Object JavaDoc evaluate (Object JavaDoc pContext,
111               VariableResolver pResolver,
112               Map JavaDoc functions,
113               String JavaDoc defaultPrefix,
114               Logger pLogger)
115     throws ELException
116   {
117     Object JavaDoc value = mExpression.evaluate (pContext, pResolver, functions,
118                      defaultPrefix, pLogger);
119     if (mOperator != null) {
120       value = mOperator.apply (value, pContext, pLogger);
121     }
122     else {
123       for (int i = mOperators.size () - 1; i >= 0; i--) {
124     UnaryOperator operator = (UnaryOperator) mOperators.get (i);
125     value = operator.apply (value, pContext, pLogger);
126       }
127     }
128     return value;
129   }
130
131   //-------------------------------------
132
}
133
Popular Tags