From 6064501a9ed39e8c13b6b8fdb146d1cd682d33ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Aragunde=20P=C3=A9rez?= Date: Tue, 20 Apr 2010 20:46:47 +0200 Subject: [PATCH] ItEr55S13CUAdministracionMateriaisItEr37S11: Check a Material is assigned to an Order, so it can be removed. --- .../navalplanner/web/materials/IMaterialsModel.java | 2 ++ .../web/materials/MaterialsController.java | 12 +++++++++--- .../navalplanner/web/materials/MaterialsModel.java | 13 +++++++++++++ 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/materials/IMaterialsModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/materials/IMaterialsModel.java index 8002cbd0d..73d475a64 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/materials/IMaterialsModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/materials/IMaterialsModel.java @@ -57,4 +57,6 @@ public interface IMaterialsModel { List getUnitTypes(); void loadUnitTypes(); + + boolean canRemoveMaterial(Material material); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/materials/MaterialsController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/materials/MaterialsController.java index 096563fd9..9adba12dd 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/materials/MaterialsController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/materials/MaterialsController.java @@ -119,7 +119,7 @@ public class MaterialsController extends final Row row = (Row) i.next(); final Material material = (Material) row.getValue(); Button btnDelete = (Button) row.getChildren().get(6); - if (!material.isNewObject()) { + if (!materialsModel.canRemoveMaterial(material)) { btnDelete.setDisabled(true); btnDelete.setImage("/common/img/ico_borrar_out.png"); btnDelete.setHoverImage("/common/img/ico_borrar_out.png"); @@ -502,8 +502,14 @@ public class MaterialsController extends } public void remove(Material material) { - materialsModel.removeMaterial(material); - Util.reloadBindings(gridMaterials); + if(materialsModel.canRemoveMaterial(material)) { + materialsModel.removeMaterial(material); + Util.reloadBindings(gridMaterials); + } + else { + messagesForUser.showMessage(Level.ERROR, + _("Cannot delete that material because it is assigned to an order.")); + } } public void clearSelectionCategoriesTree() { diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/materials/MaterialsModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/materials/MaterialsModel.java index 1c78e57f3..b7ae05b92 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/materials/MaterialsModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/materials/MaterialsModel.java @@ -35,6 +35,7 @@ import org.hibernate.validator.InvalidValue; import org.navalplanner.business.common.daos.IConfigurationDAO; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.common.exceptions.ValidationException; +import org.navalplanner.business.materials.daos.IMaterialAssignmentDAO; import org.navalplanner.business.materials.daos.IMaterialCategoryDAO; import org.navalplanner.business.materials.daos.IMaterialDAO; import org.navalplanner.business.materials.daos.IUnitTypeDAO; @@ -66,6 +67,9 @@ public class MaterialsModel implements IMaterialsModel { @Autowired IConfigurationDAO configurationDAO; + @Autowired + IMaterialAssignmentDAO materialAssignmentDAO; + MutableTreeModel materialCategories = MutableTreeModel .create(MaterialCategory.class); @@ -276,4 +280,13 @@ public class MaterialsModel implements IMaterialsModel { public List getUnitTypes() { return this.unitTypes; } + + @Override + @Transactional(readOnly = true) + public boolean canRemoveMaterial(Material material) { + if(material.isNewObject()) { + return true; + } + return materialAssignmentDAO.getByMaterial(material).size() == 0; + } }