package org.dhis2.mobile.utils.date.expiryday; import org.joda.time.DateTimeConstants; import org.joda.time.LocalDate; import org.joda.time.format.DateTimeFormat; public class BimonthlyExpiryDayValidator extends ExpiryDayValidator { protected static final String DATE_FORMAT = "yyyy"; public BimonthlyExpiryDayValidator(int expiryDays, String period) { super(expiryDays, period); } @Override protected LocalDate getMaxDateCanEdit() { int periodNumber = Integer.parseInt(period.substring(4, 6)); LocalDate periodDate = LocalDate.parse(period.substring(0, 4), DateTimeFormat.forPattern(DATE_FORMAT)); periodDate = periodDate.withMonthOfYear(monthOfYear(periodNumber)); periodDate = periodDate.plusMonths(plusMonths()); return periodDate.plusDays(expiryDays - 2); } protected int plusMonths() { return 2; } protected int monthOfYear(int periodNumber) { switch (periodNumber) { case 1: return DateTimeConstants.JANUARY; case 2: return DateTimeConstants.MARCH; case 3: return DateTimeConstants.MAY; case 4: return DateTimeConstants.JULY; case 5: return DateTimeConstants.SEPTEMBER; case 6: return DateTimeConstants.NOVEMBER; default: return DateTimeConstants.JANUARY; } } }