package com.philliphsu.bottomsheetpickers.date;
import java.util.Calendar;
/**
* Utility class for determining if a date given by its year, month, and day
* is within the range set by a {@link DatePickerController}.
*/
final class DateRangeHelper {
private final DatePickerController mController;
DateRangeHelper(DatePickerController controller) {
mController = controller;
}
/**
* @return true if the specified year/month/day are within the range set by minDate and maxDate.
* If one or either have not been set, they are considered as Integer.MIN_VALUE and
* Integer.MAX_VALUE.
*/
boolean isOutOfRange(int year, int month, int day) {
if (isBeforeMin(year, month, day)) {
return true;
} else if (isAfterMax(year, month, day)) {
return true;
}
return false;
}
private boolean isBeforeMin(int year, int month, int day) {
if (mController == null) {
return false;
}
Calendar minDate = mController.getMinDate();
if (minDate == null) {
return false;
}
if (year < minDate.get(Calendar.YEAR)) {
return true;
} else if (year > minDate.get(Calendar.YEAR)) {
return false;
}
if (month < minDate.get(Calendar.MONTH)) {
return true;
} else if (month > minDate.get(Calendar.MONTH)) {
return false;
}
if (day < minDate.get(Calendar.DAY_OF_MONTH)) {
return true;
} else {
return false;
}
}
private boolean isAfterMax(int year, int month, int day) {
if (mController == null) {
return false;
}
Calendar maxDate = mController.getMaxDate();
if (maxDate == null) {
return false;
}
if (year > maxDate.get(Calendar.YEAR)) {
return true;
} else if (year < maxDate.get(Calendar.YEAR)) {
return false;
}
if (month > maxDate.get(Calendar.MONTH)) {
return true;
} else if (month < maxDate.get(Calendar.MONTH)) {
return false;
}
if (day > maxDate.get(Calendar.DAY_OF_MONTH)) {
return true;
} else {
return false;
}
}
}