Я занят добавлением функциональности, которая добавляет начальную и конечную даты к оплате услуг. В настоящее время плата за обслуживание содержит минимальную сумму снятия средств, плату и даты начала и окончания.Ограничить количество отдельных элементов за любой заданный период времени
Требование состоит в том, что вы можете иметь несколько разных минимальных сумм снятия средств со своим периодом (даты начала и окончания). Элементы с одинаковой минимальной суммой изъятия допускают, что их периоды перекрываются, хотя допускаются пробелы. Заключительным требованием является то, что вы можете установить сумму различных минимальных сумм снятия денег в любой момент времени, то есть если сумма установлена в 5, вы можете иметь 5 различных сборов за обслуживание в любой данный момент времени.
Теперь моя проблема - это последняя часть, убедившись, что в любой момент времени действует только определенное количество периодов.
И сделать вещи еще более сложно .. я не могу использовать класс Calendar, потому что я делаю это в GWT, который поддерживает только класс Date ..
Вот что я до сих пор ..
private boolean checkDates() {
int maxSlates = orgs.getMaxSlates();
for (WfScServiceCharge wfsc : serviceCharges) {
Date startDate = wfsc.getScEffectiveStart();
Date endDate = wfsc.getScEffectiveEnd();
int slates = 0;
for (WfScServiceCharge wfsc2 : serviceCharges) {
// dont check slate against itself
if (!wfsc.equals(wfsc2)) {
// check slates with same min withdraw amounts
if (wfsc.getScMinWithdrawAmount() == wfsc2.getScMinWithdrawAmount()) {
// check that periods dont overlap
if ((startDate.after(wfsc2.getScEffectiveStart()) && startDate
.before(wfsc2.getScEffectiveEnd()))
|| (endDate.after(wfsc2.getScEffectiveStart()) && endDate
.before(wfsc2.getScEffectiveEnd()))) {
Window
.alert("Period clashes with an already configured"
+ " period for a service charge with the same minimum withdrawal amount.");
return false;
}
}
// check number of distinct slates for any given period
// THIS IS WHERE I NEED HELP!
if (wfsc2.getScEffectiveStart().compareTo(startDate) >= 0
|| wfsc2.getScEffectiveEnd().compareTo(endDate) <= 0) {
slates++;
}
if (slates > maxSlates) {
Window.alert("Maximum amount of slates reached for time period. "
+ "Please change the period that this slate needs to fall in.");
return false;
}
}
}
}
return true;
}