KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > hivemind > schema > rules > DoubleTranslator


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

15 package org.apache.hivemind.schema.rules;
16
17 import java.util.Map JavaDoc;
18
19 import org.apache.hivemind.ApplicationRuntimeException;
20 import org.apache.hivemind.HiveMind;
21 import org.apache.hivemind.Location;
22 import org.apache.hivemind.internal.Module;
23 import org.apache.hivemind.schema.Translator;
24
25 /**
26  * Translates strings to integer values.
27  *
28  * @author Howard Lewis Ship
29  */

30 public class DoubleTranslator implements Translator
31 {
32     private double _minValue;
33     private boolean _isMinValue;
34     private double _maxValue;
35     private boolean _isMaxValue;
36     private double _defaultValue = 0;
37
38     public DoubleTranslator()
39     {
40     }
41
42     /**
43      * Initializers:
44      * <ul>
45      * <li>default: default value for empty or invalid input
46      * <li>min: minimum acceptible value
47      * <li>max: maximum acceptible value
48      * </ul>
49      */

50     public DoubleTranslator(String JavaDoc initializer)
51     {
52         Map JavaDoc m = RuleUtils.convertInitializer(initializer);
53
54         String JavaDoc defaultInit = (String JavaDoc) m.get("default");
55
56         if (defaultInit != null)
57             _defaultValue = Double.parseDouble(defaultInit);
58
59         String JavaDoc minInit = (String JavaDoc) m.get("min");
60         if (minInit != null)
61         {
62             _isMinValue = true;
63             _minValue = Double.parseDouble(minInit);
64         }
65
66         String JavaDoc maxInit = (String JavaDoc) m.get("max");
67         if (maxInit != null)
68         {
69             _isMaxValue = true;
70             _maxValue = Double.parseDouble(maxInit);
71         }
72     }
73
74     /**
75      * Converts the string to an Double. The empty string is returned as zero.
76      * On failure, an error is logged and the method returns zero.
77      */

78     public Object JavaDoc translate(
79         Module contributingModule,
80         Class JavaDoc propertyType,
81         String JavaDoc inputValue,
82         Location location)
83     {
84         if (HiveMind.isBlank(inputValue))
85             return new Double JavaDoc(_defaultValue);
86
87         double value;
88
89         try
90         {
91             value = Double.parseDouble(inputValue);
92         }
93         catch (Exception JavaDoc ex)
94         {
95             throw new ApplicationRuntimeException(
96                 RulesMessages.invalidDoubleValue(inputValue),
97                 location,
98                 ex);
99         }
100
101         if (_isMinValue && value < _minValue)
102             throw new ApplicationRuntimeException(
103                 RulesMessages.minDoubleValue(inputValue, _minValue));
104
105         if (_isMaxValue && value > _maxValue)
106             throw new ApplicationRuntimeException(
107                 RulesMessages.maxDoubleValue(inputValue, _maxValue));
108
109         return new Double JavaDoc(value);
110     }
111 }
112
Popular Tags