1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.beanutils.locale.converters;
18
19 import org.apache.commons.beanutils.ConversionException;
20
21 import java.util.Locale;
22 import java.text.ParseException;
23
24
25 /**
26 * <p>Standard {@link org.apache.commons.beanutils.locale.LocaleConverter}
27 * implementation that converts an incoming
28 * locale-sensitive String into a <code>java.math.BigDecimal</code> object,
29 * optionally using a default value or throwing a
30 * {@link org.apache.commons.beanutils.ConversionException}
31 * if a conversion error occurs.</p>
32 *
33 * @author Yauheny Mikulski
34 */
35
36 public class FloatLocaleConverter extends DecimalLocaleConverter {
37
38
39
40
41 /**
42 * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
43 * that will throw a {@link org.apache.commons.beanutils.ConversionException}
44 * if a conversion error occurs. The locale is the default locale for
45 * this instance of the Java Virtual Machine and an unlocalized pattern is used
46 * for the convertion.
47 *
48 */
49 public FloatLocaleConverter() {
50
51 this(false);
52 }
53
54 /**
55 * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
56 * that will throw a {@link org.apache.commons.beanutils.ConversionException}
57 * if a conversion error occurs. The locale is the default locale for
58 * this instance of the Java Virtual Machine.
59 *
60 * @param locPattern Indicate whether the pattern is localized or not
61 */
62 public FloatLocaleConverter(boolean locPattern) {
63
64 this(Locale.getDefault(), locPattern);
65 }
66
67 /**
68 * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
69 * that will throw a {@link org.apache.commons.beanutils.ConversionException}
70 * if a conversion error occurs. An unlocalized pattern is used for the convertion.
71 *
72 * @param locale The locale
73 */
74 public FloatLocaleConverter(Locale locale) {
75
76 this(locale, false);
77 }
78
79 /**
80 * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
81 * that will throw a {@link org.apache.commons.beanutils.ConversionException}
82 * if a conversion error occurs.
83 *
84 * @param locale The locale
85 * @param locPattern Indicate whether the pattern is localized or not
86 */
87 public FloatLocaleConverter(Locale locale, boolean locPattern) {
88
89 this(locale, (String) null, locPattern);
90 }
91
92 /**
93 * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
94 * that will throw a {@link org.apache.commons.beanutils.ConversionException}
95 * if a conversion error occurs. An unlocalized pattern is used for the convertion.
96 *
97 * @param locale The locale
98 * @param pattern The convertion pattern
99 */
100 public FloatLocaleConverter(Locale locale, String pattern) {
101
102 this(locale, pattern, false);
103 }
104
105 /**
106 * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
107 * that will throw a {@link org.apache.commons.beanutils.ConversionException}
108 * if a conversion error occurs.
109 *
110 * @param locale The locale
111 * @param pattern The convertion pattern
112 * @param locPattern Indicate whether the pattern is localized or not
113 */
114 public FloatLocaleConverter(Locale locale, String pattern, boolean locPattern) {
115
116 super(locale, pattern, locPattern);
117 }
118
119 /**
120 * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
121 * that will return the specified default value
122 * if a conversion error occurs. The locale is the default locale for
123 * this instance of the Java Virtual Machine and an unlocalized pattern is used
124 * for the convertion.
125 *
126 * @param defaultValue The default value to be returned
127 */
128 public FloatLocaleConverter(Object defaultValue) {
129
130 this(defaultValue, false);
131 }
132
133 /**
134 * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
135 * that will return the specified default value
136 * if a conversion error occurs. The locale is the default locale for
137 * this instance of the Java Virtual Machine.
138 *
139 * @param defaultValue The default value to be returned
140 * @param locPattern Indicate whether the pattern is localized or not
141 */
142 public FloatLocaleConverter(Object defaultValue, boolean locPattern) {
143
144 this(defaultValue, Locale.getDefault(), locPattern);
145 }
146
147 /**
148 * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
149 * that will return the specified default value
150 * if a conversion error occurs. An unlocalized pattern is used for the convertion.
151 *
152 * @param defaultValue The default value to be returned
153 * @param locale The locale
154 */
155 public FloatLocaleConverter(Object defaultValue, Locale locale) {
156
157 this(defaultValue, locale, false);
158 }
159
160 /**
161 * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
162 * that will return the specified default value
163 * if a conversion error occurs.
164 *
165 * @param defaultValue The default value to be returned
166 * @param locale The locale
167 * @param locPattern Indicate whether the pattern is localized or not
168 */
169 public FloatLocaleConverter(Object defaultValue, Locale locale, boolean locPattern) {
170
171 this(defaultValue, locale, null, locPattern);
172 }
173
174 /**
175 * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
176 * that will return the specified default value
177 * if a conversion error occurs. An unlocalized pattern is used for the convertion.
178 *
179 * @param defaultValue The default value to be returned
180 * @param locale The locale
181 * @param pattern The convertion pattern
182 */
183 public FloatLocaleConverter(Object defaultValue, Locale locale, String pattern) {
184
185 this(defaultValue, locale, pattern, false);
186 }
187
188 /**
189 * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
190 * that will return the specified default value
191 * if a conversion error occurs.
192 *
193 * @param defaultValue The default value to be returned
194 * @param locale The locale
195 * @param pattern The convertion pattern
196 * @param locPattern Indicate whether the pattern is localized or not
197 */
198 public FloatLocaleConverter(Object defaultValue, Locale locale, String pattern, boolean locPattern) {
199
200 super(defaultValue, locale, pattern);
201 }
202
203 /**
204 * Convert the specified locale-sensitive input object into an output object of the
205 * specified type. This method will return Float value or throw exception if value
206 * can not be stored in the Float.
207 *
208 * @param value The input object to be converted
209 * @param pattern The pattern is used for the convertion
210 *
211 * @exception ConversionException if conversion cannot be performed
212 * successfully
213 */
214 protected Object parse(Object value, String pattern) throws ParseException {
215 final Number parsed = (Number) super.parse(value, pattern);
216 if( Math.abs(parsed.doubleValue() - parsed.floatValue()) > parsed.floatValue() * 0.00001 ) {
217 throw new ConversionException("Suplied number is not of type Float: "+parsed.longValue());
218 }
219 return new Float(parsed.floatValue());
220 }
221 }