ItEr49S10CUVisualizacionResponsabilidadesTRaballoNaPlanificacionItEr48S10: Adding calendar availabilities sorting method for extra safety

This commit is contained in:
Óscar González Fernández 2010-02-28 17:00:29 +01:00
parent a0ca371743
commit 79fbafa52d
2 changed files with 25 additions and 1 deletions

View file

@ -710,6 +710,18 @@ public class BaseCalendar extends BaseEntity implements IWorkHours {
return Collections.unmodifiableList(calendarAvailabilities);
}
/**
* Returns a a copy of calendar availabilities sorted by start date.
* calendarAvailabilities should already be sorted by start date, this
* method is just for extra safety
*/
private List<CalendarAvailability> getCalendarAvailabilitiesSortedByStartDate() {
List<CalendarAvailability> result = new ArrayList<CalendarAvailability>(
calendarAvailabilities);
Collections.sort(result, CalendarAvailability.BY_START_DATE_COMPARATOR);
return result;
}
public void addNewCalendarAvailability(
CalendarAvailability calendarAvailability)
throws IllegalArgumentException {
@ -764,7 +776,10 @@ public class BaseCalendar extends BaseEntity implements IWorkHours {
if (calendarAvailabilities.isEmpty()) {
return null;
}
return calendarAvailabilities.get(calendarAvailabilities.size() - 1);
// Sorting for ensuring the last one is picked. In theory sorting would
// not be necessary, doing it for safety
List<CalendarAvailability> sorted = getCalendarAvailabilitiesSortedByStartDate();
return sorted.get(sorted.size() - 1);
}
public void setStartDate(CalendarAvailability calendarAvailability,

View file

@ -20,6 +20,7 @@
package org.navalplanner.business.calendars.entities;
import java.util.Comparator;
import java.util.Date;
import org.hibernate.validator.NotNull;
@ -53,6 +54,14 @@ public class CalendarAvailability extends BaseEntity {
private LocalDate endDate;
public static final Comparator<CalendarAvailability> BY_START_DATE_COMPARATOR = new Comparator<CalendarAvailability>() {
@Override
public int compare(CalendarAvailability o1, CalendarAvailability o2) {
return o1.getStartDate().compareTo(o2.getStartDate());
}
};
/**
* Constructor for hibernate. Do not use!
*/