From 1f7a960f530cd855c30611c3d889e0eaf40d2e9c Mon Sep 17 00:00:00 2001 From: Diego Pino Garcia Date: Wed, 20 Apr 2011 12:01:38 +0200 Subject: [PATCH] [Bug #1004] Fix bug LazyInitializationException of Calendars FEA: ItEr74S04BugFixing --- .../calendars/entities/CalendarData.java | 5 ++++ .../calendar/CalendarAllocationModel.java | 24 ++++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/CalendarData.java b/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/CalendarData.java index db690d715..2313fdac6 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/CalendarData.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/CalendarData.java @@ -21,6 +21,7 @@ package org.navalplanner.business.calendars.entities; +import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; @@ -136,6 +137,10 @@ public class CalendarData extends IntegrationEntity { return capacityPerDay.get(day.ordinal()); } + public Map getCapacityPerDay() { + return Collections.unmodifiableMap(capacityPerDay); + } + public void setCapacityAt(Days day, Capacity capacity) { capacityPerDay.put(day.ordinal(), capacity); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/calendar/CalendarAllocationModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/calendar/CalendarAllocationModel.java index 5f065ef16..cb64055da 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/calendar/CalendarAllocationModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/calendar/CalendarAllocationModel.java @@ -25,6 +25,7 @@ import java.util.List; import org.navalplanner.business.calendars.daos.IBaseCalendarDAO; import org.navalplanner.business.calendars.entities.BaseCalendar; +import org.navalplanner.business.calendars.entities.CalendarData; import org.navalplanner.business.planner.entities.Task; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; @@ -49,7 +50,28 @@ public class CalendarAllocationModel implements ICalendarAllocationModel { @Override @Transactional(readOnly = true) public List getBaseCalendars() { - return baseCalendarDAO.getBaseCalendars(); + return initializeCalendars(baseCalendarDAO.getBaseCalendars()); + } + + private List initializeCalendars(List calendars) { + for (BaseCalendar each : calendars) { + baseCalendarDAO.reattach(each); + initializeCalendar(each); + } + return calendars; + } + + public void initializeCalendar(BaseCalendar calendar) { + calendar.getCalendarAvailabilities().size(); + calendar.getExceptions().size(); + initializeCalendarData(calendar.getCalendarDataVersions()); + } + + private void initializeCalendarData(List calendarData) { + calendarData.size(); + for (CalendarData each: calendarData) { + each.getCapacityPerDay().size(); + } } @Override