KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > taglibs > standard > lang > jpath > expression > SubtractionOperator


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.jpath.expression;
18
19 import java.math.BigDecimal JavaDoc;
20
21 import javax.servlet.jsp.PageContext JavaDoc;
22
23 import org.apache.taglibs.standard.lang.jpath.adapter.ConversionException;
24 import org.apache.taglibs.standard.lang.jpath.adapter.Convert;
25 import org.apache.taglibs.standard.lang.jpath.adapter.IterationContext;
26
27 /**
28  * The SubtractionOperator class
29  *
30  *
31  * @author <a HREF='mailto:scott.hasse@isthmusgroup.com'>Scott Hasse</a>
32  * @version
33  */

34 public class SubtractionOperator extends SimpleNode {
35
36     /**
37      * Used to create an instance of the SubtractionOperator class
38      *
39      *
40      * @param id
41      *
42      */

43     public SubtractionOperator(int id) {
44         super(id);
45     }
46
47     /**
48      * Used to create an instance of the SubtractionOperator class
49      *
50      *
51      * @param p
52      * @param id
53      *
54      */

55     public SubtractionOperator(Parser p, int id) {
56         super(p, id);
57     }
58
59     /**
60      * Provides a method to print a normalized version of the original
61      * expression. The normalized version has standardized spacing and
62      * parenthesis, and can be used to compare expressions formatted
63      * in different ways to see if they are actually the same expression.
64      *
65      *
66      * @return The normalized version of the original expression
67      *
68      */

69     public String JavaDoc toNormalizedString() {
70
71         String JavaDoc normalized = "";
72
73         normalized = "(" + jjtGetChild(0).toNormalizedString() + " "
74                 + getTokenImage(ParserConstants.MINUS) + " "
75                 + jjtGetChild(1).toNormalizedString() + ")";
76
77         return normalized;
78     }
79
80     /**
81      * This method evaluates this node of the expression and all child nodes.
82      * It returns the result of the
83      * evaluation as an <tt>Object</tt>. If any problems are encountered
84      * during the evaluation, an <tt>EvaluationException</tt> is thrown.
85      *
86      *
87      * @param pageContext the current JSP PageContext
88      *
89      * @param icontext the Iteration Context of the expression. If there is
90      * no interation context, this should be null.
91      *
92      * @return the result of the expression evaluation as an object
93      *
94      * @throws EvaluationException if a problem is encountered during the
95      * evaluation
96      */

97     public Object JavaDoc evaluate(PageContext JavaDoc pageContext, IterationContext icontext)
98             throws EvaluationException {
99
100         Double JavaDoc result;
101
102         try {
103             BigDecimal JavaDoc leftSide = new BigDecimal JavaDoc(
104                 Convert.toDouble(jjtGetChild(0).evaluate(pageContext,
105                     icontext)).toString());
106             BigDecimal JavaDoc rightSide = new BigDecimal JavaDoc(
107                 Convert.toDouble(jjtGetChild(1).evaluate(pageContext,
108                     icontext)).toString());
109
110             result = new Double JavaDoc((leftSide.subtract(rightSide)).doubleValue());
111         } catch (ConversionException ce) {
112             throw new EvaluationException(this, ce.getMessage());
113         }
114
115         return result;
116     }
117 }
118
Popular Tags