KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > fulcrum > intake > model > DateStringField


1 package org.apache.fulcrum.intake.model;
2
3 /* ====================================================================
4  * The Apache Software License, Version 1.1
5  *
6  * Copyright (c) 2001 The Apache Software Foundation. All rights
7  * reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  *
13  * 1. Redistributions of source code must retain the above copyright
14  * notice, this list of conditions and the following disclaimer.
15  *
16  * 2. Redistributions in binary form must reproduce the above copyright
17  * notice, this list of conditions and the following disclaimer in
18  * the documentation and/or other materials provided with the
19  * distribution.
20  *
21  * 3. The end-user documentation included with the redistribution,
22  * if any, must include the following acknowledgment:
23  * "This product includes software developed by the
24  * Apache Software Foundation (http://www.apache.org/)."
25  * Alternately, this acknowledgment may appear in the software itself,
26  * if and wherever such third-party acknowledgments normally appear.
27  *
28  * 4. The names "Apache" and "Apache Software Foundation" and
29  * "Apache Turbine" must not be used to endorse or promote products
30  * derived from this software without prior written permission. For
31  * written permission, please contact apache@apache.org.
32  *
33  * 5. Products derived from this software may not be called "Apache",
34  * "Apache Turbine", nor may "Apache" appear in their name, without
35  * prior written permission of the Apache Software Foundation.
36  *
37  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
38  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
39  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
40  * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
41  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
42  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
43  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
44  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
45  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
46  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
47  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
48  * SUCH DAMAGE.
49  * ====================================================================
50  *
51  * This software consists of voluntary contributions made by many
52  * individuals on behalf of the Apache Software Foundation. For more
53  * information on the Apache Software Foundation, please see
54  * <http://www.apache.org/>.
55  */

56
57 import java.text.DateFormat JavaDoc;
58 import java.text.ParseException JavaDoc;
59 import java.util.Date JavaDoc;
60
61 import org.apache.fulcrum.intake.validator.DateStringValidator;
62 import org.apache.fulcrum.intake.xmlmodel.XmlField;
63
64 /**
65  * Field for date inputs as free form text. The parsing of date strings
66  * is dependent on any rules that are defined, so this field will expect that
67  * any validator will be (or extend) DateStringValidator.
68  *
69  * @author <a HREF="mailto:jmcnally@collab.net">John McNally</a>
70  * @author <a HREF="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a>
71  * @version $Id: DateStringField.java,v 1.1 2004/11/12 10:25:38 epugh Exp $
72  */

73 public class DateStringField
74     extends Field
75 {
76     private DateFormat JavaDoc df = null;
77
78     public DateStringField(XmlField field, Group group)
79         throws Exception JavaDoc
80     {
81         super(field, group);
82         
83         if ( validator == null || !(validator instanceof DateStringValidator))
84         {
85             df = DateFormat.getInstance();
86             df.setLenient(true);
87         }
88     }
89
90     /**
91      * Sets the default value for a DateString field
92      *
93      * @param prop Parameter for the default values
94      */

95     protected void setDefaultValue(String JavaDoc prop)
96     {
97         defaultValue = prop;
98     }
99
100     /**
101      * A suitable validator.
102      *
103      * @return "DateStringValidator"
104      */

105     protected String JavaDoc getDefaultValidator()
106     {
107         return "org.apache.fulcrum.intake.validator.DateStringValidator";
108     }
109
110     /**
111      * converts the parameter to the correct Object.
112      */

113     protected void doSetValue()
114     {
115         if ( isMultiValued )
116         {
117             String JavaDoc[] ss = pp.getStrings(getKey());
118             Date JavaDoc[] dates = new Date JavaDoc[ss.length];
119             for (int i=0; i<ss.length; i++)
120             {
121                 dates[i] = getDate(ss[i]);
122             }
123             setTestValue(dates);
124         }
125         else
126         {
127             setTestValue( getDate(pp.getString(getKey())) );
128         }
129     }
130
131     private Date JavaDoc getDate(String JavaDoc dateString)
132     {
133         Date JavaDoc date = null;
134         try
135         {
136             // FIXME: Canonicalize user-entered date strings.
137
if (validator != null && validator instanceof DateStringValidator)
138             {
139                 date = ((DateStringValidator)validator).parse(dateString);
140             }
141             else
142             {
143                 date = df.parse(dateString);
144             }
145         }
146         catch (ParseException JavaDoc e)
147         {
148             //ignore, return null
149
}
150         return date;
151     }
152
153     public String JavaDoc toString()
154     {
155         String JavaDoc s = null;
156         Object JavaDoc value = getValue();
157         if (value == null)
158         {
159             s = "";
160         }
161         else if (value instanceof String JavaDoc)
162         {
163             s = (String JavaDoc)value;
164         }
165         else if (validator != null && validator instanceof DateStringValidator)
166         {
167             s= ((DateStringValidator)validator).format((Date JavaDoc)value);
168         }
169         else
170         {
171             s = df.format((Date JavaDoc)value);
172         }
173         return s;
174     }
175 }
176
Popular Tags