001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018 package org.apache.commons.beanutils.locale;
019
020 import org.apache.commons.collections.FastHashMap;
021
022 import java.util.Locale;
023
024 /**
025 * <p>Utility methods for converting locale-sensitive String scalar values to objects of the
026 * specified Class, String arrays to arrays of the specified Class and
027 * object to locale-sensitive String scalar value.</p>
028 *
029 * <p>The implementations for these method are provided by {@link LocaleConvertUtilsBean}.
030 * These static utility method use the default instance. More sophisticated can be provided
031 * by using a <code>LocaleConvertUtilsBean</code> instance.</p>
032 *
033 * @author Yauheny Mikulski
034 */
035 public class LocaleConvertUtils {
036
037 // ----------------------------------------------------- Instance Variables
038
039 /**
040 * <p>Gets the <code>Locale</code> which will be used when
041 * no <code>Locale</code> is passed to a method.</p>
042 *
043 * <p>For more details see <code>LocaleConvertUtilsBean</code></p>
044 * @return the default locale
045 * @see LocaleConvertUtilsBean#getDefaultLocale()
046 */
047 public static Locale getDefaultLocale() {
048
049 return LocaleConvertUtilsBean.getInstance().getDefaultLocale();
050 }
051
052 /**
053 * <p>Sets the <code>Locale</code> which will be used when
054 * no <code>Locale</code> is passed to a method.</p>
055 *
056 * <p>For more details see <code>LocaleConvertUtilsBean</code></p>
057 *
058 * @param locale the default locale
059 * @see LocaleConvertUtilsBean#setDefaultLocale(Locale)
060 */
061 public static void setDefaultLocale(Locale locale) {
062
063 LocaleConvertUtilsBean.getInstance().setDefaultLocale(locale);
064 }
065
066 /**
067 * <p>Gets applyLocalized.</p>
068 *
069 * <p>For more details see <code>LocaleConvertUtilsBean</code></p>
070 *
071 * @return <code>true</code> if pattern is localized,
072 * otherwise <code>false</code>
073 * @see LocaleConvertUtilsBean#getApplyLocalized()
074 */
075 public static boolean getApplyLocalized() {
076 return LocaleConvertUtilsBean.getInstance().getApplyLocalized();
077 }
078
079 /**
080 * <p>Sets applyLocalized.</p>
081 *
082 * <p>For more details see <code>LocaleConvertUtilsBean</code></p>
083 *
084 * @param newApplyLocalized <code>true</code> if pattern is localized,
085 * otherwise <code>false</code>
086 * @see LocaleConvertUtilsBean#setApplyLocalized(boolean)
087 */
088 public static void setApplyLocalized(boolean newApplyLocalized) {
089 LocaleConvertUtilsBean.getInstance().setApplyLocalized(newApplyLocalized);
090 }
091
092 // --------------------------------------------------------- Methods
093
094 /**
095 * <p>Convert the specified locale-sensitive value into a String.</p>
096 *
097 * <p>For more details see <code>LocaleConvertUtilsBean</code></p>
098 *
099 * @param value The Value to be converted
100 * @return the converted value
101 * @see LocaleConvertUtilsBean#convert(Object)
102 */
103 public static String convert(Object value) {
104 return LocaleConvertUtilsBean.getInstance().convert(value);
105 }
106
107 /**
108 * <p>Convert the specified locale-sensitive value into a String
109 * using the conversion pattern.</p>
110 *
111 * <p>For more details see <code>LocaleConvertUtilsBean</code></p>
112 *
113 * @param value The Value to be converted
114 * @param pattern The convertion pattern
115 * @return the converted value
116 * @see LocaleConvertUtilsBean#convert(Object, String)
117 */
118 public static String convert(Object value, String pattern) {
119 return LocaleConvertUtilsBean.getInstance().convert(value, pattern);
120 }
121
122 /**
123 * <p>Convert the specified locale-sensitive value into a String
124 * using the paticular convertion pattern.</p>
125 *
126 * <p>For more details see <code>LocaleConvertUtilsBean</code></p>
127 *
128 * @param value The Value to be converted
129 * @param locale The locale
130 * @param pattern The convertion pattern
131 * @return the converted value
132 * @see LocaleConvertUtilsBean#convert(Object, Locale, String)
133 */
134 public static String convert(Object value, Locale locale, String pattern) {
135
136 return LocaleConvertUtilsBean.getInstance().convert(value, locale, pattern);
137 }
138
139 /**
140 * <p>Convert the specified value to an object of the specified class (if
141 * possible). Otherwise, return a String representation of the value.</p>
142 *
143 * <p>For more details see <code>LocaleConvertUtilsBean</code></p>
144 *
145 * @param value The String scalar value to be converted
146 * @param clazz The Data type to which this value should be converted.
147 * @return the converted value
148 * @see LocaleConvertUtilsBean#convert(String, Class)
149 */
150 public static Object convert(String value, Class clazz) {
151
152 return LocaleConvertUtilsBean.getInstance().convert(value, clazz);
153 }
154
155 /**
156 * <p>Convert the specified value to an object of the specified class (if
157 * possible) using the convertion pattern. Otherwise, return a String
158 * representation of the value.</p>
159 *
160 * <p>For more details see <code>LocaleConvertUtilsBean</code></p>
161 *
162 * @param value The String scalar value to be converted
163 * @param clazz The Data type to which this value should be converted.
164 * @param pattern The convertion pattern
165 * @return the converted value
166 * @see LocaleConvertUtilsBean#convert(String, Class, String)
167 */
168 public static Object convert(String value, Class clazz, String pattern) {
169
170 return LocaleConvertUtilsBean.getInstance().convert(value, clazz, pattern);
171 }
172
173 /**
174 * <p>Convert the specified value to an object of the specified class (if
175 * possible) using the convertion pattern. Otherwise, return a String
176 * representation of the value.</p>
177 *
178 * <p>For more details see <code>LocaleConvertUtilsBean</code></p>
179 *
180 * @param value The String scalar value to be converted
181 * @param clazz The Data type to which this value should be converted.
182 * @param locale The locale
183 * @param pattern The convertion pattern
184 * @return the converted value
185 * @see LocaleConvertUtilsBean#convert(String, Class, Locale, String)
186 */
187 public static Object convert(String value, Class clazz, Locale locale, String pattern) {
188
189 return LocaleConvertUtilsBean.getInstance().convert(value, clazz, locale, pattern);
190 }
191
192 /**
193 * <p>Convert an array of specified values to an array of objects of the
194 * specified class (if possible) using the convertion pattern.</p>
195 *
196 * <p>For more details see <code>LocaleConvertUtilsBean</code></p>
197 *
198 * @param values Value to be converted (may be null)
199 * @param clazz Java array or element class to be converted to
200 * @param pattern The convertion pattern
201 * @return the converted value
202 * @see LocaleConvertUtilsBean#convert(String[], Class, String)
203 */
204 public static Object convert(String[] values, Class clazz, String pattern) {
205
206 return LocaleConvertUtilsBean.getInstance().convert(values, clazz, pattern);
207 }
208
209 /**
210 * <p>Convert an array of specified values to an array of objects of the
211 * specified class (if possible).</p>
212 *
213 * <p>For more details see <code>LocaleConvertUtilsBean</code></p>
214 *
215 * @param values Value to be converted (may be null)
216 * @param clazz Java array or element class to be converted to
217 * @return the converted value
218 * @see LocaleConvertUtilsBean#convert(String[], Class)
219 */
220 public static Object convert(String[] values, Class clazz) {
221
222 return LocaleConvertUtilsBean.getInstance().convert(values, clazz);
223 }
224
225 /**
226 * <p>Convert an array of specified values to an array of objects of the
227 * specified class (if possible) using the convertion pattern.</p>
228 *
229 * <p>For more details see <code>LocaleConvertUtilsBean</code></p>
230 *
231 * @param values Value to be converted (may be null)
232 * @param clazz Java array or element class to be converted to
233 * @param locale The locale
234 * @param pattern The convertion pattern
235 * @return the converted value
236 * @see LocaleConvertUtilsBean#convert(String[], Class, Locale, String)
237 */
238 public static Object convert(String[] values, Class clazz, Locale locale, String pattern) {
239
240 return LocaleConvertUtilsBean.getInstance().convert(values, clazz, locale, pattern);
241 }
242
243 /**
244 * <p>Register a custom {@link LocaleConverter} for the specified destination
245 * <code>Class</code>, replacing any previously registered converter.</p>
246 *
247 * <p>For more details see <code>LocaleConvertUtilsBean</code></p>
248 *
249 * @param converter The LocaleConverter to be registered
250 * @param clazz The Destination class for conversions performed by this
251 * Converter
252 * @param locale The locale
253 * @see LocaleConvertUtilsBean#register(LocaleConverter, Class, Locale)
254 */
255 public static void register(LocaleConverter converter, Class clazz, Locale locale) {
256
257 LocaleConvertUtilsBean.getInstance().register(converter, clazz, locale);
258 }
259
260 /**
261 * <p>Remove any registered {@link LocaleConverter}.</p>
262 *
263 * <p>For more details see <code>LocaleConvertUtilsBean</code></p>
264 *
265 * @see LocaleConvertUtilsBean#deregister()
266 */
267 public static void deregister() {
268
269 LocaleConvertUtilsBean.getInstance().deregister();
270 }
271
272
273 /**
274 * <p>Remove any registered {@link LocaleConverter} for the specified locale.</p>
275 *
276 * <p>For more details see <code>LocaleConvertUtilsBean</code></p>
277 *
278 * @param locale The locale
279 * @see LocaleConvertUtilsBean#deregister(Locale)
280 */
281 public static void deregister(Locale locale) {
282
283 LocaleConvertUtilsBean.getInstance().deregister(locale);
284 }
285
286
287 /**
288 * <p>Remove any registered {@link LocaleConverter} for the specified locale and Class.</p>
289 *
290 * <p>For more details see <code>LocaleConvertUtilsBean</code></p>
291 *
292 * @param clazz Class for which to remove a registered Converter
293 * @param locale The locale
294 * @see LocaleConvertUtilsBean#deregister(Class, Locale)
295 */
296 public static void deregister(Class clazz, Locale locale) {
297
298 LocaleConvertUtilsBean.getInstance().deregister(clazz, locale);
299 }
300
301 /**
302 * <p>Look up and return any registered {@link LocaleConverter} for the specified
303 * destination class and locale; if there is no registered Converter, return
304 * <code>null</code>.</p>
305 *
306 * <p>For more details see <code>LocaleConvertUtilsBean</code></p>
307 *
308 * @param clazz Class for which to return a registered Converter
309 * @param locale The Locale
310 * @return The registered locale Converter, if any
311 * @see LocaleConvertUtilsBean#lookup(Class, Locale)
312 */
313 public static LocaleConverter lookup(Class clazz, Locale locale) {
314
315 return LocaleConvertUtilsBean.getInstance().lookup(clazz, locale);
316 }
317
318 /**
319 * <p>Look up and return any registered FastHashMap instance for the specified locale.</p>
320 *
321 * <p>For more details see <code>LocaleConvertUtilsBean</code></p>
322 *
323 * @param locale The Locale
324 * @return The FastHashMap instance contains the all {@link LocaleConverter} types for
325 * the specified locale.
326 * @see LocaleConvertUtilsBean#lookup(Locale)
327 * @deprecated This method will be modified to return a Map in the next release.
328 */
329 protected static FastHashMap lookup(Locale locale) {
330 return LocaleConvertUtilsBean.getInstance().lookup(locale);
331 }
332
333 /**
334 * <p>Create all {@link LocaleConverter} types for specified locale.</p>
335 *
336 * <p>For more details see <code>LocaleConvertUtilsBean</code></p>
337 *
338 * @param locale The Locale
339 * @return The FastHashMap instance contains the all {@link LocaleConverter} types
340 * for the specified locale.
341 * @see LocaleConvertUtilsBean#create(Locale)
342 * @deprecated This method will be modified to return a Map in the next release.
343 */
344 protected static FastHashMap create(Locale locale) {
345
346 return LocaleConvertUtilsBean.getInstance().create(locale);
347 }
348 }