diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/limiting/allocation/ILimitingResourceAllocationModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/limiting/allocation/ILimitingResourceAllocationModel.java index bed15a466..530066b8c 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/limiting/allocation/ILimitingResourceAllocationModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/limiting/allocation/ILimitingResourceAllocationModel.java @@ -25,6 +25,7 @@ import java.util.List; import org.navalplanner.business.orders.entities.AggregatedHoursGroup; import org.navalplanner.business.planner.entities.Task; import org.navalplanner.web.planner.allocation.INewAllocationsAdder; +import org.navalplanner.web.planner.order.PlanningState; /** * Contract for {@link Task}. @@ -41,6 +42,6 @@ public interface ILimitingResourceAllocationModel extends INewAllocationsAdder { List getResourceAllocationRows(); - void init(Task task); + void init(Task task, PlanningState planningState); } \ No newline at end of file diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/limiting/allocation/LimitingResourceAllocationController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/limiting/allocation/LimitingResourceAllocationController.java index da769752f..854c5b4fc 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/limiting/allocation/LimitingResourceAllocationController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/limiting/allocation/LimitingResourceAllocationController.java @@ -30,8 +30,8 @@ import org.navalplanner.business.planner.entities.ResourceAllocation; import org.navalplanner.web.common.IMessagesForUser; import org.navalplanner.web.common.Util; import org.navalplanner.web.common.components.NewAllocationSelector; -import org.navalplanner.web.planner.allocation.ResourceAllocationController; import org.navalplanner.web.planner.allocation.ResourceAllocationController.HoursRendererColumn; +import org.navalplanner.web.planner.order.PlanningState; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; @@ -95,9 +95,10 @@ public class LimitingResourceAllocationController extends GenericForwardComposer * @param planningState */ public void init(org.navalplanner.business.planner.entities.Task task, + PlanningState planningState, IMessagesForUser messagesForUser) { try { - resourceAllocationModel.init(task); + resourceAllocationModel.init(task, planningState); tabLimitingWorkerSearch.setDisabled(existsResourceAllocationWithDayAssignments()); limitingNewAllocationSelector.setAllocationsAdder(resourceAllocationModel); gridLimitingOrderElementHours.setModel(new ListModelList( diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/limiting/allocation/LimitingResourceAllocationModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/limiting/allocation/LimitingResourceAllocationModel.java index 09dbb8d28..b31ccdcab 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/limiting/allocation/LimitingResourceAllocationModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/limiting/allocation/LimitingResourceAllocationModel.java @@ -40,6 +40,7 @@ import org.navalplanner.business.resources.daos.IResourceDAO; import org.navalplanner.business.resources.entities.Criterion; import org.navalplanner.business.resources.entities.CriterionType; import org.navalplanner.business.resources.entities.Resource; +import org.navalplanner.web.planner.order.PlanningState; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; @@ -74,9 +75,12 @@ public class LimitingResourceAllocationModel implements ILimitingResourceAllocat private List limitingAllocationRows = new ArrayList(); + private PlanningState planningState; + @Override - public void init(Task task) { + public void init(Task task, PlanningState planningState) { this.task = task; + this.planningState = planningState; limitingAllocationRows = LimitingAllocationRow.toRows(task); } @@ -94,15 +98,18 @@ public class LimitingResourceAllocationModel implements ILimitingResourceAllocat public void addGeneric(Set criteria, Collection resources) { if (resources.size() >= 1) { - reattachResources(resources); - addGenericResourceAllocation(criteria, resources); + planningState.reassociateResourcesWithSession(); + addGenericResourceAllocation(criteria, reloadResources(resources)); } } - private void reattachResources(Collection resources) { + private List reloadResources( + Collection resources) { + List result = new ArrayList(); for (Resource each: resources) { - resourceDAO.reattach(each); + result.add(resourceDAO.findExistingEntity(each.getId())); } + return result; } private void addGenericResourceAllocation(Set criteria, @@ -142,9 +149,10 @@ public class LimitingResourceAllocationModel implements ILimitingResourceAllocat @Transactional(readOnly = true) public void addSpecific(Collection resources) { if (resources.size() >= 1) { - Resource resource = getFirstChild(resources); - resourceDAO.reattach(resource); - addSpecificResourceAllocation(resource); + planningState.reassociateResourcesWithSession(); + List reloaded = reloadResources( + Collections.singleton(getFirstChild(resources))); + addSpecificResourceAllocation(getFirstChild(reloaded)); } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/taskedition/EditTaskController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/taskedition/EditTaskController.java index a46bc6ee1..d1f01f2d9 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/taskedition/EditTaskController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/taskedition/EditTaskController.java @@ -167,7 +167,8 @@ public class EditTaskController extends GenericForwardComposer { showNonLimitingResourcesTab(); } else if (ResourceAllocationTypeEnum.LIMITING_RESOURCES .equals(resourceAllocationType)) { - limitingResourceAllocationController.init(asTask(taskElement), messagesForUser); + limitingResourceAllocationController.init(asTask(taskElement), + planningState, messagesForUser); showLimitingResourcesTab(); }