1 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 30 final class GJYearOfEraDateTimeField extends DecoratedDateTimeField { 31 32 private static final long serialVersionUID = -5961050944769862059L; 33 34 private final BasicChronology iChronology; 35 36 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 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 115 private Object readResolve() { 116 return iChronology.yearOfEra(); 117 } 118 } 119 | Popular Tags |