From c0da04ff89dbea4758a7acff626c5d0b9e02bdfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Wed, 7 Apr 2010 23:33:10 +0200 Subject: [PATCH] ItEr53S11RFInfraestucturaEscenariosItEr52S11: Delete associated WorkReports when erasing an order element. It was causing intermittent test failures at OrderModelTest. --- .../business/orders/daos/OrderElementDAO.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/daos/OrderElementDAO.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/daos/OrderElementDAO.java index 3cff01bcd..e50ebc1b7 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/daos/OrderElementDAO.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/daos/OrderElementDAO.java @@ -22,8 +22,10 @@ package org.navalplanner.business.orders.daos; import java.math.BigDecimal; import java.math.RoundingMode; +import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Set; import org.apache.commons.lang.StringUtils; import org.hibernate.Criteria; @@ -38,6 +40,7 @@ import org.navalplanner.business.orders.entities.OrderElement; import org.navalplanner.business.orders.entities.TaskSource; import org.navalplanner.business.planner.daos.ITaskSourceDAO; import org.navalplanner.business.templates.entities.OrderElementTemplate; +import org.navalplanner.business.workreports.daos.IWorkReportDAO; import org.navalplanner.business.workreports.daos.IWorkReportLineDAO; import org.navalplanner.business.workreports.entities.WorkReport; import org.navalplanner.business.workreports.entities.WorkReportLine; @@ -63,6 +66,9 @@ public class OrderElementDAO extends IntegrationEntityDAO @Autowired private IWorkReportLineDAO workReportLineDAO; + @Autowired + private IWorkReportDAO workReportDAO; + @Autowired private ITaskSourceDAO taskSourceDAO; @@ -188,9 +194,21 @@ public class OrderElementDAO extends IntegrationEntityDAO each.detachAssociatedTaskFromParent(); taskSourceDAO.remove(each.getId()); } + for (WorkReport each : getWorkReportsPointingTo(orderElement)) { + workReportDAO.remove(each.getId()); + } super.remove(id); } + private Set getWorkReportsPointingTo(OrderElement orderElement) { + Set result = new HashSet(); + for (WorkReportLine each : workReportLineDAO + .findByOrderElementAndChildren(orderElement)) { + result.add(each.getWorkReport()); + } + return result; + } + @Override public List findAll() { return getSession().createCriteria(getEntityClass()).addOrder(