private Object writeReplace() { return new SPX(this, SPX.DAY_PERIOD_TYPE); }
this.obj = this.readDate(in, header); break; case TIME_TYPE: this.obj = this.readTime(in); break; case WEEKMODEL_TYPE: this.obj = this.readWeekmodel(in, header); break; case MOMENT_TYPE: this.obj = this.readMoment(in, header); break; case DURATION_TYPE: this.obj = this.readDuration(in, header); break; case DAY_PERIOD_TYPE: this.obj = this.readDayPeriod(in, header); break; case TIMESTAMP_TYPE: this.obj = this.readTimestamp(in, header); break; default:
this.writeDate(out); break; case TIME_TYPE: this.writeTime(out); break; case WEEKMODEL_TYPE: this.writeWeekmodel(out); break; case MOMENT_TYPE: this.writeMoment(out); break; case DURATION_TYPE: this.writeDuration(out); break; case DAY_PERIOD_TYPE: this.writeDayPeriod(out); break; case TIMESTAMP_TYPE: this.writeTimestamp(out); break; default:
private static void writeDate( PlainDate date, int type, DataOutput out ) throws IOException { int year = date.getYear(); // Bit 0-3 => type (4) // Bit 4-7 => month (4) // Bit 8 => unused // Bit 9-10 => year-range (2) // Bit 11-15 => day-of-month (5) // byte - short - int => year int range; if (year >= 1850 && year <= 2100) { range = 1; } else if (Math.abs(year) < 10000) { range = 2; } else { range = 3; } int header = type; header <<= 4; header |= date.getMonth(); out.writeByte(header);
return new SPX(this, SPX.DURATION_TYPE);
return new SPX(this, SPX.MOMENT_TYPE);
return new SPX(this, SPX.TIME_TYPE);
return new SPX(this, SPX.WEEKMODEL_TYPE);
return new SPX(this, SPX.TIMESTAMP_TYPE);
return new SPX(this, SPX.DATE_TYPE);