    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.converters;
    019
    020    import java.sql.Timestamp;
    021    import java.text.ParseException;
    022    import java.util.Locale;
    023
    024    /**
    025     * <p>Standard {@link org.apache.commons.beanutils.locale.LocaleConverter}
    026     * implementation that converts an incoming
    027     * locale-sensitive String into a <code>java.sql.Timestamp</code> object,
    028     * optionally using a default value or throwing a
    029     * {@link org.apache.commons.beanutils.ConversionException}
    030     * if a conversion error occurs.</p>
    031     *
    032     * @author Yauheny Mikulski
    033     */
    034
    035    public class SqlTimestampLocaleConverter extends DateLocaleConverter {
    036
    037
    038        // ----------------------------------------------------------- Constructors
    039
    040        /**
    041         * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
    042         * that will throw a {@link org.apache.commons.beanutils.ConversionException}
    043         * if a conversion error occurs. The locale is the default locale for
    044         * this instance of the Java Virtual Machine and an unlocalized pattern is used
    045         * for the convertion.
    046         *
    047         */
    048        public SqlTimestampLocaleConverter() {
    049
    050            this(false);
    051        }
    052
    053        /**
    054         * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
    055         * that will throw a {@link org.apache.commons.beanutils.ConversionException}
    056         * if a conversion error occurs. The locale is the default locale for
    057         * this instance of the Java Virtual Machine.
    058         *
    059         * @param locPattern    Indicate whether the pattern is localized or not
    060         */
    061        public SqlTimestampLocaleConverter(boolean locPattern) {
    062
    063            this(Locale.getDefault(), locPattern);
    064        }
    065
    066        /**
    067         * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
    068         * that will throw a {@link org.apache.commons.beanutils.ConversionException}
    069         * if a conversion error occurs. An unlocalized pattern is used for the convertion.
    070         *
    071         * @param locale        The locale
    072         */
    073        public SqlTimestampLocaleConverter(Locale locale) {
    074
    075            this(locale, (String) null);
    076        }
    077
    078        /**
    079         * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
    080         * that will throw a {@link org.apache.commons.beanutils.ConversionException}
    081         * if a conversion error occurs.
    082         *
    083         * @param locale        The locale
    084         * @param locPattern    Indicate whether the pattern is localized or not
    085         */
    086        public SqlTimestampLocaleConverter(Locale locale, boolean locPattern) {
    087
    088            this(locale, (String) null);
    089        }
    090
    091        /**
    092         * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
    093         * that will throw a {@link org.apache.commons.beanutils.ConversionException}
    094         * if a conversion error occurs. An unlocalized pattern is used for the convertion.
    095         *
    096         * @param locale        The locale
    097         * @param pattern       The convertion pattern
    098         */
    099        public SqlTimestampLocaleConverter(Locale locale, String pattern) {
    100
    101            this(locale, pattern, false);
    102        }
    103
    104        /**
    105         * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
    106         * that will throw a {@link org.apache.commons.beanutils.ConversionException}
    107         * if a conversion error occurs.
    108         *
    109         * @param locale        The locale
    110         * @param pattern       The convertion pattern
    111         * @param locPattern    Indicate whether the pattern is localized or not
    112         */
    113        public SqlTimestampLocaleConverter(Locale locale, String pattern, boolean locPattern) {
    114
    115            super(locale, pattern, locPattern);
    116        }
    117
    118        /**
    119         * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
    120         * that will return the specified default value
    121         * if a conversion error occurs. The locale is the default locale for
    122         * this instance of the Java Virtual Machine and an unlocalized pattern is used
    123         * for the convertion.
    124         *
    125         * @param defaultValue  The default value to be returned
    126         */
    127        public SqlTimestampLocaleConverter(Object defaultValue) {
    128            this(defaultValue, false);
    129        }
    130
    131        /**
    132         * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
    133         * that will return the specified default value
    134         * if a conversion error occurs. The locale is the default locale for
    135         * this instance of the Java Virtual Machine.
    136         *
    137         * @param defaultValue  The default value to be returned
    138         * @param locPattern    Indicate whether the pattern is localized or not
    139         */
    140        public SqlTimestampLocaleConverter(Object defaultValue, boolean locPattern) {
    141
    142            this(defaultValue, Locale.getDefault(), locPattern);
    143        }
    144
    145        /**
    146         * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
    147         * that will return the specified default value
    148         * if a conversion error occurs. An unlocalized pattern is used for the convertion.
    149         *
    150         * @param defaultValue  The default value to be returned
    151         * @param locale        The locale
    152         */
    153        public SqlTimestampLocaleConverter(Object defaultValue, Locale locale) {
    154
    155            this(defaultValue, locale, false);
    156        }
    157
    158        /**
    159         * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
    160         * that will return the specified default value
    161         * if a conversion error occurs.
    162         *
    163         * @param defaultValue  The default value to be returned
    164         * @param locale        The locale
    165         * @param locPattern    Indicate whether the pattern is localized or not
    166         */
    167        public SqlTimestampLocaleConverter(Object defaultValue, Locale locale, boolean locPattern) {
    168
    169            this(defaultValue, locale, null, locPattern);
    170        }
    171
    172        /**
    173         * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
    174         * that will return the specified default value
    175         * if a conversion error occurs. An unlocalized pattern is used for the convertion.
    176         *
    177         * @param defaultValue  The default value to be returned
    178         * @param locale        The locale
    179         * @param pattern       The convertion pattern
    180         */
    181        public SqlTimestampLocaleConverter(Object defaultValue, Locale locale, String pattern) {
    182
    183            this(defaultValue, locale, pattern, false);
    184        }
    185
    186        /**
    187         * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
    188         * that will return the specified default value
    189         * if a conversion error occurs.
    190         *
    191         * @param defaultValue  The default value to be returned
    192         * @param locale        The locale
    193         * @param pattern       The convertion pattern
    194         * @param locPattern    Indicate whether the pattern is localized or not
    195         */
    196        public SqlTimestampLocaleConverter(Object defaultValue, Locale locale, String pattern, boolean locPattern) {
    197
    198            super(defaultValue, locale, pattern, locPattern);
    199        }
    200
    201        // --------------------------------------------------------- Methods
    202
    203        /**
    204         * Convert the specified locale-sensitive input object into an output object of the
    205         * specified type.
    206         *
    207         * @param value The input object to be converted
    208         * @param pattern The pattern is used for the convertion
    209         * @return The converted value
    210         *
    211         * @exception org.apache.commons.beanutils.ConversionException if conversion
    212         * cannot be performed successfully
    213         * @throws ParseException if an error occurs parsing a String to a Number
    214         */
    215        protected Object parse(Object value, String pattern) throws ParseException {
    216
    217            return new Timestamp(((java.util.Date) super.parse(value, pattern)).getTime());
    218        }
    219    }