KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > slide > projector > descriptor > DateValueDescriptor


1 package org.apache.slide.projector.descriptor;
2
3 import java.text.DateFormat JavaDoc;
4 import java.text.ParseException JavaDoc;
5 import java.text.SimpleDateFormat JavaDoc;
6 import java.util.ArrayList JavaDoc;
7 import java.util.Date JavaDoc;
8 import java.util.List JavaDoc;
9
10 import org.apache.slide.projector.Context;
11 import org.apache.slide.projector.i18n.ErrorMessage;
12 import org.apache.slide.projector.value.DateValue;
13 import org.apache.slide.projector.value.Value;
14
15 public class DateValueDescriptor implements ValueDescriptor {
16     protected boolean constrained;
17     protected List JavaDoc allowedValues = new ArrayList JavaDoc();
18     protected Date JavaDoc earliest, latest;
19
20     public DateValueDescriptor() {
21         this.constrained = false;
22     }
23
24     public DateValueDescriptor(Date JavaDoc earliest, Date JavaDoc latest) {
25         constrained = true;
26         this.earliest = earliest;
27         this.latest = latest;
28     }
29
30     public boolean isConstrained() {
31         return constrained;
32     }
33
34     public void setEarliest(Date JavaDoc earliest) {
35         this.earliest = earliest;
36     }
37
38     public void setLatest(Date JavaDoc latest) {
39         this.latest = latest;
40     }
41
42     public Value valueOf(Object JavaDoc value, Context context) throws ValueCastException {
43         Date JavaDoc date = null;
44         if ( value instanceof DateValue ) {
45             return (DateValue)value;
46         } else {
47             try {
48                 String JavaDoc valueAsString = StringValueDescriptor.ANY.valueOf(value, null).toString();
49                 try {
50                     date = new Date JavaDoc(Long.valueOf(valueAsString).longValue());
51                 } catch ( NumberFormatException JavaDoc exception ) {
52                     try {
53                         date = DateFormat.getInstance().parse(valueAsString);
54                     } catch (ParseException JavaDoc e) {
55                         try {
56                             date = new SimpleDateFormat JavaDoc("yyyy-MM-dd'T'HH:mm:ss'Z'").parse(valueAsString);
57                         } catch (ParseException JavaDoc pe) {
58                             throw new ValueCastException(new ErrorMessage("uncastableDateValue", new Object JavaDoc[] { value }), pe);
59                         }
60                     }
61                 }
62             } catch ( ValueCastException exception ) {
63                 throw new ValueCastException(new ErrorMessage("uncastableDateValue", new Object JavaDoc[] { value }), exception);
64             }
65         }
66         return new DateValue(date);
67     }
68
69     public void validate(Value value, Context context) throws ValidationException {
70         Date JavaDoc date = ((DateValue)value).getDate();
71         if ( constrained && ( date.after(latest) || date.before(earliest) ) ) {
72             throw new ValidationException(new ErrorMessage("invalidDate", new Object JavaDoc[] { date, earliest, latest }));
73         }
74     }
75 }
Popular Tags