KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > appfuse > util > DateConverter


1 package org.appfuse.util;
2
3 import java.text.DateFormat JavaDoc;
4 import java.text.SimpleDateFormat JavaDoc;
5
6 import java.util.Date JavaDoc;
7 import java.sql.Timestamp JavaDoc;
8
9 import org.apache.commons.beanutils.ConversionException;
10 import org.apache.commons.beanutils.Converter;
11 import org.apache.commons.lang.StringUtils;
12
13
14 /**
15  * This class is converts a java.util.Date to a String
16  * and a String to a java.util.Date.
17  *
18  * <p>
19  * <a HREF="DateConverter.java.htm"><i>View Source</i></a>
20  * </p>
21  *
22  * @author <a HREF="mailto:matt@raibledesigns.com">Matt Raible</a>
23  */

24 public class DateConverter implements Converter {
25
26     public Object JavaDoc convert(Class JavaDoc type, Object JavaDoc value) {
27         if (value == null) {
28             return null;
29         } else if (type == Timestamp JavaDoc.class) {
30             return convertToDate(type, value, DateUtil.getDateTimePattern());
31         } else if (type == Date JavaDoc.class) {
32             return convertToDate(type, value, DateUtil.getDatePattern());
33         } else if (type == String JavaDoc.class) {
34             return convertToString(type, value);
35         }
36
37         throw new ConversionException("Could not convert " +
38                                       value.getClass().getName() + " to " +
39                                       type.getName());
40     }
41
42     protected Object JavaDoc convertToDate(Class JavaDoc type, Object JavaDoc value, String JavaDoc pattern) {
43         DateFormat JavaDoc df = new SimpleDateFormat JavaDoc(pattern);
44         if (value instanceof String JavaDoc) {
45             try {
46                 if (StringUtils.isEmpty(value.toString())) {
47                     return null;
48                 }
49
50                 Date JavaDoc date = df.parse((String JavaDoc) value);
51                 if (type.equals(Timestamp JavaDoc.class)) {
52                     return new Timestamp JavaDoc(date.getTime());
53                 }
54                 return date;
55             } catch (Exception JavaDoc pe) {
56                 pe.printStackTrace();
57                 throw new ConversionException("Error converting String to Date");
58             }
59         }
60
61         throw new ConversionException("Could not convert " +
62                                       value.getClass().getName() + " to " +
63                                       type.getName());
64     }
65
66     protected Object JavaDoc convertToString(Class JavaDoc type, Object JavaDoc value) {
67
68         if (value instanceof Date JavaDoc) {
69             DateFormat JavaDoc df = new SimpleDateFormat JavaDoc(DateUtil.getDatePattern());
70             if (value instanceof Timestamp JavaDoc) {
71                 df = new SimpleDateFormat JavaDoc(DateUtil.getDateTimePattern());
72             }
73     
74             try {
75                 return df.format(value);
76             } catch (Exception JavaDoc e) {
77                 e.printStackTrace();
78                 throw new ConversionException("Error converting Date to String");
79             }
80         } else {
81             return value.toString();
82         }
83     }
84 }
85
Popular Tags