    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    }