KickJava   Java API By Example, From Geeks To Geeks.

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


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 long values.
27  *
28  * @author Howard Lewis Ship
29  */

30 public class LongTranslator implements Translator
31 {
32     private long _minValue;
33     private boolean _isMinValue;
34     private long _maxValue;
35     private boolean _isMaxValue;
36     private long _defaultValue = 0;
37
38     public LongTranslator()
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 LongTranslator(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 = Long.parseLong(defaultInit);
58
59         String JavaDoc minInit = (String JavaDoc) m.get("min");
60         if (minInit != null)
61         {
62             _isMinValue = true;
63             _minValue = Long.parseLong(minInit);
64         }
65
66         String JavaDoc maxInit = (String JavaDoc) m.get("max");
67         if (maxInit != null)
68         {
69             _isMaxValue = true;
70             _maxValue = Long.parseLong(maxInit);
71         }
72     }
73
74     /**
75      * Converts the string to an Long. 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 Long JavaDoc(_defaultValue);
86
87         long value;
88
89         try
90         {
91             value = Long.parseLong(inputValue);
92         }
93         catch (Exception JavaDoc ex)
94         {
95             throw new ApplicationRuntimeException(
96                 RulesMessages.invalidLongValue(inputValue),
97                 location,
98                 ex);
99         }
100
101         if (_isMinValue && value < _minValue)
102             throw new ApplicationRuntimeException(
103                 RulesMessages.minLongValue(inputValue, _minValue));
104
105         if (_isMaxValue && value > _maxValue)
106             throw new ApplicationRuntimeException(
107                 RulesMessages.maxLongValue(inputValue, _maxValue));
108
109         return new Long JavaDoc(value);
110
111     }
112
113 }
114
Popular Tags