KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > tigris > scarab > util > xmlissues > BaseDate


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

48
49 import java.util.Date JavaDoc;
50 import java.text.ParseException JavaDoc;
51 import java.text.SimpleDateFormat JavaDoc;
52
53 import org.apache.commons.lang.StringUtils;
54
55 /**
56  * <p><code>BaseDate</code> is a base class for Modified and Created dates.</p>
57  *
58  * @author <a HREF="mailto:jon@latchkey.com">Jon Scott Stevens</a>
59  * @author <a HREF="mailto:dlr@collab.net">Daniel Rall</a>
60  * @version $Id: BaseDate.java 8470 2003-08-12 06:29:37Z parun $
61  */

62 public class BaseDate implements java.io.Serializable JavaDoc
63 {
64     /**
65      * The default date format which we'll try to parse with if a
66      * format is not specified.
67      */

68     private static final String JavaDoc DEFAULT_FORMAT = "yyyy-MM-dd HH:mm:ss z";
69
70     private String JavaDoc format = null;
71     private String JavaDoc timestamp = null;
72
73     public void setFormat(String JavaDoc format)
74     {
75         this.format = format;
76     }
77
78     public String JavaDoc getFormat()
79     {
80         return this.format;
81     }
82
83     public void setTimestamp(String JavaDoc timestamp)
84     {
85         this.timestamp = timestamp;
86     }
87
88     public String JavaDoc getTimestamp()
89     {
90         return this.timestamp;
91     }
92
93     /**
94      * @return The date inferred from the {@link #format} (defaults to
95      * {@link #DEFAULT_FORMAT}) and {@link #timestamp} instance
96      * fields, or <code>null</code> if insufficient information.
97      * @exception ParseException Error parsing {@link #timestamp}
98      * using {@link #format}.
99      */

100     public Date JavaDoc getDate()
101         throws ParseException JavaDoc
102     {
103         Date JavaDoc date = null;
104         String JavaDoc ts = getTimestamp();
105         if (StringUtils.isNotEmpty(ts))
106         {
107             String JavaDoc format = getFormat();
108             boolean haveFormat = StringUtils.isNotEmpty(format);
109             try
110             {
111                 SimpleDateFormat JavaDoc sdf =
112                     new SimpleDateFormat JavaDoc(haveFormat ? format : DEFAULT_FORMAT);
113                 sdf.setLenient(false);
114                 date = sdf.parse(getTimestamp());
115             }
116             catch (ParseException JavaDoc e)
117             {
118                 if (haveFormat)
119                 {
120                     // When a format was explicitly specified,
121
// propogate any parsing problems.
122
throw e;
123                 }
124             }
125         }
126         return date;
127     }
128
129     public String JavaDoc toString()
130     {
131         return "format=" + format + "; timestamp=" + timestamp;
132     }
133 }
134
Popular Tags