diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/FormBinder.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/FormBinder.java index 3f095e64e..68506afd8 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/FormBinder.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/FormBinder.java @@ -29,6 +29,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.Map.Entry; import org.apache.commons.lang.StringUtils; import org.joda.time.LocalDate; @@ -222,11 +223,20 @@ class FormBinder { } private void reloadValues() { + loadHoursValues(); loadValueForAssignedHoursComponent(); loadValueForTaskStartDateBox(); loadValueForEndDate(); } + private void loadHoursValues() { + for (Entry entry : hoursIntboxesByAllocationDTO.entrySet()) { + Integer hours = resourceAllocationsBeingEdited.getHoursFor(entry + .getKey()); + entry.getValue().setValue(hours); + } + } + public void setApplyButton(Button applyButton) { this.applyButton = applyButton; this.applyButton.setDisabled(true); @@ -249,6 +259,7 @@ class FormBinder { public void setHoursIntboxFor(AllocationDTO data, Intbox hours) { hoursIntboxesByAllocationDTO.put(data, hours); + hours.setValue(resourceAllocationsBeingEdited.getHoursFor(data)); } public int getAssignedHours() { diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationsBeingEdited.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationsBeingEdited.java index d496d5c7e..42c34c2fa 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationsBeingEdited.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationsBeingEdited.java @@ -80,6 +80,8 @@ public class ResourceAllocationsBeingEdited { private Integer daysDuration; + private Map> fromDTOToCurrentAllocation = new HashMap>(); + private ResourceAllocationsBeingEdited(Task task, List initialAllocations) { this.task = task; @@ -124,6 +126,15 @@ public class ResourceAllocationsBeingEdited { return new ArrayList(currentAllocations); } + public Integer getHoursFor(AllocationDTO allocationDTO) { + ResourceAllocation origin = allocationDTO.getOrigin(); + if (fromDTOToCurrentAllocation.containsKey(allocationDTO)) { + return fromDTOToCurrentAllocation.get(allocationDTO) + .getAssignedHours(); + } + return origin != null ? origin.getAssignedHours() : null; + } + private boolean alreadyExistsAllocationFor(Resource resource) { return !getAllocationsFor(resource).isEmpty(); } @@ -232,7 +243,10 @@ public class ResourceAllocationsBeingEdited { for (Entry> entry : allocationsWithTheirRelatedAllocationsOnTask .entrySet()) { AllocationDTO key = entry.getKey(); - result.put(instantiate(key), entry.getValue()); + AllocationBeingModified instantiated = instantiate(key); + result.put(instantiated, entry.getValue()); + fromDTOToCurrentAllocation + .put(key, instantiated.getBeingModified()); } return result; }