From 4f23fe7ad6f634237883d49e131d6f91dff085af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Wed, 16 Sep 2009 23:14:55 +0200 Subject: [PATCH] ItEr25S07CUAsignacionGrupoRecursosAPlanificacionItEr24S08: When saving the planner's tasks, the orphaned day assignments are removed --- .../planner/daos/ITaskElementDAO.java | 6 +++ .../business/planner/daos/TaskElementDAO.java | 38 +++++++++++++++++++ .../navalplanner/web/planner/SaveCommand.java | 2 + 3 files changed, 46 insertions(+) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/daos/ITaskElementDAO.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/daos/ITaskElementDAO.java index 21cf3ada4..0a219772b 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/daos/ITaskElementDAO.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/daos/ITaskElementDAO.java @@ -1,6 +1,7 @@ package org.navalplanner.business.planner.daos; import org.navalplanner.business.common.daos.IGenericDAO; +import org.navalplanner.business.planner.entities.DayAssigment; import org.navalplanner.business.planner.entities.TaskElement; /** @@ -8,4 +9,9 @@ import org.navalplanner.business.planner.entities.TaskElement; */ public interface ITaskElementDAO extends IGenericDAO { + /** + * Removes {@link DayAssigment} that have no parent + */ + void removeOrphanedDayAssignments(); + } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/daos/TaskElementDAO.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/daos/TaskElementDAO.java index 00b06ee00..a39c55469 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/daos/TaskElementDAO.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/daos/TaskElementDAO.java @@ -1,10 +1,18 @@ package org.navalplanner.business.planner.daos; +import java.util.ArrayList; +import java.util.List; + +import org.hibernate.criterion.Restrictions; import org.navalplanner.business.common.daos.GenericDAOHibernate; +import org.navalplanner.business.planner.entities.DayAssigment; +import org.navalplanner.business.planner.entities.GenericDayAssigment; +import org.navalplanner.business.planner.entities.SpecificDayAssigment; import org.navalplanner.business.planner.entities.TaskElement; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; /** * @author Óscar González Fernández @@ -14,4 +22,34 @@ import org.springframework.stereotype.Repository; public class TaskElementDAO extends GenericDAOHibernate implements ITaskElementDAO { + @Override + @Transactional + public void removeOrphanedDayAssignments() { + deleteAll(getOrphanedDayAssigments()); + } + + private void deleteAll(List orphaned) { + for (DayAssigment dayAssigment : orphaned) { + getSession().delete(dayAssigment); + } + } + + private List getOrphanedDayAssigments() { + List orphaned = new ArrayList(); + orphaned.addAll(findOrphanedGenericDayAssignments()); + orphaned.addAll(findOrphanedSpecificDayAssignments()); + return orphaned; + } + + @SuppressWarnings("unchecked") + private List findOrphanedGenericDayAssignments() { + return getSession().createCriteria(GenericDayAssigment.class).add( + Restrictions.isNull("genericResourceAllocation")).list(); + } + + @SuppressWarnings("unchecked") + private List findOrphanedSpecificDayAssignments() { + return getSession().createCriteria(SpecificDayAssigment.class).add( + Restrictions.isNull("specificResourceAllocation")).list(); + } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/SaveCommand.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/SaveCommand.java index 01537e774..73702ea04 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/SaveCommand.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/SaveCommand.java @@ -29,6 +29,7 @@ public class SaveCommand implements ISaveCommand { @Autowired private ITaskElementDAO taskElementDAO; + private PlanningState state; @Override @@ -66,6 +67,7 @@ public class SaveCommand implements ISaveCommand { } } } + taskElementDAO.removeOrphanedDayAssignments(); // FIXME Messagebox#show blocks the thread so the transaction is not // executed until ok is pressed try {