From a10f37d3905166218081ca7bedc726d28432ed72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lorenzo=20Tilve=20=C3=81lvaro?= Date: Fri, 14 Jun 2013 10:10:17 +0200 Subject: [PATCH] Added restriction to avoid deletion of costCategories assigned to criterion FEA: ItEr77S17AutomaticBudgeting --- .../business/resources/daos/CriterionDAO.java | 14 ++++++++++++++ .../business/resources/daos/ICriterionDAO.java | 3 +++ .../web/costcategories/CostCategoryModel.java | 10 ++++++++-- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/libreplan-business/src/main/java/org/libreplan/business/resources/daos/CriterionDAO.java b/libreplan-business/src/main/java/org/libreplan/business/resources/daos/CriterionDAO.java index ea5abd926..ae4a717ef 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/resources/daos/CriterionDAO.java +++ b/libreplan-business/src/main/java/org/libreplan/business/resources/daos/CriterionDAO.java @@ -34,6 +34,7 @@ import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; import org.libreplan.business.common.daos.IntegrationEntityDAO; import org.libreplan.business.common.exceptions.InstanceNotFoundException; +import org.libreplan.business.costcategories.entities.CostCategory; import org.libreplan.business.requirements.entities.CriterionRequirement; import org.libreplan.business.resources.entities.Criterion; import org.libreplan.business.resources.entities.CriterionSatisfaction; @@ -201,4 +202,17 @@ public class CriterionDAO extends IntegrationEntityDAO return Integer.valueOf(c.uniqueResult().toString()).intValue(); } + @Override + public boolean hasCostCategoryAssignments(CostCategory costCategory) { + for (Criterion crit: getAll()) { + if (crit.getCostCategory() != null) { + if (crit.getCostCategory().getCode().equals(costCategory + .getCode())) { + return true; + } + } + } + return false; + } + } diff --git a/libreplan-business/src/main/java/org/libreplan/business/resources/daos/ICriterionDAO.java b/libreplan-business/src/main/java/org/libreplan/business/resources/daos/ICriterionDAO.java index f3053b974..4eb224a79 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/resources/daos/ICriterionDAO.java +++ b/libreplan-business/src/main/java/org/libreplan/business/resources/daos/ICriterionDAO.java @@ -25,6 +25,7 @@ import java.util.List; import org.libreplan.business.common.daos.IIntegrationEntityDAO; import org.libreplan.business.common.exceptions.InstanceNotFoundException; +import org.libreplan.business.costcategories.entities.CostCategory; import org.libreplan.business.resources.entities.Criterion; import org.libreplan.business.resources.entities.ICriterionType; @@ -65,4 +66,6 @@ public interface ICriterionDAO extends IIntegrationEntityDAO { public int numberOfRelatedSatisfactions(Criterion criterion); + public boolean hasCostCategoryAssignments(CostCategory costCategory); + } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/costcategories/CostCategoryModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/costcategories/CostCategoryModel.java index 3478ea68f..691e530ed 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/costcategories/CostCategoryModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/costcategories/CostCategoryModel.java @@ -37,6 +37,7 @@ import org.libreplan.business.costcategories.daos.ITypeOfWorkHoursDAO; import org.libreplan.business.costcategories.entities.CostCategory; import org.libreplan.business.costcategories.entities.HourCost; import org.libreplan.business.costcategories.entities.TypeOfWorkHours; +import org.libreplan.business.resources.daos.ICriterionDAO; import org.libreplan.web.common.IntegrationEntityModel; import org.libreplan.web.common.concurrentdetection.OnConcurrentModification; import org.springframework.beans.factory.annotation.Autowired; @@ -62,6 +63,9 @@ public class CostCategoryModel extends IntegrationEntityModel implements @Autowired private ICostCategoryDAO costCategoryDAO; + @Autowired + private ICriterionDAO criterionDAO; + @Autowired private IResourcesCostCategoryAssignmentDAO resourcesCostCategoryAssignmentDAO; @@ -177,8 +181,10 @@ public class CostCategoryModel extends IntegrationEntityModel implements @Override @Transactional(readOnly=true) public boolean canRemoveCostCategory(CostCategory category) { - return (resourcesCostCategoryAssignmentDAO. - getResourcesCostCategoryAssignmentsByCostCategory(category).size() == 0); + return (resourcesCostCategoryAssignmentDAO + .getResourcesCostCategoryAssignmentsByCostCategory(category) + .size() == 0) + && !criterionDAO.hasCostCategoryAssignments(category); } public EntityNameEnum getEntityName() {