KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > taglibs > standard > lang > jpath > adapter > Convert


1 /*
2  * Copyright 1999,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 package org.apache.taglibs.standard.lang.jpath.adapter;
18
19 import java.text.DateFormat JavaDoc;
20 import java.text.DecimalFormat JavaDoc;
21 import java.text.NumberFormat JavaDoc;
22 import java.util.Collection JavaDoc;
23 import java.util.Date JavaDoc;
24 import java.util.GregorianCalendar JavaDoc;
25
26 public class Convert {
27
28     public static Double JavaDoc toDouble(Object JavaDoc o) throws ConversionException {
29         Double JavaDoc converted;
30         o = performBasicConversions(o);
31         if (o == null) {
32             converted = new Double JavaDoc(Double.NaN);
33         } else if (o instanceof Boolean JavaDoc) {
34             converted = toDouble((Boolean JavaDoc)o);
35         } else if (o instanceof Double JavaDoc) {
36             converted = toDouble((Double JavaDoc)o);
37         } else if (o instanceof String JavaDoc) {
38             converted = toDouble((String JavaDoc)o);
39         } else if (o instanceof JSPDate) {
40             converted = toDouble((JSPDate)o);
41         } else if (o instanceof JSPList) {
42             converted = toDouble((JSPList)o);
43         } else {
44             converted = toDouble(Convert.toString(o));
45             //throw new ConversionException("Object [" + o + "] cannot be "
46
//+ "converted to a Double");
47
}
48         return converted;
49     }
50
51     private static Double JavaDoc toDouble(Boolean JavaDoc b) throws ConversionException {
52         Double JavaDoc converted;
53         if (b.booleanValue() == true) {
54             converted = new Double JavaDoc(1);
55         } else {
56             converted = new Double JavaDoc(0);
57         }
58         return converted;
59     }
60
61     private static Double JavaDoc toDouble(Double JavaDoc d) throws ConversionException {
62         return d;
63     }
64
65     private static Double JavaDoc toDouble(String JavaDoc s) throws ConversionException {
66         Double JavaDoc converted;
67         try {
68             converted = Double.valueOf(s);
69         } catch (NumberFormatException JavaDoc nfe) {
70             converted = new Double JavaDoc(Double.NaN);
71         }
72         return converted;
73     }
74
75     private static Double JavaDoc toDouble(JSPDate d) throws ConversionException {
76         Double JavaDoc converted;
77         converted = d.getTime();
78         return converted;
79     }
80
81
82     private static Double JavaDoc toDouble(JSPList list) throws ConversionException {
83         Double JavaDoc converted;
84         converted = Convert.toDouble(Convert.toString(list));
85         return converted;
86     }
87
88
89     public static Boolean JavaDoc toBoolean(Object JavaDoc o) throws ConversionException {
90         Boolean JavaDoc converted;
91         o = performBasicConversions(o);
92         if (o == null) {
93             converted = Boolean.FALSE;
94         } else if (o instanceof Boolean JavaDoc) {
95             converted = toBoolean((Boolean JavaDoc)o);
96         } else if (o instanceof Double JavaDoc) {
97             converted = toBoolean((Double JavaDoc)o);
98         } else if (o instanceof String JavaDoc) {
99             converted = toBoolean((String JavaDoc)o);
100         } else if (o instanceof JSPDate) {
101             converted = toBoolean((JSPDate)o);
102         } else if (o instanceof JSPList) {
103             converted = toBoolean((JSPList)o);
104         } else {
105             converted = toBoolean(Convert.toString(o));
106             //throw new ConversionException("Object [" + o + "] cannot be "
107
//+ "converted to a Boolean");
108
}
109         return converted;
110     }
111
112     private static Boolean JavaDoc toBoolean(Boolean JavaDoc b) throws ConversionException {
113         return b;
114     }
115
116     private static Boolean JavaDoc toBoolean(Double JavaDoc d) throws ConversionException {
117         Boolean JavaDoc converted;
118         if (d == null) {
119             converted = Boolean.FALSE;
120         } else if (!d.isNaN() && d.doubleValue() != 0 && d.doubleValue() != -0) {
121             converted = Boolean.TRUE;
122         } else {
123             converted = Boolean.FALSE;
124         }
125         return converted;
126     }
127
128     private static Boolean JavaDoc toBoolean(String JavaDoc s) throws ConversionException {
129         Boolean JavaDoc converted;
130         if (s == null) {
131             converted = Boolean.FALSE;
132         } else if (s.length() != 0) {
133             converted = Boolean.TRUE;
134         } else {
135             converted = Boolean.FALSE;
136         }
137         return converted;
138     }
139
140     private static Boolean JavaDoc toBoolean(JSPDate d) throws ConversionException {
141         Boolean JavaDoc converted;
142         converted = Convert.toBoolean(Convert.toString(d));
143         return converted;
144     }
145
146     private static Boolean JavaDoc toBoolean(JSPList list) throws ConversionException {
147         Boolean JavaDoc converted;
148         if (list == null || !list.hasNext()) {
149             converted = Boolean.FALSE;
150         } else {
151             if (list.getPosition() != 0) {
152                 throw new ConversionException("cannot convert a list to "
153                         + "a Boolean if the list is not at the starting "
154                         + "position" );
155             }
156             converted = Boolean.TRUE;
157         }
158         return converted;
159     }
160
161
162     public static String JavaDoc toString(Object JavaDoc o) throws ConversionException {
163         String JavaDoc converted;
164         o = performBasicConversions(o);
165         if (o == null) {
166             converted = new String JavaDoc("");
167         } else if (o instanceof Boolean JavaDoc) {
168             converted = toString((Boolean JavaDoc)o);
169         } else if (o instanceof Double JavaDoc) {
170             converted = toString((Double JavaDoc)o);
171         } else if (o instanceof String JavaDoc) {
172             converted = toString((String JavaDoc)o);
173         } else if (o instanceof JSPDate) {
174             converted = toString((JSPDate)o);
175         } else if (o instanceof JSPList) {
176             converted = toString((JSPList)o);
177         } else {
178             converted = o.toString();
179             //throw new ConversionException("Object [" + o + "] cannot be "
180
//+ "converted to a String");
181
}
182         return converted;
183     }
184
185     private static String JavaDoc toString(Boolean JavaDoc b) throws ConversionException {
186         return b.toString();
187     }
188
189     private static String JavaDoc toString(Double JavaDoc d) throws ConversionException {
190         String JavaDoc converted;
191         if (d == null || d.isNaN()) {
192             converted = new String JavaDoc("NaN");
193         } else if (d.doubleValue() == 0 || d.doubleValue() == -0) {
194             converted = new String JavaDoc("0");
195         } else if (d.doubleValue() == Double.POSITIVE_INFINITY) {
196             converted = new String JavaDoc("Infinity");
197         } else if (d.doubleValue() == Double.NEGATIVE_INFINITY) {
198             converted = new String JavaDoc("-Infinity");
199         } else if (Math.floor(d.doubleValue()) == d.doubleValue()) {
200             NumberFormat JavaDoc form;
201             form = NumberFormat.getInstance();
202             try {
203                 ((DecimalFormat JavaDoc)form).applyPattern("#");
204                 converted = form.format(d);
205             } catch (IllegalArgumentException JavaDoc iae) {
206                 converted = new String JavaDoc("NaN");
207             }
208         } else {
209             converted = d.toString();
210         }
211         return converted;
212     }
213
214     private static String JavaDoc toString(String JavaDoc s) throws ConversionException {
215         return s;
216     }
217
218     private static String JavaDoc toString(JSPDate d) throws ConversionException {
219         String JavaDoc converted;
220         converted = DateFormat.getDateInstance().format(new Date JavaDoc(d.getTime().longValue()));
221         return converted;
222     }
223
224     private static String JavaDoc toString(JSPList list) throws ConversionException {
225         String JavaDoc converted;
226         if (list == null || !list.hasNext()) {
227             converted = "";
228         } else {
229             if (list.getPosition() != 0) {
230                 throw new ConversionException("cannot convert a list to "
231                         + "a String if the list is not at the starting "
232                         + "position" );
233             }
234             converted = Convert.toString(list.next());
235         }
236         return converted;
237     }
238
239     public static JSPDate toJSPDate(Object JavaDoc o) throws ConversionException {
240         JSPDate converted;
241         o = performBasicConversions(o);
242         if (o == null) {
243             throw new ConversionException("cannot convert null to a JSPDate");
244         } else if (o instanceof JSPDate) {
245             converted = toJSPDate((JSPDate)o);
246         } else {
247             throw new ConversionException("Object [" + o + "] cannot be "
248                     + "converted to a JSPList");
249         }
250         return converted;
251     }
252
253     private static JSPDate toJSPDate(JSPDate date) throws ConversionException {
254         return date;
255     }
256
257     private static JSPDate toJSPDate(GregorianCalendar JavaDoc gc) throws ConversionException {
258         return (JSPDate)GregorianCalendarAdapter.adapt(gc);
259     }
260
261     public static JSPList toJSPList(Object JavaDoc o) throws ConversionException {
262         JSPList converted;
263         o = performBasicConversions(o);
264         if (o == null) {
265             throw new ConversionException("cannot convert null to a JSPList");
266         } else if (o instanceof JSPList) {
267             converted = toJSPList((JSPList)o);
268         } else {
269             throw new ConversionException("Object [" + o + "] cannot be "
270                     + "converted to a JSPList");
271         }
272         return converted;
273     }
274
275     private static JSPList toJSPList(JSPList list) throws ConversionException {
276         return list;
277     }
278
279     private static Object JavaDoc performBasicConversions(Object JavaDoc o) {
280         Object JavaDoc converted;
281         if (o == null) {
282             converted = null;
283         } else if (o instanceof Short JavaDoc) {
284             converted = new Double JavaDoc(((Short JavaDoc)o).toString());
285         } else if (o instanceof Integer JavaDoc) {
286             converted = new Double JavaDoc(((Integer JavaDoc)o).toString());
287         } else if (o instanceof Float JavaDoc) {
288             converted = new Double JavaDoc(((Float JavaDoc)o).toString());
289         } else if (o instanceof Long JavaDoc) {
290             converted = new Double JavaDoc(((Long JavaDoc)o).toString());
291         } else if (o instanceof Byte JavaDoc) {
292             converted = new String JavaDoc(((Byte JavaDoc)o).toString());
293         } else if (o instanceof Character JavaDoc) {
294             converted = new String JavaDoc(((Character JavaDoc)o).toString());
295         } else {
296             converted = o;
297         }
298         converted = Convert.toJSPType(converted);
299         return converted;
300     }
301
302     public static Object JavaDoc toJSPType(Object JavaDoc o) {
303         Object JavaDoc converted;
304         if (o == null) {
305             converted = null;
306         } else if (o instanceof Collection JavaDoc) {
307             converted = CollectionAdapter.adapt(o);
308         } else if (o instanceof GregorianCalendar JavaDoc) {
309             converted = GregorianCalendarAdapter.adapt(o);
310         } else {
311             converted = o;
312         }
313         return converted;
314     }
315
316 }
317
Popular Tags