diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/daos/ISubcontractedTaskDataDAO.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/daos/ISubcontractedTaskDataDAO.java index 18443c8aa..cf6727ee8 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/daos/ISubcontractedTaskDataDAO.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/daos/ISubcontractedTaskDataDAO.java @@ -37,4 +37,6 @@ public interface ISubcontractedTaskDataDAO extends List getAll(); + void removeOrphanedSubcontractedTaskData(); + } \ No newline at end of file diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/daos/SubcontractedTaskDataDAO.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/daos/SubcontractedTaskDataDAO.java index ed33bb512..339fb8f5b 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/daos/SubcontractedTaskDataDAO.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/daos/SubcontractedTaskDataDAO.java @@ -22,6 +22,7 @@ package org.navalplanner.business.planner.daos; import java.util.List; +import org.hibernate.criterion.Restrictions; import org.navalplanner.business.common.daos.GenericDAOHibernate; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.planner.entities.SubcontractedTaskData; @@ -62,4 +63,13 @@ public class SubcontractedTaskDataDAO extends return list(SubcontractedTaskData.class); } + @Override + public void removeOrphanedSubcontractedTaskData() { + for (SubcontractedTaskData subcontractedTaskData : getAll()) { + if (subcontractedTaskData.getTask() == null) { + getSession().delete(subcontractedTaskData); + } + } + } + } \ No newline at end of file diff --git a/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/Tasks.hbm.xml b/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/Tasks.hbm.xml index c6d271f8e..8041878e6 100644 --- a/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/Tasks.hbm.xml +++ b/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/Tasks.hbm.xml @@ -98,8 +98,8 @@ - + diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/SaveCommand.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/SaveCommand.java index fee3227d9..039fec4b0 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/SaveCommand.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/SaveCommand.java @@ -35,6 +35,7 @@ import org.navalplanner.business.common.IAdHocTransactionService; import org.navalplanner.business.common.IOnTransaction; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.planner.daos.IDayAssignmentDAO; +import org.navalplanner.business.planner.daos.ISubcontractedTaskDataDAO; import org.navalplanner.business.planner.daos.ITaskElementDAO; import org.navalplanner.business.planner.entities.DayAssignment; import org.navalplanner.business.planner.entities.DerivedAllocation; @@ -68,6 +69,9 @@ public class SaveCommand implements ISaveCommand { @Autowired private IDayAssignmentDAO dayAssignmentDAO; + @Autowired + private ISubcontractedTaskDataDAO subcontractedTaskDataDAO; + private PlanningState state; @Autowired @@ -112,6 +116,7 @@ public class SaveCommand implements ISaveCommand { saveTasksToSave(); removeTasksToRemove(); taskElementDAO.removeOrphanedDayAssignments(); + subcontractedTaskDataDAO.removeOrphanedSubcontractedTaskData(); } private void removeTasksToRemove() {