public static int encodeFortnight(FortnightValue value) { return encodeYearPart(value.getYear(), value.getWeekInYear()); }
@Override public String toString() { return getYear() + toWeekString(); }
@Override public PeriodValue parseString(String string) { int dashIndex = string.indexOf("-"); if(dashIndex != -1) { string = string.substring(0, dashIndex); } return new FortnightValue(EpiWeek.parse(string)); }
@Override protected String yearName(FortnightValue period) { return Integer.toString(period.getYear()); }
@Override protected String periodName(FortnightValue period) { return period.toWeekString(); }
@Override public String apply(int value) { return FortnightValue.toString(DateEncoding.getYear(value), DateEncoding.getYearPart(value)); } }
@Override public FortnightValue parseJsonValue(JsonValue value) { EpiWeek startWeek = EpiWeekType.INSTANCE.parseJsonValue(value); return new FortnightValue(startWeek); }
public static String toString(int year, int startWeekNumber) { return year + toWeekString(startWeekNumber); }
@Override public void renderTo(FieldValue fieldValue, SafeHtmlBuilder html) { FortnightValue fortnight = (FortnightValue) fieldValue; html.appendEscaped(I18N.MESSAGES.fortnight( fortnight.getYear(), fortnight.getWeekInYear(), fortnight.getWeekInYear() + 1)); } }
@Override public PeriodValue next() { return new FortnightValue(startWeek.plus(+2)); }
public String toWeekString() { return toWeekString(startWeek.getWeekInYear()); }
@Override public PeriodValue previous() { return new FortnightValue(startWeek.plus(-2)); }
@Override public PeriodValue containingDate(LocalDate localDate) { EpiWeek week = EpiWeek.weekOf(localDate); if(week.getWeekInYear() % 2 == 0) { return new FortnightValue(week.previous()); } else { return new FortnightValue(week); } }
@Override public FortnightValue fromSubFormKey(RecordRef ref) { // s0417565614-2017W2-3 String subRecordId = ref.getRecordId().asString(); int endWeekDelimiter = subRecordId.lastIndexOf('-'); int delimiter = subRecordId.lastIndexOf('-', endWeekDelimiter-1); EpiWeek firstWeek = EpiWeek.parse(subRecordId.substring(delimiter+1, endWeekDelimiter)); return new FortnightValue(firstWeek); }
@Test public void test() { assertThat(parseSubFormKey("s0417565614-2017W46-47"), equalTo(new FortnightValue(2017, 46))); assertThat(parseSubFormKey("s0417565614-2017W2-3"), equalTo(new FortnightValue(2017, 2))); }
@Test public void parse() { assertThat(FortnightType.INSTANCE.parseString("2018W9-W10"), equalTo(new FortnightValue(2018, 9))); }