KickJava   Java API By Example, From Geeks To Geeks.

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


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 /**
20  *
21  * <p>The implementation of the divide operator
22  *
23  * @author Nathan Abramson - Art Technology Group
24  * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: pierred $
25  **/

26
27 public class DivideOperator
28   extends BinaryOperator
29 {
30   //-------------------------------------
31
// Singleton
32
//-------------------------------------
33

34   public static final DivideOperator SINGLETON =
35     new DivideOperator ();
36
37   //-------------------------------------
38
/**
39    *
40    * Constructor
41    **/

42   public DivideOperator ()
43   {
44   }
45
46   //-------------------------------------
47
// Expression methods
48
//-------------------------------------
49
/**
50    *
51    * Returns the symbol representing the operator
52    **/

53   public String JavaDoc getOperatorSymbol ()
54   {
55     return "/";
56   }
57
58   //-------------------------------------
59
/**
60    *
61    * Applies the operator to the given value
62    **/

63   public Object JavaDoc apply (Object JavaDoc pLeft,
64                Object JavaDoc pRight,
65                Object JavaDoc pContext,
66                Logger pLogger)
67     throws ELException
68   {
69     if (pLeft == null &&
70     pRight == null) {
71       if (pLogger.isLoggingWarning ()) {
72     pLogger.logWarning
73       (Constants.ARITH_OP_NULL,
74        getOperatorSymbol ());
75       }
76       return PrimitiveObjects.getInteger (0);
77     }
78
79     double left =
80       Coercions.coerceToPrimitiveNumber (pLeft, Double JavaDoc.class, pLogger).
81       doubleValue ();
82     double right =
83       Coercions.coerceToPrimitiveNumber (pRight, Double JavaDoc.class, pLogger).
84       doubleValue ();
85
86     try {
87       return PrimitiveObjects.getDouble (left / right);
88     }
89     catch (Exception JavaDoc exc) {
90       if (pLogger.isLoggingError ()) {
91     pLogger.logError
92       (Constants.ARITH_ERROR,
93        getOperatorSymbol (),
94        "" + left,
95        "" + right);
96       }
97       return PrimitiveObjects.getInteger (0);
98     }
99   }
100
101   //-------------------------------------
102
}
103
Popular Tags