From 691218a617bdc27f4adcef9dc6efbdd95006e9eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Mon, 17 Jan 2011 20:32:32 +0100 Subject: [PATCH] Make the methods for creating and adding exceptions receive Capacity FEA: ItEr68OTS05IntroducionLimiteSobreasignacionCalendarios --- .../calendars/entities/BaseCalendar.java | 10 ++++---- .../calendars/entities/CalendarException.java | 13 ++++++++-- .../calendars/entities/BaseCalendarTest.java | 6 +++-- .../BaseCalendarEditionController.java | 8 ++++-- .../web/calendars/BaseCalendarModel.java | 25 +++++++++---------- .../web/calendars/IBaseCalendarModel.java | 9 ++++--- 6 files changed, 43 insertions(+), 28 deletions(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/BaseCalendar.java b/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/BaseCalendar.java index 672572fba..5b96ff625 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/BaseCalendar.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/BaseCalendar.java @@ -42,8 +42,8 @@ import org.navalplanner.business.common.IntegrationEntity; import org.navalplanner.business.common.entities.EntitySequence; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.workingday.EffortDuration; -import org.navalplanner.business.workingday.ResourcesPerDay; import org.navalplanner.business.workingday.IntraDayDate.PartialDay; +import org.navalplanner.business.workingday.ResourcesPerDay; /** * Represents a calendar with some exception days. A calendar is valid till the @@ -255,15 +255,15 @@ public class BaseCalendar extends IntegrationEntity implements ICalendar { exceptions.remove(day); } - public void updateExceptionDay(Date date, EffortDuration duration, + public void updateExceptionDay(Date date, Capacity capacity, CalendarExceptionType type) throws IllegalArgumentException { - updateExceptionDay(new LocalDate(date), duration, type); + updateExceptionDay(new LocalDate(date), capacity, type); } - public void updateExceptionDay(LocalDate date, EffortDuration duration, + public void updateExceptionDay(LocalDate date, Capacity capacity, CalendarExceptionType type) throws IllegalArgumentException { removeExceptionDay(date); - CalendarException day = CalendarException.create(date, duration, type); + CalendarException day = CalendarException.create(date, capacity, type); addExceptionDay(day); } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/CalendarException.java b/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/CalendarException.java index 4b59473e3..adfb0a656 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/CalendarException.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/CalendarException.java @@ -47,17 +47,26 @@ public class CalendarException extends IntegrationEntity { } public static CalendarException create(LocalDate date, - EffortDuration duration, - CalendarExceptionType type) { + EffortDuration duration, CalendarExceptionType type) { return create(new CalendarException(date, from(duration, type), type)); } + public static CalendarException create(LocalDate date, Capacity capacity, + CalendarExceptionType type) { + return create(new CalendarException(date, capacity, type)); + } + public static CalendarException create(String code, LocalDate date, EffortDuration duration, CalendarExceptionType type) { return create(new CalendarException(date, from(duration, type), type), code); } + public static CalendarException create(String code, LocalDate date, + Capacity capacity, CalendarExceptionType type) { + return create(new CalendarException(date, capacity, type), code); + } + private static Capacity from(EffortDuration duration, CalendarExceptionType type) { return type.getCapacity().withStandardEffort(duration); diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/calendars/entities/BaseCalendarTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/calendars/entities/BaseCalendarTest.java index c423ee286..87736593d 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/calendars/entities/BaseCalendarTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/calendars/entities/BaseCalendarTest.java @@ -39,6 +39,7 @@ import org.navalplanner.business.calendars.entities.BaseCalendar.DayType; 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.workingday.EffortDuration; /** @@ -382,9 +383,10 @@ public class BaseCalendarTest { calendar.newVersion(CHRISTMAS_DAY_LOCAL_DATE.plusDays(1)); + CalendarExceptionType type = createCalendarExceptionType(); calendar.updateExceptionDay(CHRISTMAS_DAY_LOCAL_DATE.plusYears(1), - hours(8), - createCalendarExceptionType()); + Capacity.create(hours(8)).extraEffort( + type.getCapacity().getAllowedExtraEffort()), type); assertThat(calendar.getCapacityOn(wholeDay(CHRISTMAS_DAY_LOCAL_DATE .plusYears(1))), equalTo(hours(8))); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarEditionController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarEditionController.java index 894de4f24..d6bfe684b 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarEditionController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarEditionController.java @@ -572,7 +572,9 @@ public abstract class BaseCalendarEditionController extends } EffortDuration duration = exceptionDurationPicker.getValue(); - baseCalendarModel.createException(type, startDate, endDate, duration); + baseCalendarModel.createException(type, + LocalDate.fromDateFields(startDate), + LocalDate.fromDateFields(endDate), Capacity.create(duration)); reloadDayInformation(); } @@ -1033,7 +1035,9 @@ public abstract class BaseCalendarEditionController extends } EffortDuration duration = exceptionDurationPicker.getValue(); - baseCalendarModel.updateException(type, startDate, endDate, duration); + baseCalendarModel.updateException(type, + LocalDate.fromDateFields(startDate), + LocalDate.fromDateFields(endDate), Capacity.create(duration)); reloadDayInformation(); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarModel.java index 01135b206..005b5910a 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarModel.java @@ -33,13 +33,14 @@ import org.joda.time.LocalDate; import org.navalplanner.business.calendars.daos.IBaseCalendarDAO; import org.navalplanner.business.calendars.daos.ICalendarExceptionTypeDAO; 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.ResourceCalendar; -import org.navalplanner.business.calendars.entities.BaseCalendar.DayType; -import org.navalplanner.business.calendars.entities.CalendarData.Days; import org.navalplanner.business.common.IntegrationEntity; import org.navalplanner.business.common.daos.IConfigurationDAO; import org.navalplanner.business.common.entities.Configuration; @@ -280,17 +281,15 @@ public class BaseCalendarModel extends IntegrationEntityModel implements } @Override - public void createException(CalendarExceptionType type, Date startDate, - Date endDate, EffortDuration duration) { - for (LocalDate date = new LocalDate(startDate); date - .compareTo(new LocalDate(endDate)) <= 0; date = date + public void createException(CalendarExceptionType type, + LocalDate startDate, LocalDate endDate, Capacity capacity) { + for (LocalDate date = startDate; date.compareTo(endDate) <= 0; date = date .plusDays(1)) { if (getTypeOfDay(date).equals(DayType.OWN_EXCEPTION)) { - getBaseCalendar().updateExceptionDay(date, duration, type); + getBaseCalendar().updateExceptionDay(date, capacity, type); } else { CalendarException day = CalendarException.create("", date, - duration, - type); + capacity, type); getBaseCalendar().addExceptionDay(day); } } @@ -591,8 +590,8 @@ public class BaseCalendarModel extends IntegrationEntityModel implements } @Override - public void updateException(CalendarExceptionType type, Date startDate, - Date endDate, EffortDuration duration) { + public void updateException(CalendarExceptionType type, + LocalDate startDate, LocalDate endDate, Capacity capacity) { for (LocalDate date = new LocalDate(startDate); date .compareTo(new LocalDate(endDate)) <= 0; date = date .plusDays(1)) { @@ -600,12 +599,12 @@ public class BaseCalendarModel extends IntegrationEntityModel implements if (type == null) { getBaseCalendar().removeExceptionDay(date); } else { - getBaseCalendar().updateExceptionDay(date, duration, type); + getBaseCalendar().updateExceptionDay(date, capacity, type); } } else { if (type != null) { CalendarException day = CalendarException.create(date, - duration, type); + capacity, type); getBaseCalendar().addExceptionDay(day); } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/IBaseCalendarModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/IBaseCalendarModel.java index b3e7f240c..a52810b21 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/IBaseCalendarModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/IBaseCalendarModel.java @@ -32,6 +32,7 @@ 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.common.exceptions.ValidationException; import org.navalplanner.business.workingday.EffortDuration; import org.navalplanner.web.common.IIntegrationEntityModel; @@ -112,8 +113,8 @@ public interface IBaseCalendarModel extends IIntegrationEntityModel { EffortDuration getWorkableTime(); - void createException(CalendarExceptionType type, Date startDate, - Date endDate, EffortDuration duration); + void createException(CalendarExceptionType type, LocalDate startDate, + LocalDate endDate, Capacity capacity); Boolean isDefault(Days day); @@ -163,8 +164,8 @@ public interface IBaseCalendarModel extends IIntegrationEntityModel { CalendarExceptionType getCalendarExceptionType(LocalDate date); - void updateException(CalendarExceptionType type, Date startDate, - Date endDate, EffortDuration duration); + void updateException(CalendarExceptionType type, LocalDate startDate, + LocalDate endDate, Capacity capacity); void removeCalendarData(CalendarData calendarData);