package org.opentripplanner.api.param;
import org.joda.time.LocalDate;
import org.onebusaway.gtfs.model.calendar.ServiceDate;
public class YearMonthDay extends QueryParameter {
static int[] daysInMonth = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
public int year;
public int month;
public int day;
public YearMonthDay (String value) {
super(value);
}
@Override
protected void parse(String value) throws Throwable {
if (value == null || value.equalsIgnoreCase("today") || value.isEmpty()) {
value = new LocalDate().toString(); // eeew
}
String[] fields = value.split("-");
year = Integer.parseInt(fields[0]);
month = Integer.parseInt(fields[1]);
day = Integer.parseInt(fields[2]);
checkRangeInclusive(year, 2000, 2100);
checkRangeInclusive(month, 1, 12);
checkRangeInclusive(day, 1, daysInMonth[month - 1]);
}
@Override
public String toString() {
return String.format("%02d-%02d-%02d", year, month, day);
}
public LocalDate toJoda() {
return new LocalDate(year, month, day);
}
public ServiceDate toOBA() {
return new ServiceDate(year, month, day);
}
}