1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.joda.time.chrono;
17
18 import org.joda.time.DateTimeField;
19 import org.joda.time.DateTimeFieldType;
20 import org.joda.time.ReadablePartial;
21 import org.joda.time.field.DecoratedDateTimeField;
22 import org.joda.time.field.FieldUtils;
23
24
25
26
27
28
29
30 final class GJYearOfEraDateTimeField extends DecoratedDateTimeField {
31
32 private static final long serialVersionUID = -5961050944769862059L;
33
34 private final BasicChronology iChronology;
35
36
37
38
39 GJYearOfEraDateTimeField(DateTimeField yearField, BasicChronology chronology) {
40 super(yearField, DateTimeFieldType.yearOfEra());
41 iChronology = chronology;
42 }
43
44 public int get(long instant) {
45 int year = getWrappedField().get(instant);
46 if (year <= 0) {
47 year = 1 - year;
48 }
49 return year;
50 }
51
52 public long add(long instant, int years) {
53 return getWrappedField().add(instant, years);
54 }
55
56 public long add(long instant, long years) {
57 return getWrappedField().add(instant, years);
58 }
59
60 public long addWrapField(long instant, int years) {
61 return getWrappedField().addWrapField(instant, years);
62 }
63
64 public int[] addWrapField(ReadablePartial instant, int fieldIndex, int[] values, int years) {
65 return getWrappedField().addWrapField(instant, fieldIndex, values, years);
66 }
67
68 public int getDifference(long minuendInstant, long subtrahendInstant) {
69 return getWrappedField().getDifference(minuendInstant, subtrahendInstant);
70 }
71
72 public long getDifferenceAsLong(long minuendInstant, long subtrahendInstant) {
73 return getWrappedField().getDifferenceAsLong(minuendInstant, subtrahendInstant);
74 }
75
76
77
78
79
80
81
82
83
84 public long set(long instant, int year) {
85 FieldUtils.verifyValueBounds(this, year, 1, getMaximumValue());
86 if (iChronology.getYear(instant) <= 0) {
87 year = 1 - year;
88 }
89 return super.set(instant, year);
90 }
91
92 public int getMinimumValue() {
93 return 1;
94 }
95
96 public int getMaximumValue() {
97 return getWrappedField().getMaximumValue();
98 }
99
100 public long roundFloor(long instant) {
101 return getWrappedField().roundFloor(instant);
102 }
103
104 public long roundCeiling(long instant) {
105 return getWrappedField().roundCeiling(instant);
106 }
107
108 public long remainder(long instant) {
109 return getWrappedField().remainder(instant);
110 }
111
112
113
114
115 private Object readResolve() {
116 return iChronology.yearOfEra();
117 }
118 }