From 632664a4b6b8b0b5a2be6781ca2abd60bb4e3014 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Wed, 16 Dec 2009 16:15:18 +0100 Subject: [PATCH] ItEr39S17CUImportacionOrganizacionsTraballo: Added method "findUniqueByName" to ILabelTypeDAO. --- .../business/labels/daos/ILabelTypeDAO.java | 5 +++ .../business/labels/daos/LabelTypeDAO.java | 38 ++++++++++++------- 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/labels/daos/ILabelTypeDAO.java b/navalplanner-business/src/main/java/org/navalplanner/business/labels/daos/ILabelTypeDAO.java index 59ad316d1..12aa3a981 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/labels/daos/ILabelTypeDAO.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/labels/daos/ILabelTypeDAO.java @@ -22,7 +22,9 @@ package org.navalplanner.business.labels.daos; import java.util.List; +import org.hibernate.NonUniqueResultException; import org.navalplanner.business.common.daos.IGenericDAO; +import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.labels.entities.LabelType; /** @@ -36,4 +38,7 @@ public interface ILabelTypeDAO extends IGenericDAO { boolean isUnique(LabelType labelType); + LabelType findUniqueByName(String type) throws InstanceNotFoundException, + NonUniqueResultException; + } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/labels/daos/LabelTypeDAO.java b/navalplanner-business/src/main/java/org/navalplanner/business/labels/daos/LabelTypeDAO.java index fd82dfe40..99254ef80 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/labels/daos/LabelTypeDAO.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/labels/daos/LabelTypeDAO.java @@ -22,6 +22,9 @@ package org.navalplanner.business.labels.daos; import java.util.List; +import org.apache.commons.lang.Validate; +import org.hibernate.Criteria; +import org.hibernate.NonUniqueResultException; import org.hibernate.criterion.Restrictions; import org.navalplanner.business.common.daos.GenericDAOHibernate; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; @@ -53,9 +56,12 @@ public class LabelTypeDAO extends GenericDAOHibernate implement try { LabelType result = findUniqueByName(labelType); return (result == null || result.getId().equals(labelType.getId())); - } catch (Exception e) { - e.printStackTrace(); + } catch (InstanceNotFoundException e) { + return true; + } catch (NonUniqueResultException e) { return false; + } catch (Exception e) { + throw new RuntimeException(e); } } @@ -65,23 +71,29 @@ public class LabelTypeDAO extends GenericDAOHibernate implement return findUniqueByName(labelType) != null; } catch (InstanceNotFoundException e) { return false; + } catch (NonUniqueResultException e) { + return true; } } private LabelType findUniqueByName(LabelType labelType) - throws InstanceNotFoundException { - List list = findByName(labelType); - if (list != null && list.size() > 1) { - throw new InstanceNotFoundException(labelType, LabelType.class - .getName()); - } - return (list != null && list.size() > 0) ? list.get(0) : null; + throws InstanceNotFoundException, NonUniqueResultException { + Validate.notNull(labelType); + + return findUniqueByName(labelType.getName()); } - @SuppressWarnings("unchecked") - private List findByName(LabelType labelType) { - return getSession().createCriteria(LabelType.class).add( - Restrictions.eq("name", labelType.getName())).list(); + @Override + public LabelType findUniqueByName(String name) + throws InstanceNotFoundException, NonUniqueResultException { + Criteria c = getSession().createCriteria(LabelType.class); + c.add(Restrictions.eq("name", name)); + LabelType labelType = (LabelType) c.uniqueResult(); + + if (labelType == null) { + throw new InstanceNotFoundException(null, "LabelType"); + } + return labelType; } }