diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningModel.java index 9017244e9..a273aba42 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningModel.java @@ -65,6 +65,7 @@ import org.navalplanner.business.planner.entities.TaskMilestone; import org.navalplanner.business.resources.daos.ICriterionDAO; import org.navalplanner.business.resources.daos.IResourceDAO; import org.navalplanner.business.resources.entities.Criterion; +import org.navalplanner.business.resources.entities.CriterionSatisfaction; import org.navalplanner.business.resources.entities.Resource; import org.navalplanner.business.users.daos.IOrderAuthorizationDAO; import org.navalplanner.business.users.daos.IUserDAO; @@ -152,6 +153,31 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel { private static final Log LOG = LogFactory.getLog(OrderPlanningModel.class); + public static > T loadRequiredDataFor( + T resources) { + for (Resource each : resources) { + reattachCalendarFor(each); + // loading criterions so there are no repeated instances + forceLoadOfCriterions(each); + } + return resources; + } + + private static void reattachCalendarFor(Resource each) { + if (each.getCalendar() != null) { + BaseCalendarModel.forceLoadBaseCalendar(each.getCalendar()); + } + } + + static void forceLoadOfCriterions(Resource resource) { + Set criterionSatisfactions = resource + .getCriterionSatisfactions(); + for (CriterionSatisfaction each : criterionSatisfactions) { + each.getCriterion().getName(); + each.getCriterion().getType(); + } + } + public static void configureInitialZoomLevelFor(Planner planner, ZoomLevel defaultZoomLevel) { if (!planner.isFixedZoomByUser()) { diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/PlanningState.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/PlanningState.java index 414fa5e4d..f27e68084 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/PlanningState.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/PlanningState.java @@ -35,7 +35,6 @@ import org.navalplanner.business.resources.daos.IResourceDAO; import org.navalplanner.business.resources.entities.Criterion; import org.navalplanner.business.resources.entities.CriterionSatisfaction; import org.navalplanner.business.resources.entities.Resource; -import org.navalplanner.web.calendars.BaseCalendarModel; public abstract class PlanningState { @@ -66,7 +65,7 @@ public abstract class PlanningState { public abstract TaskGroup getRootTask(); - private static class WithDataPlanningState extends PlanningState { + static class WithDataPlanningState extends PlanningState { private final ArrayList initial; @@ -92,7 +91,8 @@ public abstract class PlanningState { this.initial = new ArrayList(initialState); this.toSave = new HashSet(initialState); this.toRemove = new HashSet(); - this.resources = doReattachments(new HashSet( + this.resources = OrderPlanningModel + .loadRequiredDataFor(new HashSet( initialResources)); } @@ -135,34 +135,10 @@ public abstract class PlanningState { private void addingNewlyCreated(IResourceDAO resourceDAO) { Set newResources = getNewResources(resourceDAO); - doReattachments(newResources); + OrderPlanningModel.loadRequiredDataFor(newResources); resources.addAll(newResources); } - private > T doReattachments(T result) { - for (Resource each : result) { - reattachCalendarFor(each); - // loading criterions so there are no repeated instances - forceLoadOfCriterions(each); - } - return result; - } - - private void reattachCalendarFor(Resource each) { - if (each.getCalendar() != null) { - BaseCalendarModel.forceLoadBaseCalendar(each.getCalendar()); - } - } - - private void forceLoadOfCriterions(Resource resource) { - Set criterionSatisfactions = resource - .getCriterionSatisfactions(); - for (CriterionSatisfaction each : criterionSatisfactions) { - each.getCriterion().getName(); - each.getCriterion().getType(); - } - } - private Set getNewResources(IResourceDAO resourceDAO) { Set result = new HashSet(resourceDAO .list(Resource.class));