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 6a46a72cd..556f4c3c5 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 @@ -22,7 +22,7 @@ package org.navalplanner.business.materials.daos; import java.util.List; -import org.hibernate.Criteria; +import org.apache.commons.lang.StringUtils; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; import org.navalplanner.business.common.daos.IntegrationEntityDAO; @@ -72,14 +72,22 @@ public class MaterialCategoryDAO extends IntegrationEntityDAO @Transactional(readOnly = true) public MaterialCategory findUniqueByName(String name) throws InstanceNotFoundException { - Criteria criteria = getSession().createCriteria(MaterialCategory.class); - criteria.add(Restrictions.eq("name", name).ignoreCase()); - List list = criteria.list(); - if (list.size() != 1) { - throw new InstanceNotFoundException(name, MaterialCategory.class.getName()); + if (StringUtils.isBlank(name)) { + throw new InstanceNotFoundException(null, getEntityClass() + .getName()); + } + + MaterialCategory materialCategory = (MaterialCategory) getSession() + .createCriteria(MaterialCategory.class).add( + Restrictions.eq("name", name.trim()).ignoreCase()) + .uniqueResult(); + + if (materialCategory == null) { + throw new InstanceNotFoundException(name, getEntityClass().getName()); + } else { + return materialCategory; } - return list.get(0); } @Override 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 e3c3d2cab..31c145096 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 @@ -229,7 +229,7 @@ public class MaterialCategory extends IntegrationEntity { return true; } - @AssertTrue + @AssertTrue(message = "There are repeated material category codes") public boolean checkConstraintNonRepeatedMaterialCategoryCodes() { Set allSubcategories = getAllSubcategories(); allSubcategories.add(this); @@ -244,7 +244,7 @@ public class MaterialCategory extends IntegrationEntity { return result; } - @AssertTrue + @AssertTrue(message = "There are repeated material codes") public boolean checkConstraintNonRepeatedMaterialCodes() { Set allMaterials = getAllMaterials(); return getFirstRepeatedCode(allMaterials) == null;