KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > turbine > services > intake > validator > DoubleValidator


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

18
19 import java.util.Map JavaDoc;
20
21 import org.apache.commons.lang.StringUtils;
22
23 /**
24  * Validates Doubles with the following constraints in addition to those
25  * listed in NumberValidator and DefaultValidator.
26  *
27  * <table>
28  * <tr><th>Name</th><th>Valid Values</th><th>Default Value</th></tr>
29  * <tr><td>minValue</td><td>greater than Double.MIN_VALUE</td>
30  * <td>&nbsp;</td></tr>
31  * <tr><td>maxValue</td><td>less than Double.MAX_VALUE</td>
32  * <td>&nbsp;</td></tr>
33  * <tr><td>invalidNumberMessage</td><td>Some text</td>
34  * <td>Entry was not a valid number</td></tr>
35  * </table>
36  *
37  * @author <a HREF="mailto:jmcnally@collab.net">John McNally</a>
38  * @author <a HREF="mailto:Colin.Chalmers@maxware.nl">Colin Chalmers</a>
39  * @version $Id: DoubleValidator.java,v 1.2.2.5 2004/05/20 03:06:47 seade Exp $
40  */

41 public class DoubleValidator
42         extends NumberValidator
43 {
44     /* Init the minValue to that for a Double */
45     private double minValue = Double.NEGATIVE_INFINITY;
46
47     /* Init the maxValue to that for a Double */
48     private double maxValue = Double.POSITIVE_INFINITY;
49
50     /**
51      * Constructor to use when initialising Object
52      *
53      * @param paramMap
54      * @throws InvalidMaskException
55      */

56     public DoubleValidator(Map JavaDoc paramMap)
57             throws InvalidMaskException
58     {
59         invalidNumberMessage = "Entry was not a valid Double";
60         init(paramMap);
61     }
62
63     /**
64      * Default Constructor
65      */

66     public DoubleValidator()
67     {
68     }
69
70     /**
71      * Method to initialise Object
72      *
73      * @param paramMap
74      * @throws InvalidMaskException
75      */

76     public void init(Map JavaDoc paramMap)
77             throws InvalidMaskException
78     {
79         super.init(paramMap);
80
81         Constraint constraint = (Constraint) paramMap.get(MIN_VALUE_RULE_NAME);
82         if (constraint != null)
83         {
84             String JavaDoc param = constraint.getValue();
85             minValue = Double.parseDouble(param);
86             minValueMessage = constraint.getMessage();
87         }
88
89         constraint = (Constraint) paramMap.get(MAX_VALUE_RULE_NAME);
90         if (constraint != null)
91         {
92             String JavaDoc param = constraint.getValue();
93             maxValue = Double.parseDouble(param);
94             maxValueMessage = constraint.getMessage();
95         }
96     }
97
98     /**
99      * Determine whether a testValue meets the criteria specified
100      * in the constraints defined for this validator
101      *
102      * @param testValue a <code>String</code> to be tested
103      * @exception ValidationException containing an error message if the
104      * testValue did not pass the validation tests.
105      */

106     public void assertValidity(String JavaDoc testValue)
107             throws ValidationException
108     {
109         super.assertValidity(testValue);
110
111         double d = 0.0D;
112
113         if (required || StringUtils.isNotEmpty(testValue))
114         {
115             try
116             {
117                 d = Double.parseDouble(testValue);
118             }
119             catch (RuntimeException JavaDoc e)
120             {
121                 errorMessage = invalidNumberMessage;
122                 throw new ValidationException(invalidNumberMessage);
123             }
124             
125             if (d < minValue)
126             {
127                 errorMessage = minValueMessage;
128                 throw new ValidationException(minValueMessage);
129             }
130             if (d > maxValue)
131             {
132                 errorMessage = maxValueMessage;
133                 throw new ValidationException(maxValueMessage);
134             }
135         }
136     }
137
138
139     // ************************************************************
140
// ** Bean accessor methods **
141
// ************************************************************
142

143     /**
144      * Get the value of minValue.
145      *
146      * @return value of minValue.
147      */

148     public double getMinValue()
149     {
150         return minValue;
151     }
152
153     /**
154      * Set the value of minValue.
155      *
156      * @param value Value to assign to minValue.
157      */

158     public void setMinValue(double value)
159     {
160         this.minValue = value;
161     }
162
163     /**
164      * Get the value of maxValue.
165      *
166      * @return value of maxValue.
167      */

168     public double getMaxValue()
169     {
170         return maxValue;
171     }
172
173     /**
174      * Set the value of maxValue.
175      *
176      * @param value Value to assign to maxValue.
177      */

178     public void setMaxValue(double value)
179     {
180         this.maxValue = value;
181     }
182 }
183
Popular Tags