From affada5877d7b524f4a8d2c8bd40c00a592b1099 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Thu, 13 Jan 2011 20:00:26 +0100 Subject: [PATCH] [Bug #804] Fix bug The problem lied in that in advanced allocation perspective only the task being modified was saved. Now the task's parents are updated and saved too. FEA: ItEr68S04BugFixing --- .../business/planner/entities/TaskGroup.java | 5 +++++ .../planner/tabs/AdvancedAllocationTabCreator.java | 13 ++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskGroup.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskGroup.java index 6154ed273..850ef0153 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskGroup.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskGroup.java @@ -216,6 +216,11 @@ public class TaskGroup extends TaskElement { return false; } + public void fitStartAndEndDatesToChildren() { + setIntraDayStartDate(getSmallestStartDateFromChildren()); + setIntraDayEndDate(getBiggestEndDateFromChildren()); + } + public IntraDayDate getSmallestStartDateFromChildren() { return Collections.min(getChildrenStartDates()); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/tabs/AdvancedAllocationTabCreator.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/tabs/AdvancedAllocationTabCreator.java index b62b88f72..225dcb808 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/tabs/AdvancedAllocationTabCreator.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/tabs/AdvancedAllocationTabCreator.java @@ -46,18 +46,19 @@ import org.navalplanner.business.planner.entities.DayAssignment; import org.navalplanner.business.planner.entities.ResourceAllocation; import org.navalplanner.business.planner.entities.Task; import org.navalplanner.business.planner.entities.TaskElement; +import org.navalplanner.business.planner.entities.TaskGroup; import org.navalplanner.business.planner.entities.consolidations.Consolidation; import org.navalplanner.business.resources.daos.IResourceDAO; import org.navalplanner.business.resources.entities.Resource; import org.navalplanner.business.scenarios.entities.Scenario; import org.navalplanner.web.calendars.BaseCalendarModel; import org.navalplanner.web.planner.allocation.AdvancedAllocationController; -import org.navalplanner.web.planner.allocation.AllocationResult; import org.navalplanner.web.planner.allocation.AdvancedAllocationController.AllocationInput; import org.navalplanner.web.planner.allocation.AdvancedAllocationController.IAdvanceAllocationResultReceiver; import org.navalplanner.web.planner.allocation.AdvancedAllocationController.IBack; import org.navalplanner.web.planner.allocation.AdvancedAllocationController.Restriction; import org.navalplanner.web.planner.allocation.AdvancedAllocationController.Restriction.IRestrictionSource; +import org.navalplanner.web.planner.allocation.AllocationResult; import org.navalplanner.web.planner.order.OrderPlanningModel; import org.navalplanner.web.planner.tabs.CreatedOnDemandTab.IComponentCreator; import org.zkoss.ganttz.extensions.ITab; @@ -188,6 +189,16 @@ public class AdvancedAllocationTabCreator { taskElementDAO.reattach(task); allocationResult.applyTo(currentScenario, task); taskElementDAO.save(task); + updateParentsPositions(task); + } + + private void updateParentsPositions(TaskElement task) { + TaskGroup current = task.getParent(); + while (current != null) { + current.fitStartAndEndDatesToChildren(); + taskElementDAO.save(current); + current = current.getParent(); + } } }