KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > commons > beanutils > converters > DoubleConverter


1 /*
2  * Copyright 2001-2004 The Apache Software Foundation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16
17
18 package org.apache.commons.beanutils.converters;
19
20
21 import org.apache.commons.beanutils.ConversionException;
22 import org.apache.commons.beanutils.Converter;
23
24
25 /**
26  * <p>Standard {@link Converter} implementation that converts an incoming
27  * String into a <code>java.lang.Double</code> object, optionally using a
28  * default value or throwing a {@link ConversionException} if a conversion
29  * error occurs.</p>
30  *
31  * @author Craig R. McClanahan
32  * @version $Revision: 1.8 $ $Date: 2004/02/28 13:18:34 $
33  * @since 1.3
34  */

35
36 public final class DoubleConverter implements Converter {
37
38
39     // ----------------------------------------------------------- Constructors
40

41
42     /**
43      * Create a {@link Converter} that will throw a {@link ConversionException}
44      * if a conversion error occurs.
45      */

46     public DoubleConverter() {
47
48         this.defaultValue = null;
49         this.useDefault = false;
50
51     }
52
53
54     /**
55      * Create a {@link Converter} that will return the specified default value
56      * if a conversion error occurs.
57      *
58      * @param defaultValue The default value to be returned
59      */

60     public DoubleConverter(Object JavaDoc defaultValue) {
61
62         this.defaultValue = defaultValue;
63         this.useDefault = true;
64
65     }
66
67
68     // ----------------------------------------------------- Instance Variables
69

70
71     /**
72      * The default value specified to our Constructor, if any.
73      */

74     private Object JavaDoc defaultValue = null;
75
76
77     /**
78      * Should we return the default value on conversion errors?
79      */

80     private boolean useDefault = true;
81
82
83     // --------------------------------------------------------- Public Methods
84

85
86     /**
87      * Convert the specified input object into an output object of the
88      * specified type.
89      *
90      * @param type Data type to which this value should be converted
91      * @param value The input value to be converted
92      *
93      * @exception ConversionException if conversion cannot be performed
94      * successfully
95      */

96     public Object JavaDoc convert(Class JavaDoc type, Object JavaDoc value) {
97
98         if (value == null) {
99             if (useDefault) {
100                 return (defaultValue);
101             } else {
102                 throw new ConversionException("No value specified");
103             }
104         }
105
106         if (value instanceof Double JavaDoc) {
107             return (value);
108         } else if(value instanceof Number JavaDoc) {
109             return new Double JavaDoc(((Number JavaDoc)value).doubleValue());
110         }
111             
112
113         try {
114             return (new Double JavaDoc(value.toString()));
115         } catch (Exception JavaDoc e) {
116             if (useDefault) {
117                 return (defaultValue);
118             } else {
119                 throw new ConversionException(e);
120             }
121         }
122
123     }
124
125
126 }
127
Popular Tags