EMMA Coverage Report (generated Tue Oct 28 00:01:11 GMT 2008)
[all classes][org.joda.time.chrono]

COVERAGE SUMMARY FOR SOURCE FILE [BaseChronology.java]

nameclass, %method, %block, %line, %
BaseChronology.java100% (1/1)26%  (12/46)70%  (384/550)67%  (71/106)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class BaseChronology100% (1/1)26%  (12/46)70%  (384/550)67%  (71/106)
centuries (): DurationField 0%   (0/1)0%   (0/3)0%   (0/1)
centuryOfEra (): DateTimeField 0%   (0/1)0%   (0/5)0%   (0/1)
clockhourOfDay (): DateTimeField 0%   (0/1)0%   (0/5)0%   (0/1)
clockhourOfHalfday (): DateTimeField 0%   (0/1)0%   (0/5)0%   (0/1)
dayOfMonth (): DateTimeField 0%   (0/1)0%   (0/5)0%   (0/1)
dayOfWeek (): DateTimeField 0%   (0/1)0%   (0/5)0%   (0/1)
dayOfYear (): DateTimeField 0%   (0/1)0%   (0/5)0%   (0/1)
days (): DurationField 0%   (0/1)0%   (0/3)0%   (0/1)
era (): DateTimeField 0%   (0/1)0%   (0/5)0%   (0/1)
halfdayOfDay (): DateTimeField 0%   (0/1)0%   (0/5)0%   (0/1)
halfdays (): DurationField 0%   (0/1)0%   (0/3)0%   (0/1)
hourOfDay (): DateTimeField 0%   (0/1)0%   (0/5)0%   (0/1)
hourOfHalfday (): DateTimeField 0%   (0/1)0%   (0/5)0%   (0/1)
hours (): DurationField 0%   (0/1)0%   (0/3)0%   (0/1)
millis (): DurationField 0%   (0/1)0%   (0/3)0%   (0/1)
millisOfDay (): DateTimeField 0%   (0/1)0%   (0/5)0%   (0/1)
millisOfSecond (): DateTimeField 0%   (0/1)0%   (0/5)0%   (0/1)
minuteOfDay (): DateTimeField 0%   (0/1)0%   (0/5)0%   (0/1)
minuteOfHour (): DateTimeField 0%   (0/1)0%   (0/5)0%   (0/1)
minutes (): DurationField 0%   (0/1)0%   (0/3)0%   (0/1)
monthOfYear (): DateTimeField 0%   (0/1)0%   (0/5)0%   (0/1)
months (): DurationField 0%   (0/1)0%   (0/3)0%   (0/1)
secondOfDay (): DateTimeField 0%   (0/1)0%   (0/5)0%   (0/1)
secondOfMinute (): DateTimeField 0%   (0/1)0%   (0/5)0%   (0/1)
seconds (): DurationField 0%   (0/1)0%   (0/3)0%   (0/1)
weekOfWeekyear (): DateTimeField 0%   (0/1)0%   (0/5)0%   (0/1)
weeks (): DurationField 0%   (0/1)0%   (0/3)0%   (0/1)
weekyear (): DateTimeField 0%   (0/1)0%   (0/5)0%   (0/1)
weekyearOfCentury (): DateTimeField 0%   (0/1)0%   (0/5)0%   (0/1)
weekyears (): DurationField 0%   (0/1)0%   (0/3)0%   (0/1)
year (): DateTimeField 0%   (0/1)0%   (0/5)0%   (0/1)
yearOfCentury (): DateTimeField 0%   (0/1)0%   (0/5)0%   (0/1)
yearOfEra (): DateTimeField 0%   (0/1)0%   (0/5)0%   (0/1)
years (): DurationField 0%   (0/1)0%   (0/3)0%   (0/1)
validate (ReadablePartial, int []): void 100% (1/1)85%  (104/122)94%  (15/16)
BaseChronology (): void 100% (1/1)100% (3/3)100% (2/2)
add (ReadablePeriod, long, int): long 100% (1/1)100% (37/37)100% (6/6)
add (long, long, int): long 100% (1/1)100% (16/16)100% (4/4)
eras (): DurationField 100% (1/1)100% (3/3)100% (1/1)
get (ReadablePartial, long): int [] 100% (1/1)100% (25/25)100% (5/5)
get (ReadablePeriod, long): int [] 100% (1/1)100% (44/44)100% (11/11)
get (ReadablePeriod, long, long): int [] 100% (1/1)100% (39/39)100% (9/9)
getDateTimeMillis (int, int, int, int): long 100% (1/1)100% (24/24)100% (4/4)
getDateTimeMillis (int, int, int, int, int, int, int): long 100% (1/1)100% (42/42)100% (7/7)
getDateTimeMillis (long, int, int, int, int): long 100% (1/1)100% (24/24)100% (4/4)
set (ReadablePartial, long): long 100% (1/1)100% (23/23)100% (3/3)

1/*
2 *  Copyright 2001-2005 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 */
16package org.joda.time.chrono;
17 
18import java.io.Serializable;
19 
20import org.joda.time.Chronology;
21import org.joda.time.DateTimeField;
22import org.joda.time.DateTimeFieldType;
23import org.joda.time.DateTimeZone;
24import org.joda.time.DurationField;
25import org.joda.time.DurationFieldType;
26import org.joda.time.IllegalFieldValueException;
27import org.joda.time.ReadablePartial;
28import org.joda.time.ReadablePeriod;
29import org.joda.time.field.FieldUtils;
30import org.joda.time.field.UnsupportedDateTimeField;
31import org.joda.time.field.UnsupportedDurationField;
32 
33/**
34 * BaseChronology provides a skeleton implementation for chronology
35 * classes. Many utility methods are defined, but all fields are unsupported.
36 * <p>
37 * BaseChronology is thread-safe and immutable, and all subclasses must be
38 * as well.
39 *
40 * @author Brian S O'Neill
41 * @since 1.0
42 */
43public abstract class BaseChronology
44        extends Chronology
45        implements Serializable {
46 
47    /** Serialization version. */
48    private static final long serialVersionUID = -7310865996721419676L;
49 
50    /**
51     * Restricted constructor.
52     */
53    protected BaseChronology() {
54        super();
55    }
56 
57    /**
58     * Returns the DateTimeZone that this Chronology operates in, or null if
59     * unspecified.
60     *
61     * @return DateTimeZone null if unspecified
62     */
63    public abstract DateTimeZone getZone();
64 
65    /**
66     * Returns an instance of this Chronology that operates in the UTC time
67     * zone. Chronologies that do not operate in a time zone or are already
68     * UTC must return themself.
69     *
70     * @return a version of this chronology that ignores time zones
71     */
72    public abstract Chronology withUTC();
73    
74    /**
75     * Returns an instance of this Chronology that operates in any time zone.
76     *
77     * @return a version of this chronology with a specific time zone
78     * @param zone to use, or default if null
79     * @see org.joda.time.chrono.ZonedChronology
80     */
81    public abstract Chronology withZone(DateTimeZone zone);
82 
83    /**
84     * Returns a datetime millisecond instant, formed from the given year,
85     * month, day, and millisecond values. The set of given values must refer
86     * to a valid datetime, or else an IllegalArgumentException is thrown.
87     * <p>
88     * The default implementation calls upon separate DateTimeFields to
89     * determine the result. Subclasses are encouraged to provide a more
90     * efficient implementation.
91     *
92     * @param year year to use
93     * @param monthOfYear month to use
94     * @param dayOfMonth day of month to use
95     * @param millisOfDay millisecond to use
96     * @return millisecond instant from 1970-01-01T00:00:00Z
97     */
98    public long getDateTimeMillis(int year, int monthOfYear, int dayOfMonth,
99                                  int millisOfDay)
100        throws IllegalArgumentException
101    {
102        long instant = year().set(0, year);
103        instant = monthOfYear().set(instant, monthOfYear);
104        instant = dayOfMonth().set(instant, dayOfMonth);
105        return millisOfDay().set(instant, millisOfDay);
106    }
107 
108    /**
109     * Returns a datetime millisecond instant, formed from the given year,
110     * month, day, hour, minute, second, and millisecond values. The set of
111     * given values must refer to a valid datetime, or else an
112     * IllegalArgumentException is thrown.
113     * <p>
114     * The default implementation calls upon separate DateTimeFields to
115     * determine the result. Subclasses are encouraged to provide a more
116     * efficient implementation.
117     *
118     * @param year year to use
119     * @param monthOfYear month to use
120     * @param dayOfMonth day of month to use
121     * @param hourOfDay hour to use
122     * @param minuteOfHour minute to use
123     * @param secondOfMinute second to use
124     * @param millisOfSecond millisecond to use
125     * @return millisecond instant from 1970-01-01T00:00:00Z
126     */
127    public long getDateTimeMillis(int year, int monthOfYear, int dayOfMonth,
128                                  int hourOfDay, int minuteOfHour,
129                                  int secondOfMinute, int millisOfSecond)
130        throws IllegalArgumentException
131    {
132        long instant = year().set(0, year);
133        instant = monthOfYear().set(instant, monthOfYear);
134        instant = dayOfMonth().set(instant, dayOfMonth);
135        instant = hourOfDay().set(instant, hourOfDay);
136        instant = minuteOfHour().set(instant, minuteOfHour);
137        instant = secondOfMinute().set(instant, secondOfMinute);
138        return millisOfSecond().set(instant, millisOfSecond);
139    }
140 
141    /**
142     * Returns a datetime millisecond instant, from from the given instant,
143     * hour, minute, second, and millisecond values. The set of given values
144     * must refer to a valid datetime, or else an IllegalArgumentException is
145     * thrown.
146     * <p>
147     * The default implementation calls upon separate DateTimeFields to
148     * determine the result. Subclasses are encouraged to provide a more
149     * efficient implementation.
150     *
151     * @param instant instant to start from
152     * @param hourOfDay hour to use
153     * @param minuteOfHour minute to use
154     * @param secondOfMinute second to use
155     * @param millisOfSecond millisecond to use
156     * @return millisecond instant from 1970-01-01T00:00:00Z
157     */
158    public long getDateTimeMillis(long instant,
159                                  int hourOfDay, int minuteOfHour,
160                                  int secondOfMinute, int millisOfSecond)
161        throws IllegalArgumentException
162    {
163        instant = hourOfDay().set(instant, hourOfDay);
164        instant = minuteOfHour().set(instant, minuteOfHour);
165        instant = secondOfMinute().set(instant, secondOfMinute);
166        return millisOfSecond().set(instant, millisOfSecond);
167    }
168 
169    //-----------------------------------------------------------------------
170    /**
171     * Validates whether the fields stored in a partial instant are valid.
172     * <p>
173     * This implementation uses {@link DateTimeField#getMinimumValue(ReadablePartial, int[])}
174     * and {@link DateTimeField#getMaximumValue(ReadablePartial, int[])}.
175     *
176     * @param partial  the partial instant to validate
177     * @param values  the values to validate, not null
178     * @throws IllegalArgumentException if the instant is invalid
179     */
180    public void validate(ReadablePartial partial, int[] values) {
181        // check values in standard range, catching really stupid cases like -1
182        // this means that the second check will not hit trouble
183        int size = partial.size();
184        for (int i = 0; i < size; i++) {
185            int value = values[i];
186            DateTimeField field = partial.getField(i);
187            if (value < field.getMinimumValue()) {
188                throw new IllegalFieldValueException
189                    (field.getType(), new Integer(value),
190                     new Integer(field.getMinimumValue()), null);
191            }
192            if (value > field.getMaximumValue()) {
193                throw new IllegalFieldValueException
194                    (field.getType(), new Integer(value),
195                     null, new Integer(field.getMaximumValue()));
196            }
197        }
198        // check values in specific range, catching really odd cases like 30th Feb
199        for (int i = 0; i < size; i++) {
200            int value = values[i];
201            DateTimeField field = partial.getField(i);
202            if (value < field.getMinimumValue(partial, values)) {
203                throw new IllegalFieldValueException
204                    (field.getType(), new Integer(value),
205                     new Integer(field.getMinimumValue(partial, values)), null);
206            }
207            if (value > field.getMaximumValue(partial, values)) {
208                throw new IllegalFieldValueException
209                    (field.getType(), new Integer(value),
210                     null, new Integer(field.getMaximumValue(partial, values)));
211            }
212        }
213    }
214 
215    /**
216     * Gets the values of a partial from an instant.
217     *
218     * @param partial  the partial instant to use
219     * @param instant  the instant to query
220     * @return the values of the partial extracted from the instant
221     */
222    public int[] get(ReadablePartial partial, long instant) {
223        int size = partial.size();
224        int[] values = new int[size];
225        for (int i = 0; i < size; i++) {
226            values[i] = partial.getFieldType(i).getField(this).get(instant);
227        }
228        return values;
229    }
230 
231    /**
232     * Sets the partial into the instant.
233     *
234     * @param partial  the partial instant to use
235     * @param instant  the instant to update
236     * @return the updated instant
237     */
238    public long set(ReadablePartial partial, long instant) {
239        for (int i = 0, isize = partial.size(); i < isize; i++) {
240            instant = partial.getFieldType(i).getField(this).set(instant, partial.getValue(i));
241        }
242        return instant;
243    }
244 
245    //-----------------------------------------------------------------------
246    /**
247     * Gets the values of a period from an interval.
248     *
249     * @param period  the period instant to use
250     * @param startInstant  the start instant of an interval to query
251     * @param endInstant  the start instant of an interval to query
252     * @return the values of the period extracted from the interval
253     */
254    public int[] get(ReadablePeriod period, long startInstant, long endInstant) {
255        int size = period.size();
256        int[] values = new int[size];
257        if (startInstant != endInstant) {
258            for (int i = 0; i < size; i++) {
259                DurationField field = period.getFieldType(i).getField(this);
260                int value = field.getDifference(endInstant, startInstant);
261                startInstant = field.add(startInstant, value);
262                values[i] = value;
263            }
264        }
265        return values;
266    }
267 
268    /**
269     * Gets the values of a period from an interval.
270     *
271     * @param period  the period instant to use
272     * @param duration  the duration to query
273     * @return the values of the period extracted from the duration
274     */
275    public int[] get(ReadablePeriod period, long duration) {
276        int size = period.size();
277        int[] values = new int[size];
278        if (duration != 0) {
279            long current = 0;
280            for (int i = 0; i < size; i++) {
281                DurationField field = period.getFieldType(i).getField(this);
282                if (field.isPrecise()) {
283                    int value = field.getDifference(duration, current);
284                    current = field.add(current, value);
285                    values[i] = value;
286                }
287            }
288        }
289        return values;
290    }
291 
292    /**
293     * Adds the period to the instant, specifying the number of times to add.
294     *
295     * @param period  the period to add, null means add nothing
296     * @param instant  the instant to add to
297     * @param scalar  the number of times to add
298     * @return the updated instant
299     */
300    public long add(ReadablePeriod period, long instant, int scalar) {
301        if (scalar != 0 && period != null) {
302            for (int i = 0, isize = period.size(); i < isize; i++) {
303                long value = period.getValue(i); // use long to allow for multiplication (fits OK)
304                if (value != 0) {
305                    instant = period.getFieldType(i).getField(this).add(instant, value * scalar);
306                }
307            }
308        }
309        return instant;
310    }
311 
312    //-----------------------------------------------------------------------
313    /**
314     * Adds the duration to the instant, specifying the number of times to add.
315     *
316     * @param instant  the instant to add to
317     * @param duration  the duration to add
318     * @param scalar  the number of times to add
319     * @return the updated instant
320     */
321    public long add(long instant, long duration, int scalar) {
322        if (duration == 0 || scalar == 0) {
323            return instant;
324        }
325        long add = FieldUtils.safeMultiply(duration, scalar);
326        return FieldUtils.safeAdd(instant, add);
327    }
328 
329    // Millis
330    //-----------------------------------------------------------------------
331    /**
332     * Get the millis duration field for this chronology.
333     * 
334     * @return DurationField or UnsupportedDurationField if unsupported
335     */
336    public DurationField millis() {
337        return UnsupportedDurationField.getInstance(DurationFieldType.millis());
338    }
339 
340    /**
341     * Get the millis of second field for this chronology.
342     * 
343     * @return DateTimeField or UnsupportedDateTimeField if unsupported
344     */
345    public DateTimeField millisOfSecond() {
346        return UnsupportedDateTimeField.getInstance(DateTimeFieldType.millisOfSecond(), millis());
347    }
348 
349    /**
350     * Get the millis of day field for this chronology.
351     * 
352     * @return DateTimeField or UnsupportedDateTimeField if unsupported
353     */
354    public DateTimeField millisOfDay() {
355        return UnsupportedDateTimeField.getInstance(DateTimeFieldType.millisOfDay(), millis());
356    }
357 
358    // Second
359    //-----------------------------------------------------------------------
360    /**
361     * Get the seconds duration field for this chronology.
362     * 
363     * @return DurationField or UnsupportedDurationField if unsupported
364     */
365    public DurationField seconds() {
366        return UnsupportedDurationField.getInstance(DurationFieldType.seconds());
367    }
368 
369    /**
370     * Get the second of minute field for this chronology.
371     * 
372     * @return DateTimeField or UnsupportedDateTimeField if unsupported
373     */
374    public DateTimeField secondOfMinute() {
375        return UnsupportedDateTimeField.getInstance(DateTimeFieldType.secondOfMinute(), seconds());
376    }
377 
378    /**
379     * Get the second of day field for this chronology.
380     * 
381     * @return DateTimeField or UnsupportedDateTimeField if unsupported
382     */
383    public DateTimeField secondOfDay() {
384        return UnsupportedDateTimeField.getInstance(DateTimeFieldType.secondOfDay(), seconds());
385    }
386 
387    // Minute
388    //-----------------------------------------------------------------------
389    /**
390     * Get the minutes duration field for this chronology.
391     * 
392     * @return DurationField or UnsupportedDurationField if unsupported
393     */
394    public DurationField minutes() {
395        return UnsupportedDurationField.getInstance(DurationFieldType.minutes());
396    }
397 
398    /**
399     * Get the minute of hour field for this chronology.
400     * 
401     * @return DateTimeField or UnsupportedDateTimeField if unsupported
402     */
403    public DateTimeField minuteOfHour() {
404        return UnsupportedDateTimeField.getInstance(DateTimeFieldType.minuteOfHour(), minutes());
405    }
406 
407    /**
408     * Get the minute of day field for this chronology.
409     * 
410     * @return DateTimeField or UnsupportedDateTimeField if unsupported
411     */
412    public DateTimeField minuteOfDay() {
413        return UnsupportedDateTimeField.getInstance(DateTimeFieldType.minuteOfDay(), minutes());
414    }
415 
416    // Hour
417    //-----------------------------------------------------------------------
418    /**
419     * Get the hours duration field for this chronology.
420     * 
421     * @return DurationField or UnsupportedDurationField if unsupported
422     */
423    public DurationField hours() {
424        return UnsupportedDurationField.getInstance(DurationFieldType.hours());
425    }
426 
427    /**
428     * Get the hour of day (0-23) field for this chronology.
429     * 
430     * @return DateTimeField or UnsupportedDateTimeField if unsupported
431     */
432    public DateTimeField hourOfDay() {
433        return UnsupportedDateTimeField.getInstance(DateTimeFieldType.hourOfDay(), hours());
434    }
435 
436    /**
437     * Get the hour of day (offset to 1-24) field for this chronology.
438     * 
439     * @return DateTimeField or UnsupportedDateTimeField if unsupported
440     */
441    public DateTimeField clockhourOfDay() {
442        return UnsupportedDateTimeField.getInstance(DateTimeFieldType.clockhourOfDay(), hours());
443    }
444 
445    // Halfday
446    //-----------------------------------------------------------------------
447    /**
448     * Get the halfdays duration field for this chronology.
449     * 
450     * @return DurationField or UnsupportedDurationField if unsupported
451     */
452    public DurationField halfdays() {
453        return UnsupportedDurationField.getInstance(DurationFieldType.halfdays());
454    }
455 
456    /**
457     * Get the hour of am/pm (0-11) field for this chronology.
458     * 
459     * @return DateTimeField or UnsupportedDateTimeField if unsupported
460     */
461    public DateTimeField hourOfHalfday() {
462        return UnsupportedDateTimeField.getInstance(DateTimeFieldType.hourOfHalfday(), hours());
463    }
464 
465    /**
466     * Get the hour of am/pm (offset to 1-12) field for this chronology.
467     * 
468     * @return DateTimeField or UnsupportedDateTimeField if unsupported
469     */
470    public DateTimeField clockhourOfHalfday() {
471        return UnsupportedDateTimeField.getInstance(DateTimeFieldType.clockhourOfHalfday(), hours());
472    }
473 
474    /**
475     * Get the AM(0) PM(1) field for this chronology.
476     * 
477     * @return DateTimeField or UnsupportedDateTimeField if unsupported
478     */
479    public DateTimeField halfdayOfDay() {
480        return UnsupportedDateTimeField.getInstance(DateTimeFieldType.halfdayOfDay(), halfdays());
481    }
482 
483    // Day
484    //-----------------------------------------------------------------------
485    /**
486     * Get the days duration field for this chronology.
487     * 
488     * @return DurationField or UnsupportedDurationField if unsupported
489     */
490    public DurationField days() {
491        return UnsupportedDurationField.getInstance(DurationFieldType.days());
492    }
493 
494    /**
495     * Get the day of week field for this chronology.
496     *
497     * <p>DayOfWeek values are defined in
498     * {@link org.joda.time.DateTimeConstants DateTimeConstants}.
499     * They use the ISO definitions, where 1 is Monday and 7 is Sunday.
500     * 
501     * @return DateTimeField or UnsupportedDateTimeField if unsupported
502     */
503    public DateTimeField dayOfWeek() {
504        return UnsupportedDateTimeField.getInstance(DateTimeFieldType.dayOfWeek(), days());
505    }
506 
507    /**
508     * Get the day of month field for this chronology.
509     * 
510     * @return DateTimeField or UnsupportedDateTimeField if unsupported
511     */
512    public DateTimeField dayOfMonth() {
513        return UnsupportedDateTimeField.getInstance(DateTimeFieldType.dayOfMonth(), days());
514    }
515 
516    /**
517     * Get the day of year field for this chronology.
518     * 
519     * @return DateTimeField or UnsupportedDateTimeField if unsupported
520     */
521    public DateTimeField dayOfYear() {
522        return UnsupportedDateTimeField.getInstance(DateTimeFieldType.dayOfYear(), days());
523    }
524 
525    // Week
526    //-----------------------------------------------------------------------
527    /**
528     * Get the weeks duration field for this chronology.
529     * 
530     * @return DurationField or UnsupportedDurationField if unsupported
531     */
532    public DurationField weeks() {
533        return UnsupportedDurationField.getInstance(DurationFieldType.weeks());
534    }
535 
536    /**
537     * Get the week of a week based year field for this chronology.
538     * 
539     * @return DateTimeField or UnsupportedDateTimeField if unsupported
540     */
541    public DateTimeField weekOfWeekyear() {
542        return UnsupportedDateTimeField.getInstance(DateTimeFieldType.weekOfWeekyear(), weeks());
543    }
544 
545    // Weekyear
546    //-----------------------------------------------------------------------
547    /**
548     * Get the weekyears duration field for this chronology.
549     * 
550     * @return DurationField or UnsupportedDurationField if unsupported
551     */
552    public DurationField weekyears() {
553        return UnsupportedDurationField.getInstance(DurationFieldType.weekyears());
554    }
555 
556    /**
557     * Get the year of a week based year field for this chronology.
558     * 
559     * @return DateTimeField or UnsupportedDateTimeField if unsupported
560     */
561    public DateTimeField weekyear() {
562        return UnsupportedDateTimeField.getInstance(DateTimeFieldType.weekyear(), weekyears());
563    }
564 
565    /**
566     * Get the year of a week based year in a century field for this chronology.
567     * 
568     * @return DateTimeField or UnsupportedDateTimeField if unsupported
569     */
570    public DateTimeField weekyearOfCentury() {
571        return UnsupportedDateTimeField.getInstance(DateTimeFieldType.weekyearOfCentury(), weekyears());
572    }
573 
574    // Month
575    //-----------------------------------------------------------------------
576    /**
577     * Get the months duration field for this chronology.
578     * 
579     * @return DurationField or UnsupportedDurationField if unsupported
580     */
581    public DurationField months() {
582        return UnsupportedDurationField.getInstance(DurationFieldType.months());
583    }
584 
585    /**
586     * Get the month of year field for this chronology.
587     * 
588     * @return DateTimeField or UnsupportedDateTimeField if unsupported
589     */
590    public DateTimeField monthOfYear() {
591        return UnsupportedDateTimeField.getInstance(DateTimeFieldType.monthOfYear(), months());
592    }
593 
594    // Year
595    //-----------------------------------------------------------------------
596    /**
597     * Get the years duration field for this chronology.
598     * 
599     * @return DurationField or UnsupportedDurationField if unsupported
600     */
601    public DurationField years() {
602        return UnsupportedDurationField.getInstance(DurationFieldType.years());
603    }
604 
605    /**
606     * Get the year field for this chronology.
607     * 
608     * @return DateTimeField or UnsupportedDateTimeField if unsupported
609     */
610    public DateTimeField year() {
611        return UnsupportedDateTimeField.getInstance(DateTimeFieldType.year(), years());
612    }
613 
614    /**
615     * Get the year of era field for this chronology.
616     * 
617     * @return DateTimeField or UnsupportedDateTimeField if unsupported
618     */
619    public DateTimeField yearOfEra() {
620        return UnsupportedDateTimeField.getInstance(DateTimeFieldType.yearOfEra(), years());
621    }
622 
623    /**
624     * Get the year of century field for this chronology.
625     * 
626     * @return DateTimeField or UnsupportedDateTimeField if unsupported
627     */
628    public DateTimeField yearOfCentury() {
629        return UnsupportedDateTimeField.getInstance(DateTimeFieldType.yearOfCentury(), years());
630    }
631 
632    // Century
633    //-----------------------------------------------------------------------
634    /**
635     * Get the centuries duration field for this chronology.
636     * 
637     * @return DurationField or UnsupportedDurationField if unsupported
638     */
639    public DurationField centuries() {
640        return UnsupportedDurationField.getInstance(DurationFieldType.centuries());
641    }
642 
643    /**
644     * Get the century of era field for this chronology.
645     * 
646     * @return DateTimeField or UnsupportedDateTimeField if unsupported
647     */
648    public DateTimeField centuryOfEra() {
649        return UnsupportedDateTimeField.getInstance(DateTimeFieldType.centuryOfEra(), centuries());
650    }
651 
652    // Era
653    //-----------------------------------------------------------------------
654    /**
655     * Get the eras duration field for this chronology.
656     * 
657     * @return DurationField or UnsupportedDurationField if unsupported
658     */
659    public DurationField eras() {
660        return UnsupportedDurationField.getInstance(DurationFieldType.eras());
661    }
662 
663    /**
664     * Get the era field for this chronology.
665     * 
666     * @return DateTimeField or UnsupportedDateTimeField if unsupported
667     */
668    public DateTimeField era() {
669        return UnsupportedDateTimeField.getInstance(DateTimeFieldType.era(), eras());
670    }
671 
672    //-----------------------------------------------------------------------
673    /**
674     * Gets a debugging toString.
675     * 
676     * @return a debugging string
677     */
678    public abstract String toString();
679 
680}

[all classes][org.joda.time.chrono]
EMMA 2.0.5312 (C) Vladimir Roubtsov