From 08c0b078df01404f05257db3c7de276937dc157a Mon Sep 17 00:00:00 2001 From: Diego Pino Garcia Date: Mon, 23 Nov 2009 10:46:58 +0100 Subject: [PATCH] ItEr35S14CUAdministracionMateriaisItEr34S14: manage the relation 'category' between Material and MaterialCategory Methods to manage the relation 'category' in both directions. Written some tests for this relation. There are problems with the deletion process (testRemoveMaterial fails). --- .../business/materials/entities/Material.java | 5 ++++- .../materials/entities/MaterialCategory.java | 13 +++++++++++++ .../test/materials/daos/MaterialDAOTest.java | 15 +++++++++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/materials/entities/Material.java b/navalplanner-business/src/main/java/org/navalplanner/business/materials/entities/Material.java index 449646afe..373495de1 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/materials/entities/Material.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/materials/entities/Material.java @@ -44,7 +44,7 @@ public class Material extends BaseEntity { private boolean disabled; @NotNull - private MaterialCategory category; + private MaterialCategory category = null; // Default constructor, needed by Hibernate protected Material() { @@ -72,7 +72,10 @@ public class Material extends BaseEntity { } public void setCategory(MaterialCategory category) { + if(this.category!=null) + this.category.removeMaterial(this); this.category = category; + category.addMaterial(this); } public String getDescription() { diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/materials/entities/MaterialCategory.java b/navalplanner-business/src/main/java/org/navalplanner/business/materials/entities/MaterialCategory.java index 3b0e5e1c3..fd3ecbc91 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/materials/entities/MaterialCategory.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/materials/entities/MaterialCategory.java @@ -97,4 +97,17 @@ public class MaterialCategory extends BaseEntity { if(subcategory.getParent()!=null) subcategory.removeParent(); } + + public Set getMaterials() { + return materials; + } + + public void addMaterial(Material material) { + materials.add(material); + if(material.getCategory()!=this) + material.setCategory(this); + } + public void removeMaterial(Material material) { + materials.remove(material); + } } diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/materials/daos/MaterialDAOTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/materials/daos/MaterialDAOTest.java index 55b9e1b1b..06a37f6a7 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/materials/daos/MaterialDAOTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/materials/daos/MaterialDAOTest.java @@ -28,6 +28,7 @@ import static org.navalplanner.business.BusinessGlobalNames.BUSINESS_SPRING_CONF import static org.navalplanner.business.test.BusinessGlobalNames.BUSINESS_SPRING_CONFIG_TEST_FILE; import java.util.List; +import java.util.Set; import java.util.UUID; import org.junit.Test; @@ -84,6 +85,7 @@ public class MaterialDAOTest { public void testRemoveMaterial() throws InstanceNotFoundException { Material material = createValidMaterial(); materialDAO.save(material); + //material.getCategory().removeMaterial(material); materialDAO.remove(material.getId()); assertFalse(materialDAO.exists(material.getId())); } @@ -96,4 +98,17 @@ public class MaterialDAOTest { List list = materialDAO.list(Material.class); assertEquals(previous + 1, list.size()); } + + @Test + public void testListMaterialsFromCategory() { + Material material1 = createValidMaterial(); + int previous = material1.getCategory().getMaterials().size(); + Material material2 = createValidMaterial(); + material2.setCategory(material1.getCategory()); + materialDAO.save(material1); + materialDAO.save(material2); + + Set list = material1.getCategory().getMaterials(); + assertEquals(previous + 1, list.size()); + } }