KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > joda > time > convert > AbstractConverter


1 /*
2  * Copyright 2001-2006 Stephen Colebourne
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.joda.time.convert;
17
18 import org.joda.time.Chronology;
19 import org.joda.time.DateTimeUtils;
20 import org.joda.time.DateTimeZone;
21 import org.joda.time.PeriodType;
22 import org.joda.time.ReadablePartial;
23 import org.joda.time.chrono.ISOChronology;
24 import org.joda.time.format.DateTimeFormatter;
25
26 /**
27  * AbstractConverter simplifies the process of implementing a converter.
28  *
29  * @author Stephen Colebourne
30  * @since 1.0
31  */

32 public abstract class AbstractConverter implements Converter {
33
34     /**
35      * Restricted constructor.
36      */

37     protected AbstractConverter() {
38         super();
39     }
40
41     //-----------------------------------------------------------------------
42
/**
43      * Extracts the millis from an object of this convertor's type.
44      * <p>
45      * This implementation returns the current time.
46      *
47      * @param object the object to convert
48      * @param chrono the chronology to use, which is always non-null
49      * @return the millisecond value
50      */

51     public long getInstantMillis(Object JavaDoc object, Chronology chrono) {
52         return DateTimeUtils.currentTimeMillis();
53     }
54
55     //-----------------------------------------------------------------------
56
/**
57      * Extracts the chronology from an object of this convertor's type
58      * where the time zone is specified.
59      * <p>
60      * This implementation returns the ISO chronology.
61      *
62      * @param object the object to convert
63      * @param zone the specified zone to use, null means default zone
64      * @return the chronology, never null
65      */

66     public Chronology getChronology(Object JavaDoc object, DateTimeZone zone) {
67         return ISOChronology.getInstance(zone);
68     }
69
70     /**
71      * Extracts the chronology from an object of this convertor's type
72      * where the chronology is specified.
73      * <p>
74      * This implementation returns the chronology specified, or the
75      * ISO chronology in the default zone if null passed in.
76      *
77      * @param object the object to convert
78      * @param chrono the chronology to use, null means ISO default
79      * @return the chronology, never null
80      */

81     public Chronology getChronology(Object JavaDoc object, Chronology chrono) {
82         return DateTimeUtils.getChronology(chrono);
83     }
84
85     //-----------------------------------------------------------------------
86
/**
87      * Extracts the values of the partial from an object of this converter's type.
88      * The chrono parameter is a hint to the converter, should it require a
89      * chronology to aid in conversion.
90      * <p>
91      * This implementation calls {@link #getInstantMillis(Object, Chronology)}.
92      *
93      * @param fieldSource a partial that provides access to the fields.
94      * This partial may be incomplete and only getFieldType(int) should be used
95      * @param object the object to convert
96      * @param chrono the chronology to use, which is the non-null result of getChronology()
97      * @return the array of field values that match the fieldSource, must be non-null valid
98      * @throws ClassCastException if the object is invalid
99      */

100     public int[] getPartialValues(ReadablePartial fieldSource, Object JavaDoc object, Chronology chrono) {
101         long instant = getInstantMillis(object, chrono);
102         return chrono.get(fieldSource, instant);
103     }
104
105     /**
106      * Extracts the values of the partial from an object of this converter's type.
107      * The chrono parameter is a hint to the converter, should it require a
108      * chronology to aid in conversion.
109      * <p>
110      * This implementation calls {@link #getPartialValues(ReadablePartial, Object, Chronology)}.
111      *
112      * @param fieldSource a partial that provides access to the fields.
113      * This partial may be incomplete and only getFieldType(int) should be used
114      * @param object the object to convert
115      * @param chrono the chronology to use, which is the non-null result of getChronology()
116      * @param parser if converting from a String, the given parser is preferred
117      * @return the array of field values that match the fieldSource, must be non-null valid
118      * @throws ClassCastException if the object is invalid
119      * @since 1.3
120      */

121     public int[] getPartialValues(ReadablePartial fieldSource,
122             Object JavaDoc object, Chronology chrono, DateTimeFormatter parser) {
123         return getPartialValues(fieldSource, object, chrono);
124     }
125
126     //-----------------------------------------------------------------------
127
/**
128      * Selects a suitable period type for the given object.
129      *
130      * @param object the object to examine
131      * @return the period type, never null
132      */

133     public PeriodType getPeriodType(Object JavaDoc object) {
134         return PeriodType.standard();
135     }
136
137     //-----------------------------------------------------------------------
138
/**
139      * Checks if the input is a ReadableInterval.
140      * <p>
141      * If it is, then the calling code should cast and copy the fields directly.
142      *
143      * @param object the object to convert
144      * @param chrono the chronology to use, may be null
145      * @return true if the input is a ReadableInterval
146      */

147     public boolean isReadableInterval(Object JavaDoc object, Chronology chrono) {
148         return false;
149     }
150
151     //-----------------------------------------------------------------------
152
/**
153      * Gets a debugging string version of this converter.
154      *
155      * @return a debugging string
156      */

157     public String JavaDoc toString() {
158         return "Converter[" + (getSupportedType() == null ? "null" : getSupportedType().getName()) + "]";
159     }
160
161 }
162
Popular Tags