KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > oddjob > values > types > FormatType


1 /*
2  * Copyright (c) 2004, Rob Gordon.
3  */

4 package org.oddjob.values.types;
5
6 import java.text.DateFormat JavaDoc;
7 import java.text.DecimalFormat JavaDoc;
8 import java.text.NumberFormat JavaDoc;
9 import java.text.ParseException JavaDoc;
10 import java.text.SimpleDateFormat JavaDoc;
11 import java.util.Date JavaDoc;
12 import java.util.TimeZone JavaDoc;
13
14 /**
15  * @oddjob.description A type which can either format a
16  * number or a date into the given text format.
17  * <p>
18  * Form more information on the number format see
19  * <a HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/text/DecimalFormat.html">
20  * http://java.sun.com/j2se/1.4.2/docs/api/java/text/DecimalFormat.html</a>
21  * <p>
22  * For more information on the date format see
23  * <a HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html">
24  * http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html</a>.
25  *
26  *
27  * @author Rob Gordon.
28  */

29 public class FormatType {
30
31     /**
32      * @oddjob.property
33      * @oddjob.description The format.
34      * @oddjob.required Yes.
35      */

36     private String JavaDoc format;
37     
38     /**
39      * @oddjob.property timeZone
40      * @oddjob.description The time zone to use for a date format.
41      * @oddjob.required No.
42      */

43     private TimeZone JavaDoc timeZone;
44     
45     /**
46      * @oddjob.property
47      * @oddjob.description A date to format.
48      * @oddjob.required Yes if number isn't supplied.
49      */

50     private Date JavaDoc date;
51     
52     /**
53      * @oddjob.property
54      * @oddjob.description A number to format.
55      * @oddjob.required Yes if date isn't supplied.
56      */

57     private Number JavaDoc number;
58     
59     public String JavaDoc valueFor(Class JavaDoc required) throws ParseException JavaDoc {
60         if (format == null) {
61             return null;
62         }
63         if (date != null) {
64             DateFormat JavaDoc dateFormat = new SimpleDateFormat JavaDoc(format);
65             if (timeZone != null) {
66                 dateFormat.setTimeZone(timeZone);
67             }
68             return dateFormat.format(date);
69         }
70         if (number != null) {
71             NumberFormat JavaDoc numberFormat = new DecimalFormat JavaDoc(format);
72             return numberFormat.format(number);
73         }
74         return null;
75     }
76     
77     public void setDate(Date JavaDoc date) {
78         if (date == null) {
79             this.date = null;
80         }
81         else {
82             this.date = new Date JavaDoc(date.getTime());
83         }
84     }
85     
86     public void setFormat(String JavaDoc format) {
87         this.format = format;
88     }
89
90     public void setTimeZone(String JavaDoc timeZoneId) {
91         this.timeZone = TimeZone.getTimeZone(timeZoneId);
92     }
93     
94     public void setNumber(Number JavaDoc number) {
95         this.number = number;
96     }
97     
98     public String JavaDoc toString() {
99         try {
100             return valueFor(null);
101         } catch (ParseException JavaDoc e) {
102             return e.getMessage();
103         }
104     }
105 }
106
Popular Tags