From a7aa2bed5cc6764bfd3060bbc0eec20c4d0f9f4c Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Thu, 23 Jul 2009 11:28:15 +0200 Subject: [PATCH] ItEr18S14CUAsignacionRecursosEspecificosAPlanificacion: Added findUniqueByNif method to Woker DAO. --- .../business/resources/daos/IWorkerDao.java | 18 +++++++++++++- .../daos/impl/WorkerDaoHibernate.java | 24 ++++++++++++++++++- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/IWorkerDao.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/IWorkerDao.java index 70da2a754..b55cb8c1e 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/IWorkerDao.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/IWorkerDao.java @@ -1,12 +1,28 @@ package org.navalplanner.business.resources.daos; import org.navalplanner.business.common.daos.IGenericDao; +import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.resources.entities.Worker; /** * DAO interface for the Worker entity. * * @author Fernando Bellas Permuy + * @author Manuel Rego Casasnovas * */ -public interface IWorkerDao extends IGenericDao {} +public interface IWorkerDao extends IGenericDao { + + /** + * Finds a {@link Worker} with the NIF param that should be unique. + * + * @param nif + * The NIF to search the {@link Worker} + * @return The {@link Worker} with this NIF + * @throws InstanceNotFoundException + * If there're more than one {@link Worker} with this NIF or + * there isn't any {@link Worker} with this NIF + */ + Worker findUniqueByNif(String nif) throws InstanceNotFoundException; + +} diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/impl/WorkerDaoHibernate.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/impl/WorkerDaoHibernate.java index 6831dfeb4..4d5c05a5e 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/impl/WorkerDaoHibernate.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/impl/WorkerDaoHibernate.java @@ -1,6 +1,11 @@ package org.navalplanner.business.resources.daos.impl; +import java.util.List; + +import org.hibernate.Criteria; +import org.hibernate.criterion.Restrictions; import org.navalplanner.business.common.daos.impl.GenericDaoHibernate; +import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.resources.daos.IWorkerDao; import org.navalplanner.business.resources.entities.Worker; import org.springframework.beans.factory.config.BeanDefinition; @@ -11,9 +16,26 @@ import org.springframework.stereotype.Repository; * Hibernate DAO for the Worker entity. * * @author Fernando Bellas Permuy + * @author Manuel Rego Casasnovas * */ @Repository @Scope(BeanDefinition.SCOPE_SINGLETON) public class WorkerDaoHibernate extends GenericDaoHibernate - implements IWorkerDao {} + implements IWorkerDao { + + @Override + public Worker findUniqueByNif(String nif) throws InstanceNotFoundException { + Criteria criteria = getSession().createCriteria(Worker.class); + criteria.add(Restrictions.eq("nif", nif).ignoreCase()); + + List list = criteria.list(); + + if (list.size() != 1) { + throw new InstanceNotFoundException(nif, Worker.class.getName()); + } + + return list.get(0); + } + +}