View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  
18  package org.apache.commons.beanutils.locale.converters;
19  
20  import java.sql.Date;
21  import java.text.ParseException;
22  import java.util.Locale;
23  
24  /**
25   * <p>Standard {@link org.apache.commons.beanutils.locale.LocaleConverter}
26   * implementation that converts an incoming
27   * locale-sensitive String into a <code>java.sql.Date</code> object,
28   * optionally using a default value or throwing a
29   * {@link org.apache.commons.beanutils.ConversionException}
30   * if a conversion error occurs.</p>
31   *
32   * @version $Id$
33   */
34  
35  public class SqlDateLocaleConverter extends DateLocaleConverter {
36  
37  
38      // ----------------------------------------------------------- Constructors
39  
40      /**
41       * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
42       * that will throw a {@link org.apache.commons.beanutils.ConversionException}
43       * if a conversion error occurs. The locale is the default locale for
44       * this instance of the Java Virtual Machine and an unlocalized pattern is used
45       * for the convertion.
46       *
47       */
48      public SqlDateLocaleConverter() {
49  
50          this(false);
51      }
52  
53      /**
54       * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
55       * that will throw a {@link org.apache.commons.beanutils.ConversionException}
56       * if a conversion error occurs. The locale is the default locale for
57       * this instance of the Java Virtual Machine.
58       *
59       * @param locPattern    Indicate whether the pattern is localized or not
60       */
61      public SqlDateLocaleConverter(final boolean locPattern) {
62  
63          this(Locale.getDefault(), locPattern);
64      }
65  
66      /**
67       * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
68       * that will throw a {@link org.apache.commons.beanutils.ConversionException}
69       * if a conversion error occurs. An unlocalized pattern is used for the convertion.
70       *
71       * @param locale        The locale
72       */
73      public SqlDateLocaleConverter(final Locale locale) {
74  
75          this(locale, false);
76      }
77  
78      /**
79       * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
80       * that will throw a {@link org.apache.commons.beanutils.ConversionException}
81       * if a conversion error occurs.
82       *
83       * @param locale        The locale
84       * @param locPattern    Indicate whether the pattern is localized or not
85       */
86      public SqlDateLocaleConverter(final Locale locale, final boolean locPattern) {
87  
88          this(locale, (String) null, locPattern);
89      }
90  
91      /**
92       * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
93       * that will throw a {@link org.apache.commons.beanutils.ConversionException}
94       * if a conversion error occurs. An unlocalized pattern is used for the convertion.
95       *
96       * @param locale        The locale
97       * @param pattern       The convertion pattern
98       */
99      public SqlDateLocaleConverter(final Locale locale, final 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 SqlDateLocaleConverter(final Locale locale, final String pattern, final 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 SqlDateLocaleConverter(final Object defaultValue) {
128 
129         this(defaultValue, false);
130     }
131 
132     /**
133      * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
134      * that will return the specified default value
135      * if a conversion error occurs. The locale is the default locale for
136      * this instance of the Java Virtual Machine.
137      *
138      * @param defaultValue  The default value to be returned
139      * @param locPattern    Indicate whether the pattern is localized or not
140      */
141     public SqlDateLocaleConverter(final Object defaultValue, final boolean locPattern) {
142 
143         this(defaultValue, Locale.getDefault(), locPattern);
144     }
145 
146     /**
147      * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
148      * that will return the specified default value
149      * if a conversion error occurs. An unlocalized pattern is used for the convertion.
150      *
151      * @param defaultValue  The default value to be returned
152      * @param locale        The locale
153      */
154     public SqlDateLocaleConverter(final Object defaultValue, final Locale locale) {
155 
156         this(defaultValue, locale, false);
157     }
158 
159     /**
160      * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
161      * that will return the specified default value
162      * if a conversion error occurs.
163      *
164      * @param defaultValue  The default value to be returned
165      * @param locale        The locale
166      * @param locPattern    Indicate whether the pattern is localized or not
167      */
168     public SqlDateLocaleConverter(final Object defaultValue, final Locale locale, final boolean locPattern) {
169 
170         this(defaultValue, locale, null, locPattern);
171     }
172 
173     /**
174      * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
175      * that will return the specified default value
176      * if a conversion error occurs. An unlocalized pattern is used for the convertion.
177      *
178      * @param defaultValue  The default value to be returned
179      * @param locale        The locale
180      * @param pattern       The convertion pattern
181      */
182     public SqlDateLocaleConverter(final Object defaultValue, final Locale locale, final String pattern) {
183 
184         this(defaultValue, locale, pattern, false);
185     }
186 
187     /**
188      * Create a {@link org.apache.commons.beanutils.locale.LocaleConverter}
189      * that will return the specified default value
190      * if a conversion error occurs.
191      *
192      * @param defaultValue  The default value to be returned
193      * @param locale        The locale
194      * @param pattern       The convertion pattern
195      * @param locPattern    Indicate whether the pattern is localized or not
196      */
197     public SqlDateLocaleConverter(final Object defaultValue, final Locale locale, final String pattern, final boolean locPattern) {
198 
199         super(defaultValue, locale, pattern, locPattern);
200     }
201 
202 
203     // --------------------------------------------------------- Methods
204 
205     /**
206      * Convert the specified locale-sensitive input object into an output object of the
207      * specified type.
208      *
209      * @param value The input object to be converted
210      * @param pattern The pattern is used for the convertion
211      * @return The converted value
212      *
213      * @throws org.apache.commons.beanutils.ConversionException if conversion
214      * cannot be performed successfully
215      * @throws ParseException if an error occurs parsing a String to a Number
216      */
217     @Override
218     protected Object parse(final Object value, final String pattern) throws ParseException {
219 
220         return new Date(((java.util.Date) super.parse(value, pattern)).getTime());
221     }
222 }