diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/resources/machine/AssignedMachineCriterionsModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/resources/machine/AssignedMachineCriterionsModel.java index 4a91d26f4..1b897599c 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/resources/machine/AssignedMachineCriterionsModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/resources/machine/AssignedMachineCriterionsModel.java @@ -311,6 +311,8 @@ public class AssignedMachineCriterionsModel extends IntegrationEntityModel CriterionSatisfactionDTO satisfaction) { for (CriterionSatisfactionDTO otherSatisfaction : criterionSatisfactionDTOs) { if ((!otherSatisfaction.equals(satisfaction)) + && (!otherSatisfaction.isIsDeleted()) + && (!satisfaction.isIsDeleted()) && (sameCriterion(otherSatisfaction, satisfaction)) && (sameInterval(otherSatisfaction, satisfaction))) { return true; @@ -351,25 +353,6 @@ public class AssignedMachineCriterionsModel extends IntegrationEntityModel return satisfaction.overlapsWith(otherInterval); } - @Transactional - public void save() throws ValidationException { - for (CriterionSatisfactionDTO satisfactionDTO : getWithCriterionAssignedDTOs()) { - save(satisfactionDTO); - } - } - - private void save(CriterionSatisfactionDTO satisfactionDTO) { - if (satisfactionDTO.isNewObject()) { - addNewSatisfaction(satisfactionDTO); - } else { - if (satisfactionDTO.isIsDeleted()) { - removeSatisfaction(satisfactionDTO); - } else { - updateSatisfaction(satisfactionDTO); - } - } - } - private void addNewSatisfaction(CriterionSatisfactionDTO satisfactionDTO) { Interval interval = satisfactionDTO.getInterval(); CriterionSatisfaction satisfaction = resource.addSatisfaction( @@ -437,6 +420,9 @@ public class AssignedMachineCriterionsModel extends IntegrationEntityModel satisfaction = CriterionSatisfaction.create(criterion, resource, interval); + // set the autogenerated code + currentCriterionSatisfaction = satisfaction; + setDefaultCode(); } else { satisfaction = satisfactionDTO.getCriterionSatisfaction(); if (satisfactionDTO.isIsDeleted()) { @@ -445,6 +431,8 @@ public class AssignedMachineCriterionsModel extends IntegrationEntityModel satisfaction.setStartDate(satisfactionDTO.getStart()); if (satisfactionDTO.getEndDate() != null) { satisfaction.finish(satisfactionDTO.getEnd()); + } else { + satisfaction.noFinish(); } } } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/resources/machine/IAssignedMachineCriterionsModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/resources/machine/IAssignedMachineCriterionsModel.java index 566f04641..352126676 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/resources/machine/IAssignedMachineCriterionsModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/resources/machine/IAssignedMachineCriterionsModel.java @@ -60,8 +60,6 @@ public interface IAssignedMachineCriterionsModel extends void remove(CriterionSatisfactionDTO criterionSatisfactionDTO); - void save() throws ValidationException; - public void setCriterionWithItsType( CriterionSatisfactionDTO criterionSatisfactionDTO, CriterionWithItsType criterionAndType) throws WrongValueException; diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/CriterionsMachineController.java b/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/CriterionsMachineController.java index f83d1d97d..28ccdfeae 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/CriterionsMachineController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/CriterionsMachineController.java @@ -247,7 +247,7 @@ public class CriterionsMachineController extends GenericForwardComposer { } public void save() throws ValidationException{ - assignedMachineCriterionsModel.save(); + assignedMachineCriterionsModel.confirm(); } /**