It does not must permit overwrite another whole work week
when a new work week is created. FEA: ItEr75S05CalendarAdminInterfaceItEr74S06
This commit is contained in:
parent
859e35e125
commit
652dc8393e
3 changed files with 47 additions and 10 deletions
|
|
@ -408,24 +408,43 @@ public class BaseCalendar extends IntegrationEntity implements ICalendar {
|
|||
LocalDate expiringDate) {
|
||||
for (CalendarData nextVersion : calendarDataVersions) {
|
||||
if ((nextVersion.getExpiringDate() == null)
|
||||
|| (expiringDate.compareTo(nextVersion.getExpiringDate()) < 0)) {
|
||||
|| (expiringDate.compareTo(nextVersion.getExpiringDate()) <= 0)) {
|
||||
int index = calendarDataVersions.indexOf(nextVersion);
|
||||
if (index > 0) {
|
||||
CalendarData prevVersion = calendarDataVersions
|
||||
.get(index - 1);
|
||||
if (newIntervalIncludeAnotherWorkWeek(startDate,
|
||||
expiringDate, prevVersion, nextVersion)) {
|
||||
throw new IllegalArgumentException(
|
||||
"the new version includes a whole version already exists");
|
||||
} else {
|
||||
LocalDate prevExpiringDate = prevVersion
|
||||
.getExpiringDate();
|
||||
LocalDate nextExpiringDate = nextVersion
|
||||
.getExpiringDate();
|
||||
BaseCalendar oldParent = nextVersion.getParent();
|
||||
|
||||
if (startDate.compareTo(prevVersion.getExpiringDate()) >= 0) {
|
||||
prevVersion.setExpiringDate(startDate);
|
||||
if (startDate.compareTo(prevExpiringDate) > 0) {
|
||||
CalendarData prevCalendarData = CalendarData
|
||||
.create();
|
||||
prevCalendarData.setExpiringDate(startDate);
|
||||
prevCalendarData.setParent(oldParent);
|
||||
calendarDataVersions.add(prevCalendarData);
|
||||
} else {
|
||||
prevVersion.setExpiringDate(startDate);
|
||||
}
|
||||
|
||||
CalendarData newCalendarData = CalendarData.create();
|
||||
newCalendarData.setExpiringDate(expiringDate);
|
||||
calendarDataVersions.add(newCalendarData);
|
||||
|
||||
if (expiringDate.compareTo(nextExpiringDate) >= 0) {
|
||||
calendarDataVersions.remove(nextVersion);
|
||||
}
|
||||
|
||||
Collections.sort(calendarDataVersions,
|
||||
CalendarData.BY_EXPIRING_DATE_COMPARATOR);
|
||||
return newCalendarData;
|
||||
}else{
|
||||
throw new IllegalArgumentException(
|
||||
"the new version includes a whole version already exists");
|
||||
}
|
||||
} else {
|
||||
throw new IllegalArgumentException(
|
||||
|
|
@ -434,7 +453,25 @@ public class BaseCalendar extends IntegrationEntity implements ICalendar {
|
|||
}
|
||||
}
|
||||
throw new IllegalArgumentException(
|
||||
"the new version will be the last one, and the expiring date must be empty");
|
||||
"Wrong expiring date : the new version will be the last one, and the expiring date must be empty");
|
||||
}
|
||||
|
||||
public boolean newIntervalIncludeAnotherWorkWeek(LocalDate startDate,
|
||||
LocalDate expiringDate, CalendarData prevVersion,
|
||||
CalendarData nextVersion) {
|
||||
if ((startDate.compareTo(prevVersion.getExpiringDate()) <= 0)
|
||||
&& (expiringDate.compareTo(nextVersion.getExpiringDate()) >= 0)) {
|
||||
return true;
|
||||
}
|
||||
int indexPrevOfPrev = calendarDataVersions.indexOf(prevVersion);
|
||||
if (indexPrevOfPrev > 0) {
|
||||
CalendarData prevOfPrev = (CalendarData) calendarDataVersions
|
||||
.get(indexPrevOfPrev - 1);
|
||||
if (startDate.compareTo(prevOfPrev.getExpiringDate()) <= 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public CalendarData createLastVersion(LocalDate startDate)
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ package org.navalplanner.web.calendars;
|
|||
|
||||
import static org.navalplanner.web.I18nHelper._;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
|
|
|||
|
|
@ -21,19 +21,18 @@
|
|||
|
||||
package org.navalplanner.web.calendars;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.joda.time.LocalDate;
|
||||
import org.navalplanner.business.calendars.entities.BaseCalendar;
|
||||
import org.navalplanner.business.calendars.entities.BaseCalendar.DayType;
|
||||
import org.navalplanner.business.calendars.entities.CalendarAvailability;
|
||||
import org.navalplanner.business.calendars.entities.CalendarData;
|
||||
import org.navalplanner.business.calendars.entities.CalendarData.Days;
|
||||
import org.navalplanner.business.calendars.entities.CalendarException;
|
||||
import org.navalplanner.business.calendars.entities.CalendarExceptionType;
|
||||
import org.navalplanner.business.calendars.entities.Capacity;
|
||||
import org.navalplanner.business.calendars.entities.BaseCalendar.DayType;
|
||||
import org.navalplanner.business.calendars.entities.CalendarData.Days;
|
||||
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||
import org.navalplanner.business.workingday.EffortDuration;
|
||||
import org.navalplanner.web.common.IIntegrationEntityModel;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue