1 16 package org.joda.time; 17 18 import java.io.Serializable ; 19 20 39 public abstract class DurationFieldType implements Serializable { 40 41 42 private static final long serialVersionUID = 8765135187319L; 43 44 static final byte 46 ERAS = 1, 47 CENTURIES = 2, 48 WEEKYEARS = 3, 49 YEARS = 4, 50 MONTHS = 5, 51 WEEKS = 6, 52 DAYS = 7, 53 HALFDAYS = 8, 54 HOURS = 9, 55 MINUTES = 10, 56 SECONDS = 11, 57 MILLIS = 12; 58 59 60 static final DurationFieldType ERAS_TYPE = new StandardDurationFieldType("eras", ERAS); 61 62 static final DurationFieldType CENTURIES_TYPE = new StandardDurationFieldType("centuries", CENTURIES); 63 64 static final DurationFieldType WEEKYEARS_TYPE = new StandardDurationFieldType("weekyears", WEEKYEARS); 65 66 static final DurationFieldType YEARS_TYPE = new StandardDurationFieldType("years", YEARS); 67 68 static final DurationFieldType MONTHS_TYPE = new StandardDurationFieldType("months", MONTHS); 69 70 static final DurationFieldType WEEKS_TYPE = new StandardDurationFieldType("weeks", WEEKS); 71 72 static final DurationFieldType DAYS_TYPE = new StandardDurationFieldType("days", DAYS); 73 74 static final DurationFieldType HALFDAYS_TYPE = new StandardDurationFieldType("halfdays", HALFDAYS); 75 76 static final DurationFieldType HOURS_TYPE = new StandardDurationFieldType("hours", HOURS); 77 78 static final DurationFieldType MINUTES_TYPE = new StandardDurationFieldType("minutes", MINUTES); 79 80 static final DurationFieldType SECONDS_TYPE = new StandardDurationFieldType("seconds", SECONDS); 81 82 static final DurationFieldType MILLIS_TYPE = new StandardDurationFieldType("millis", MILLIS); 83 84 85 private final String iName; 86 87 93 protected DurationFieldType(String name) { 94 super(); 95 iName = name; 96 } 97 98 104 public static DurationFieldType millis() { 105 return MILLIS_TYPE; 106 } 107 108 113 public static DurationFieldType seconds() { 114 return SECONDS_TYPE; 115 } 116 117 122 public static DurationFieldType minutes() { 123 return MINUTES_TYPE; 124 } 125 126 131 public static DurationFieldType hours() { 132 return HOURS_TYPE; 133 } 134 135 140 public static DurationFieldType halfdays() { 141 return HALFDAYS_TYPE; 142 } 143 144 150 public static DurationFieldType days() { 151 return DAYS_TYPE; 152 } 153 154 159 public static DurationFieldType weeks() { 160 return WEEKS_TYPE; 161 } 162 163 168 public static DurationFieldType weekyears() { 169 return WEEKYEARS_TYPE; 170 } 171 172 177 public static DurationFieldType months() { 178 return MONTHS_TYPE; 179 } 180 181 186 public static DurationFieldType years() { 187 return YEARS_TYPE; 188 } 189 190 195 public static DurationFieldType centuries() { 196 return CENTURIES_TYPE; 197 } 198 199 204 public static DurationFieldType eras() { 205 return ERAS_TYPE; 206 } 207 208 215 public String getName() { 216 return iName; 217 } 218 219 225 public abstract DurationField getField(Chronology chronology); 226 227 233 public boolean isSupported(Chronology chronology) { 234 return getField(chronology).isSupported(); 235 } 236 237 242 public String toString() { 243 return getName(); 244 } 245 246 private static class StandardDurationFieldType extends DurationFieldType { 247 248 private static final long serialVersionUID = 31156755687123L; 249 250 251 private final byte iOrdinal; 252 253 258 StandardDurationFieldType(String name, byte ordinal) { 259 super(name); 260 iOrdinal = ordinal; 261 } 262 263 public DurationField getField(Chronology chronology) { 264 chronology = DateTimeUtils.getChronology(chronology); 265 266 switch (iOrdinal) { 267 case ERAS: 268 return chronology.eras(); 269 case CENTURIES: 270 return chronology.centuries(); 271 case WEEKYEARS: 272 return chronology.weekyears(); 273 case YEARS: 274 return chronology.years(); 275 case MONTHS: 276 return chronology.months(); 277 case WEEKS: 278 return chronology.weeks(); 279 case DAYS: 280 return chronology.days(); 281 case HALFDAYS: 282 return chronology.halfdays(); 283 case HOURS: 284 return chronology.hours(); 285 case MINUTES: 286 return chronology.minutes(); 287 case SECONDS: 288 return chronology.seconds(); 289 case MILLIS: 290 return chronology.millis(); 291 default: 292 throw new InternalError (); 294 } 295 } 296 297 302 private Object readResolve() { 303 switch (iOrdinal) { 304 case ERAS: 305 return ERAS_TYPE; 306 case CENTURIES: 307 return CENTURIES_TYPE; 308 case WEEKYEARS: 309 return WEEKYEARS_TYPE; 310 case YEARS: 311 return YEARS_TYPE; 312 case MONTHS: 313 return MONTHS_TYPE; 314 case WEEKS: 315 return WEEKS_TYPE; 316 case DAYS: 317 return DAYS_TYPE; 318 case HALFDAYS: 319 return HALFDAYS_TYPE; 320 case HOURS: 321 return HOURS_TYPE; 322 case MINUTES: 323 return MINUTES_TYPE; 324 case SECONDS: 325 return SECONDS_TYPE; 326 case MILLIS: 327 return MILLIS_TYPE; 328 default: 329 return this; 331 } 332 } 333 334 } 335 } 336 | Popular Tags |