diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/costcategories/ResourcesCostCategoryAssignmentController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/costcategories/ResourcesCostCategoryAssignmentController.java index 2749316a0..53f79be32 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/costcategories/ResourcesCostCategoryAssignmentController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/costcategories/ResourcesCostCategoryAssignmentController.java @@ -310,5 +310,6 @@ public class ResourcesCostCategoryAssignmentController extends GenericForwardCom public void setResource(Resource resource) { resourcesCostCategoryAssignmentModel.setResource(resource); + Util.reloadBindings(listResourcesCostCategoryAssignments); } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/costcategories/ResourcesCostCategoryAssignmentModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/costcategories/ResourcesCostCategoryAssignmentModel.java index d84047fe4..029926d12 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/costcategories/ResourcesCostCategoryAssignmentModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/costcategories/ResourcesCostCategoryAssignmentModel.java @@ -21,8 +21,10 @@ package org.navalplanner.web.costcategories; import java.util.ArrayList; +import java.util.Collection; import java.util.List; +import org.navalplanner.business.costcategories.entities.CostCategory; import org.navalplanner.business.costcategories.entities.ResourcesCostCategoryAssignment; import org.navalplanner.business.resources.daos.IResourceDAO; import org.navalplanner.business.resources.entities.Resource; @@ -36,25 +38,32 @@ import org.springframework.transaction.annotation.Transactional; * Model for UI operations related to {@link ResourcesCostCategoryAssignment} * * @author Jacobo Aragunde Perez + * @author Diego Pino Garcia */ @Service @Scope(BeanDefinition.SCOPE_PROTOTYPE) public class ResourcesCostCategoryAssignmentModel implements IResourcesCostCategoryAssignmentModel { - Resource resource; + private Resource resource; @Autowired IResourceDAO resourceDAO; + private List resourceCostCategoryAssignments = + new ArrayList(); + @Override public List getCostCategoryAssignments() { - List list = - new ArrayList(); if (resource != null) { - list.addAll(resource.getResourcesCostCategoryAssignments()); + loadCostCategoryAssignments(); } - return list; + return resourceCostCategoryAssignments; + } + + private void loadCostCategoryAssignments() { + resourceCostCategoryAssignments.clear(); + resourceCostCategoryAssignments.addAll(resource.getResourcesCostCategoryAssignments()); } @Override @@ -67,19 +76,30 @@ public class ResourcesCostCategoryAssignmentModel implements public void removeCostCategoryAssignment( ResourcesCostCategoryAssignment assignment) { resource.removeResourcesCostCategoryAssignment(assignment); - } - - private void forceLoadCostCategoryAssignments(Resource resource) { - for (ResourcesCostCategoryAssignment assignment : resource.getResourcesCostCategoryAssignments()) { - assignment.getCostCategory().getName(); - } + loadCostCategoryAssignments(); } @Override @Transactional(readOnly = true) public void setResource(Resource resource) { resourceDAO.reattach(resource); - forceLoadCostCategoryAssignments(resource); + initializeCostCategoryAssignments(resource.getResourcesCostCategoryAssignments()); this.resource = resource; } + + private void initializeCostCategoryAssignments(Collection resourceCostCategoryAssignments) { + for (ResourcesCostCategoryAssignment each: resourceCostCategoryAssignments) { + initializeCostCategoryAssignment(each); + } + } + + private void initializeCostCategoryAssignment(ResourcesCostCategoryAssignment resourceCostCategoryAssignment) { + resourceCostCategoryAssignment.getEndDate(); + initializeCostCategory(resourceCostCategoryAssignment.getCostCategory()); + } + + private void initializeCostCategory(CostCategory costCategory) { + costCategory.getName(); + } + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/machine/MachineCRUDController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/machine/MachineCRUDController.java index d4d57fddf..9d8052448 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/machine/MachineCRUDController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/machine/MachineCRUDController.java @@ -40,6 +40,7 @@ import org.navalplanner.web.common.MessagesForUser; import org.navalplanner.web.common.OnlyOneVisible; import org.navalplanner.web.common.Util; import org.navalplanner.web.common.entrypoints.IURLHandlerRegistry; +import org.navalplanner.web.costcategories.ResourcesCostCategoryAssignmentController; import org.navalplanner.web.resources.worker.CriterionsController; import org.navalplanner.web.resources.worker.CriterionsMachineController; import org.zkoss.zk.ui.Component; @@ -78,6 +79,8 @@ public class MachineCRUDController extends GenericForwardComposer { private MachineConfigurationController configurationController; + private ResourcesCostCategoryAssignmentController resourcesCostCategoryAssignmentController; + private static final Log LOG = LogFactory .getLog(MachineCRUDController.class); @@ -102,6 +105,7 @@ public class MachineCRUDController extends GenericForwardComposer { messagesForUser = new MessagesForUser(messagesContainer); setupCriterionsController(); setupConfigurationController(); + setupResourcesCostCategoryAssignmentController(comp); showListWindow(); } @@ -128,10 +132,19 @@ public class MachineCRUDController extends GenericForwardComposer { .getVariable("configurationController", true); } + private void setupResourcesCostCategoryAssignmentController(Component comp) + throws Exception { + Component costCategoryAssignmentContainer = + editWindow.getFellowIfAny("costCategoryAssignmentContainer"); + resourcesCostCategoryAssignmentController = (ResourcesCostCategoryAssignmentController) + costCategoryAssignmentContainer.getVariable("assignmentController", true); + } + public void goToCreateForm() { machineModel.initCreate(); criterionsController.prepareForCreate(machineModel.getMachine()); configurationController.initConfigurationController(machineModel); + resourcesCostCategoryAssignmentController.setResource(machineModel.getMachine()); selectMachineDataTab(); showEditWindow(_("Create machine")); } @@ -159,6 +172,7 @@ public class MachineCRUDController extends GenericForwardComposer { selectMachineDataTab(); showEditWindow(_("Edit machine")); configurationController.initConfigurationController(machineModel); + resourcesCostCategoryAssignmentController.setResource(machineModel.getMachine()); } private void selectMachineDataTab() { diff --git a/navalplanner-webapp/src/main/webapp/resources/machine/_editMachine.zul b/navalplanner-webapp/src/main/webapp/resources/machine/_editMachine.zul index d2101321a..8478daccf 100644 --- a/navalplanner-webapp/src/main/webapp/resources/machine/_editMachine.zul +++ b/navalplanner-webapp/src/main/webapp/resources/machine/_editMachine.zul @@ -21,6 +21,7 @@ + @@ -28,6 +29,7 @@ + @@ -67,6 +69,9 @@ + + +