diff --git a/libreplan-business/src/main/java/org/libreplan/business/logs/daos/IIssueLogDAO.java b/libreplan-business/src/main/java/org/libreplan/business/logs/daos/IIssueLogDAO.java index 95966063d..ee6aa698d 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/logs/daos/IIssueLogDAO.java +++ b/libreplan-business/src/main/java/org/libreplan/business/logs/daos/IIssueLogDAO.java @@ -23,6 +23,7 @@ import java.util.List; import org.libreplan.business.common.daos.IIntegrationEntityDAO; import org.libreplan.business.logs.entities.IssueLog; +import org.libreplan.business.orders.entities.Order; /** * Contract for {@link IssueLogDAO} @@ -37,4 +38,11 @@ public interface IIssueLogDAO extends IIntegrationEntityDAO { * @return a list of {@link IssueLog} objects */ List getIssueLogs(); + + /** + * Returns a list of {@link IssueLog} for a specified {@link Order} + * + * @param order parent element for IssueLogs + */ + List getByParent(Order order); } diff --git a/libreplan-business/src/main/java/org/libreplan/business/logs/daos/IRiskLogDAO.java b/libreplan-business/src/main/java/org/libreplan/business/logs/daos/IRiskLogDAO.java index bcc20a7f6..07cf42af8 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/logs/daos/IRiskLogDAO.java +++ b/libreplan-business/src/main/java/org/libreplan/business/logs/daos/IRiskLogDAO.java @@ -23,6 +23,7 @@ import java.util.List; import org.libreplan.business.common.daos.IIntegrationEntityDAO; import org.libreplan.business.logs.entities.RiskLog; +import org.libreplan.business.orders.entities.Order; public interface IRiskLogDAO extends IIntegrationEntityDAO { @@ -33,4 +34,11 @@ public interface IRiskLogDAO extends IIntegrationEntityDAO { */ List getRiskLogs(); + /** + * Returns a list of {@link RiskLog} for a specified {@link Order} + * + * @param order parent element for RiskLogs + */ + List getByParent(Order order); + } diff --git a/libreplan-business/src/main/java/org/libreplan/business/logs/daos/IssueLogDAO.java b/libreplan-business/src/main/java/org/libreplan/business/logs/daos/IssueLogDAO.java index 0bdcd9e37..6c0cce4d3 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/logs/daos/IssueLogDAO.java +++ b/libreplan-business/src/main/java/org/libreplan/business/logs/daos/IssueLogDAO.java @@ -21,8 +21,10 @@ package org.libreplan.business.logs.daos; import java.util.List; +import org.hibernate.criterion.Restrictions; import org.libreplan.business.common.daos.IntegrationEntityDAO; import org.libreplan.business.logs.entities.IssueLog; +import org.libreplan.business.orders.entities.Order; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Repository; @@ -42,5 +44,12 @@ public class IssueLogDAO extends IntegrationEntityDAO implements return list(IssueLog.class); } + @Override + public List getByParent(Order order) { + return getSession() + .createCriteria(IssueLog.class) + .add(Restrictions.eq("project", order)) + .list(); + } } diff --git a/libreplan-business/src/main/java/org/libreplan/business/logs/daos/RiskLogDAO.java b/libreplan-business/src/main/java/org/libreplan/business/logs/daos/RiskLogDAO.java index 2bce9a40b..265f3b428 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/logs/daos/RiskLogDAO.java +++ b/libreplan-business/src/main/java/org/libreplan/business/logs/daos/RiskLogDAO.java @@ -21,8 +21,10 @@ package org.libreplan.business.logs.daos; import java.util.List; +import org.hibernate.criterion.Restrictions; import org.libreplan.business.common.daos.IntegrationEntityDAO; import org.libreplan.business.logs.entities.RiskLog; +import org.libreplan.business.orders.entities.Order; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Repository; @@ -43,4 +45,12 @@ public class RiskLogDAO extends IntegrationEntityDAO implements return list(RiskLog.class); } + @Override + public List getByParent(Order order) { + return getSession() + .createCriteria(RiskLog.class) + .add(Restrictions.eq("project", order)) + .list(); + } + } diff --git a/libreplan-webapp/src/main/java/org/libreplan/importers/notifications/ComposeMessage.java b/libreplan-webapp/src/main/java/org/libreplan/importers/notifications/ComposeMessage.java index 164df3490..55045847a 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/importers/notifications/ComposeMessage.java +++ b/libreplan-webapp/src/main/java/org/libreplan/importers/notifications/ComposeMessage.java @@ -19,6 +19,8 @@ package org.libreplan.importers.notifications; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.libreplan.business.common.entities.ConnectorProperty; import org.libreplan.business.email.entities.EmailNotification; import org.libreplan.business.email.entities.EmailTemplate; @@ -83,6 +85,8 @@ public class ComposeMessage { private Properties properties; + private static final Log LOG = LogFactory.getLog(ComposeMessage.class); + public boolean composeMessageForUser(EmailNotification notification) { // Gather data about EmailTemplate needs to be used @@ -102,6 +106,11 @@ public class ComposeMessage { EmailTemplate currentEmailTemplate = findCurrentEmailTemplate(type, locale); + if (currentEmailTemplate == null) { + LOG.error("Email template is null"); + return false; + } + // Modify text that will be composed String text = currentEmailTemplate.getContent(); text = replaceKeywords(text, currentWorker, notification); diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/logs/IIssueLogModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/logs/IIssueLogModel.java index 813365aa4..ff3f8bd0b 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/logs/IIssueLogModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/logs/IIssueLogModel.java @@ -115,5 +115,12 @@ public interface IIssueLogModel { */ void remove(IssueLog issueLog); + /** + * Returns a list of {@link IssueLog} for a specified {@link Order} + * + * @param order parent element for IssueLogs + */ + List getByParent(Order order); + } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/logs/IRiskLogModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/logs/IRiskLogModel.java index 63893aec7..3d8c0d9b0 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/logs/IRiskLogModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/logs/IRiskLogModel.java @@ -115,5 +115,12 @@ public interface IRiskLogModel { */ void remove(RiskLog riskLog); + /** + * Returns a list of {@link RiskLog} for a specified {@link Order} + * + * @param order parent element for RiskLogs + */ + List getByParent(Order order); + } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/logs/IssueLogModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/logs/IssueLogModel.java index 652e3c37e..8eec515ab 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/logs/IssueLogModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/logs/IssueLogModel.java @@ -139,6 +139,11 @@ public class IssueLogModel extends IntegrationEntityModel implements IIssueLogMo } } + @Override + public List getByParent(Order order) { + return issueLogDAO.getByParent(order); + } + @Override public EntityNameEnum getEntityName() { return EntityNameEnum.ISSUE_LOG; diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/logs/RiskLogModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/logs/RiskLogModel.java index a90049104..3b89bb061 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/logs/RiskLogModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/logs/RiskLogModel.java @@ -140,6 +140,11 @@ public class RiskLogModel extends IntegrationEntityModel implements IRiskLogMode } } + @Override + public List getByParent(Order order) { + return riskLogDAO.getByParent(order); + } + @Override public EntityNameEnum getEntityName() { return EntityNameEnum.RISK_LOG; diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderModel.java index 0a715b20b..43eee6b6c 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderModel.java @@ -59,7 +59,6 @@ import org.libreplan.business.orders.entities.Order; import org.libreplan.business.orders.entities.OrderElement; import org.libreplan.business.orders.entities.OrderLineGroup; import org.libreplan.business.orders.entities.OrderStatusEnum; -import org.libreplan.business.orders.entities.OrderFile; import org.libreplan.business.planner.entities.PositionConstraintType; import org.libreplan.business.qualityforms.daos.IQualityFormDAO; import org.libreplan.business.qualityforms.entities.QualityForm; @@ -85,6 +84,8 @@ import org.libreplan.business.users.entities.UserRole; import org.libreplan.web.calendars.BaseCalendarModel; import org.libreplan.web.common.IntegrationEntityModel; import org.libreplan.web.common.concurrentdetection.OnConcurrentModification; +import org.libreplan.web.logs.IIssueLogModel; +import org.libreplan.web.logs.IRiskLogModel; import org.libreplan.web.orders.files.IOrderFileModel; import org.libreplan.web.orders.labels.LabelsOnConversation; import org.libreplan.web.planner.order.ISaveCommand.IBeforeSaveActions; @@ -174,6 +175,12 @@ public class OrderModel extends IntegrationEntityModel implements IOrderModel { @Autowired private IOrderFileModel orderFileModel; + @Autowired + private IRiskLogModel riskLogModel; + + @Autowired + private IIssueLogModel issueLogModel; + private List orderList = new ArrayList<>(); @Override @@ -514,8 +521,9 @@ public class OrderModel extends IntegrationEntityModel implements IOrderModel { public void remove(Order detachedOrder) { Order order = orderDAO.findExistingEntity(detachedOrder.getId()); - List orderFiles = orderFileModel.findByParent(order); - orderFiles.forEach((orderFile -> orderFileModel.delete(orderFile))); + removeFiles(order); + + removeLogs(order); removeVersions(order); @@ -524,6 +532,15 @@ public class OrderModel extends IntegrationEntityModel implements IOrderModel { } } + private void removeLogs(Order order) { + riskLogModel.getByParent(order).forEach(riskLog -> riskLogModel.remove(riskLog)); + issueLogModel.getByParent(order).forEach(issueLog -> issueLogModel.remove(issueLog)); + } + + private void removeFiles(Order order) { + orderFileModel.findByParent(order).forEach(orderFile -> orderFileModel.delete(orderFile)); + } + private void removeVersions(Order order) { Map versionsRemovedById = new HashMap<>(); List currentAndDerived = currentAndDerivedScenarios(); diff --git a/pom.xml b/pom.xml index fdfc4ffb2..53140cd2c 100644 --- a/pom.xml +++ b/pom.xml @@ -605,7 +605,7 @@ org.zkoss.zkforge timeplotz - 1.1_50 + 1.1_50_1