diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/materials/daos/IMaterialCategoryDAO.java b/navalplanner-business/src/main/java/org/navalplanner/business/materials/daos/IMaterialCategoryDAO.java index 303a1a91a..cc4dfe1b8 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/materials/daos/IMaterialCategoryDAO.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/materials/daos/IMaterialCategoryDAO.java @@ -22,7 +22,7 @@ package org.navalplanner.business.materials.daos; import java.util.List; -import org.navalplanner.business.common.daos.IGenericDAO; +import org.navalplanner.business.common.daos.IIntegrationEntityDAO; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.materials.entities.Material; import org.navalplanner.business.materials.entities.MaterialCategory; @@ -33,7 +33,8 @@ import org.navalplanner.business.materials.entities.MaterialCategory; * @author Jacobo Aragunde Perez * @author Diego Pino Garcia */ -public interface IMaterialCategoryDAO extends IGenericDAO { +public interface IMaterialCategoryDAO extends + IIntegrationEntityDAO { /** * Returns true if {@link MaterialCategory} exists diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/materials/daos/IMaterialDAO.java b/navalplanner-business/src/main/java/org/navalplanner/business/materials/daos/IMaterialDAO.java index b62d7bd85..3808c559d 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/materials/daos/IMaterialDAO.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/materials/daos/IMaterialDAO.java @@ -23,7 +23,7 @@ package org.navalplanner.business.materials.daos; import java.util.List; import java.util.Set; -import org.navalplanner.business.common.daos.IGenericDAO; +import org.navalplanner.business.common.daos.IIntegrationEntityDAO; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.materials.entities.Material; import org.navalplanner.business.materials.entities.MaterialAssignment; @@ -37,7 +37,7 @@ import org.navalplanner.business.orders.entities.Order; * @author Jacobo Aragunde Perez * @author Diego Pino Garcia */ -public interface IMaterialDAO extends IGenericDAO { +public interface IMaterialDAO extends IIntegrationEntityDAO { /** * Returns true if {@link Material} exits diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/materials/daos/MaterialCategoryDAO.java b/navalplanner-business/src/main/java/org/navalplanner/business/materials/daos/MaterialCategoryDAO.java index a46d45bca..f991cae28 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/materials/daos/MaterialCategoryDAO.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/materials/daos/MaterialCategoryDAO.java @@ -24,7 +24,7 @@ import java.util.List; import org.hibernate.Criteria; import org.hibernate.criterion.Restrictions; -import org.navalplanner.business.common.daos.GenericDAOHibernate; +import org.navalplanner.business.common.daos.IntegrationEntityDAO; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.materials.entities.MaterialCategory; import org.springframework.beans.factory.config.BeanDefinition; @@ -40,7 +40,8 @@ import org.springframework.transaction.annotation.Transactional; */ @Repository @Scope(BeanDefinition.SCOPE_SINGLETON) -public class MaterialCategoryDAO extends GenericDAOHibernate implements +public class MaterialCategoryDAO extends IntegrationEntityDAO + implements IMaterialCategoryDAO { @Override diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/materials/daos/MaterialDAO.java b/navalplanner-business/src/main/java/org/navalplanner/business/materials/daos/MaterialDAO.java index ffacbcc89..c6ea30705 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/materials/daos/MaterialDAO.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/materials/daos/MaterialDAO.java @@ -28,7 +28,7 @@ import java.util.Set; import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.criterion.Restrictions; -import org.navalplanner.business.common.daos.GenericDAOHibernate; +import org.navalplanner.business.common.daos.IntegrationEntityDAO; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.materials.entities.Material; import org.navalplanner.business.materials.entities.MaterialAssignment; @@ -50,7 +50,7 @@ import org.springframework.transaction.annotation.Transactional; */ @Repository @Scope(BeanDefinition.SCOPE_SINGLETON) -public class MaterialDAO extends GenericDAOHibernate implements +public class MaterialDAO extends IntegrationEntityDAO implements IMaterialDAO { @Override 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 ceef60bbb..966c74a3a 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 @@ -25,7 +25,7 @@ import java.math.BigDecimal; import org.hibernate.validator.AssertTrue; import org.hibernate.validator.NotEmpty; import org.hibernate.validator.NotNull; -import org.navalplanner.business.common.BaseEntity; +import org.navalplanner.business.common.IntegrationEntity; import org.navalplanner.business.common.Registry; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.materials.daos.IMaterialDAO; @@ -36,7 +36,7 @@ import org.navalplanner.business.materials.daos.IMaterialDAO; * @author Jacobo Aragunde Perez * */ -public class Material extends BaseEntity implements Comparable { +public class Material extends IntegrationEntity implements Comparable { @NotEmpty(message = "code not specified") private String code; @@ -146,4 +146,9 @@ public class Material extends BaseEntity implements Comparable { } } + @Override + protected IMaterialDAO getIntegrationEntityDAO() { + return Registry.getMaterialDAO(); + } + } 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 67a936a02..d014f727d 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 @@ -26,10 +26,12 @@ import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; + +import org.apache.commons.lang.StringUtils; import org.hibernate.validator.AssertTrue; import org.hibernate.validator.NotEmpty; import org.hibernate.validator.Valid; -import org.navalplanner.business.common.BaseEntity; +import org.navalplanner.business.common.IntegrationEntity; import org.navalplanner.business.common.Registry; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.materials.daos.IMaterialCategoryDAO; @@ -40,7 +42,7 @@ import org.navalplanner.business.materials.daos.IMaterialCategoryDAO; * @author Jacobo Aragunde Perez * */ -public class MaterialCategory extends BaseEntity { +public class MaterialCategory extends IntegrationEntity { public static List getAllMaterialsFrom( Collection categories) { @@ -144,4 +146,26 @@ public class MaterialCategory extends BaseEntity { } } + public Material getMaterialByCode(String code) + throws InstanceNotFoundException { + + if (StringUtils.isBlank(code)) { + throw new InstanceNotFoundException(code, Material.class.getName()); + } + + for (Material m : this.materials) { + if (m.getCode().equalsIgnoreCase(StringUtils.trim(code))) { + return m; + } + } + + throw new InstanceNotFoundException(code, Material.class.getName()); + + } + + @Override + protected IMaterialCategoryDAO getIntegrationEntityDAO() { + return Registry.getMaterialCategoryDAO(); + } + } diff --git a/navalplanner-business/src/main/resources/org/navalplanner/business/materials/entities/Materials.hbm.xml b/navalplanner-business/src/main/resources/org/navalplanner/business/materials/entities/Materials.hbm.xml index c2ec68ad4..0d4582908 100644 --- a/navalplanner-business/src/main/resources/org/navalplanner/business/materials/entities/Materials.hbm.xml +++ b/navalplanner-business/src/main/resources/org/navalplanner/business/materials/entities/Materials.hbm.xml @@ -49,6 +49,8 @@ + + diff --git a/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/orders/OrderElementServiceTest.java b/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/orders/OrderElementServiceTest.java index a674aff9f..29cdced63 100644 --- a/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/orders/OrderElementServiceTest.java +++ b/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/orders/OrderElementServiceTest.java @@ -109,6 +109,9 @@ public class OrderElementServiceTest { @Resource private IDataBootstrap materialCategoryBootstrap; + @Resource + private IDataBootstrap unitTypeBootstrap; + @Resource private IDataBootstrap criterionsBootstrap; @@ -119,6 +122,7 @@ public class OrderElementServiceTest { configurationBootstrap.loadRequiredData(); materialCategoryBootstrap.loadRequiredData(); criterionsBootstrap.loadRequiredData(); + unitTypeBootstrap.loadRequiredData(); } @Autowired @@ -471,7 +475,7 @@ public class OrderElementServiceTest { List constraintViolations = instanceConstraintViolationsList .get(0).constraintViolations; // Mandatory fields: material code - assertThat(constraintViolations.size(), equalTo(1)); + assertThat(constraintViolations.size(), equalTo(2)); assertThat(constraintViolations.get(0).fieldName, mustEnd("code")); assertThat(orderDAO.getOrders().size(), equalTo(previous));