diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/CriterionTypeDAO.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/CriterionTypeDAO.java index 3d8e9061b..344b280e1 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/CriterionTypeDAO.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/CriterionTypeDAO.java @@ -48,16 +48,9 @@ public class CriterionTypeDAO extends IntegrationEntityDAO implements ICriterionTypeDAO { @Override - @SuppressWarnings("unchecked") - public List findByName(CriterionType criterionType) { - Criteria criteria = searchByNameCriteria(criterionType.getName()); - return (List) criteria.list(); - } - - private Criteria searchByNameCriteria(String name) { - Criteria result = getSession().createCriteria(CriterionType.class); - result.add(Restrictions.eq("name", name).ignoreCase()); - return result; + public CriterionType findByName(String name) { + return (CriterionType) getSession().createCriteria(CriterionType.class) + .add(Restrictions.eq("name", name).ignoreCase()).uniqueResult(); } @Override @@ -70,7 +63,7 @@ public class CriterionTypeDAO extends IntegrationEntityDAO @Override public CriterionType findUniqueByName(String name) throws InstanceNotFoundException { - CriterionType result = uniqueByName(name); + CriterionType result = findByName(name); if (result == null) { throw new InstanceNotFoundException(name, CriterionType.class.getName()); @@ -78,14 +71,6 @@ public class CriterionTypeDAO extends IntegrationEntityDAO return result; } - /** - * @return the single result of null - */ - private CriterionType uniqueByName(String name) { - Criteria criteria = searchByNameCriteria(name); - return (CriterionType) criteria.uniqueResult(); - } - @Override @Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW) public CriterionType findUniqueByNameAnotherTransaction(String name) @@ -98,7 +83,7 @@ public class CriterionTypeDAO extends IntegrationEntityDAO @Override public boolean existsOtherCriterionTypeByName(CriterionType criterionType) { Validate.notNull(criterionType); - CriterionType found = uniqueByName(criterionType.getName()); + CriterionType found = findByName(criterionType.getName()); return found != null && criterionType != found; } @@ -150,7 +135,7 @@ public class CriterionTypeDAO extends IntegrationEntityDAO public CriterionType findPredefined(CriterionType criterionType) { Validate.notNull(criterionType); Validate.notNull(criterionType.getPredefinedTypeInternalName()); - CriterionType result = uniqueByName(criterionType.getName()); + CriterionType result = findByName(criterionType.getName()); if (result != null) { return result; } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/ICriterionTypeDAO.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/ICriterionTypeDAO.java index 27bb5a4a3..1ec45aa4c 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/ICriterionTypeDAO.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/ICriterionTypeDAO.java @@ -48,7 +48,7 @@ public interface ICriterionTypeDAO CriterionType findUniqueByName(CriterionType criterionType) throws InstanceNotFoundException; - List findByName(CriterionType criterionType); + CriterionType findByName(String name); public boolean existsOtherCriterionTypeByName(CriterionType criterionType); diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/PredefinedCriterionTypes.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/PredefinedCriterionTypes.java index b4ef02a3e..9a7251b17 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/PredefinedCriterionTypes.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/PredefinedCriterionTypes.java @@ -25,6 +25,8 @@ import static org.navalplanner.business.i18n.I18nHelper._; import java.util.Arrays; import java.util.List; +import org.navalplanner.business.common.Registry; + /** * This class defines some criterion types known a priori
* @author Óscar González Fernández @@ -155,4 +157,9 @@ public enum PredefinedCriterionTypes implements ICriterionType { } public abstract List getPredefined(); + + public CriterionType getCriterionType() { + return Registry.getCriterionTypeDAO().findByName(getName()); + } + } diff --git a/navalplanner-webapp/src/test/java/org/navalplanner/web/resources/CriterionModelTest.java b/navalplanner-webapp/src/test/java/org/navalplanner/web/resources/CriterionModelTest.java index 29662db30..6fd070fdc 100644 --- a/navalplanner-webapp/src/test/java/org/navalplanner/web/resources/CriterionModelTest.java +++ b/navalplanner-webapp/src/test/java/org/navalplanner/web/resources/CriterionModelTest.java @@ -30,7 +30,6 @@ import static org.navalplanner.web.WebappGlobalNames.WEBAPP_SPRING_SECURITY_CONF import static org.navalplanner.web.test.WebappGlobalNames.WEBAPP_SPRING_CONFIG_TEST_FILE; import static org.navalplanner.web.test.WebappGlobalNames.WEBAPP_SPRING_SECURITY_CONFIG_TEST_FILE; -import java.util.List; import java.util.UUID; import org.junit.Test; @@ -44,6 +43,7 @@ import org.navalplanner.business.resources.entities.Criterion; import org.navalplanner.business.resources.entities.CriterionType; import org.navalplanner.business.resources.entities.ICriterionType; import org.navalplanner.business.resources.entities.PredefinedCriterionTypes; +import org.navalplanner.web.resources.criterion.CriterionsModel; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.annotation.NotTransactional; import org.springframework.test.context.ContextConfiguration; @@ -134,12 +134,13 @@ public class CriterionModelTest { } private CriterionType ensureExists(CriterionType transientType) { - List found = criterionTypeDAO.findByName(transientType); - if (!found.isEmpty()) { - return found.get(0); + CriterionType found = criterionTypeDAO.findByName(transientType + .getName()); + if (found != null) { + return found; } criterionTypeDAO.save(transientType); - return criterionTypeDAO.findByName(transientType).get(0); + return criterionTypeDAO.findByName(transientType.getName()); } /*@Test