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);
+ }
+
+}