From c0179bc2a92f4dfe20be63b6c2c93593f9258880 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Wed, 19 Aug 2009 18:35:22 +0200 Subject: [PATCH] ItEr22S08CUAltaCalendarioLaboralItEr21S10: Added new method findByParent to BaseCalendarDAO. --- .../calendars/daos/BaseCalendarDAO.java | 15 +++++++++ .../calendars/daos/IBaseCalendarDAO.java | 2 ++ .../business/common/daos/IGenericDAO.java | 1 + .../calendars/daos/BaseCalendarDAOTest.java | 32 +++++++++++++++++++ 4 files changed, 50 insertions(+) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/calendars/daos/BaseCalendarDAO.java b/navalplanner-business/src/main/java/org/navalplanner/business/calendars/daos/BaseCalendarDAO.java index bf22b0e3c..a8771a4fc 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/calendars/daos/BaseCalendarDAO.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/calendars/daos/BaseCalendarDAO.java @@ -1,7 +1,10 @@ package org.navalplanner.business.calendars.daos; +import java.util.ArrayList; import java.util.List; +import org.hibernate.Criteria; +import org.hibernate.criterion.Restrictions; import org.navalplanner.business.calendars.entities.BaseCalendar; import org.navalplanner.business.common.daos.GenericDAOHibernate; import org.springframework.beans.factory.config.BeanDefinition; @@ -23,4 +26,16 @@ public class BaseCalendarDAO extends GenericDAOHibernate return list(BaseCalendar.class); } + @Override + public List findByParent(BaseCalendar baseCalendar) { + if (baseCalendar == null) { + return new ArrayList(); + } + + Criteria c = getSession().createCriteria(BaseCalendar.class); + c.add(Restrictions.eq("parent", baseCalendar)); + + return (List) c.list(); + } + } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/calendars/daos/IBaseCalendarDAO.java b/navalplanner-business/src/main/java/org/navalplanner/business/calendars/daos/IBaseCalendarDAO.java index d0325fc55..b71c0743c 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/calendars/daos/IBaseCalendarDAO.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/calendars/daos/IBaseCalendarDAO.java @@ -9,4 +9,6 @@ public interface IBaseCalendarDAO extends IGenericDAO { List getBaseCalendars(); + List findByParent(BaseCalendar baseCalendar); + } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/common/daos/IGenericDAO.java b/navalplanner-business/src/main/java/org/navalplanner/business/common/daos/IGenericDAO.java index 31825b402..fb8425a49 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/common/daos/IGenericDAO.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/common/daos/IGenericDAO.java @@ -3,6 +3,7 @@ package org.navalplanner.business.common.daos; import java.io.Serializable; import java.util.List; +import org.navalplanner.business.calendars.entities.BaseCalendar; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; /** diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/calendars/daos/BaseCalendarDAOTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/calendars/daos/BaseCalendarDAOTest.java index d59a796e5..0d22a0c14 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/calendars/daos/BaseCalendarDAOTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/calendars/daos/BaseCalendarDAOTest.java @@ -10,6 +10,8 @@ import static org.junit.Assert.fail; import static org.navalplanner.business.BusinessGlobalNames.BUSINESS_SPRING_CONFIG_FILE; import static org.navalplanner.business.test.BusinessGlobalNames.BUSINESS_SPRING_CONFIG_TEST_FILE; +import java.util.List; + import org.hibernate.SessionFactory; import org.junit.Test; import org.junit.runner.RunWith; @@ -149,4 +151,34 @@ public class BaseCalendarDAOTest { baseCalendarDAO.find(newCalendar.getId()); } + @Test + public void findChildrens() { + BaseCalendar calendar = BaseCalendarTest.createBasicCalendar(); + baseCalendarDAO.save(calendar); + BaseCalendar derivedCalendar = calendar.newDerivedCalendar(); + baseCalendarDAO.save(derivedCalendar); + BaseCalendar derivedCalendar2 = calendar.newDerivedCalendar(); + baseCalendarDAO.save(derivedCalendar2); + + baseCalendarDAO.flush(); + session.getCurrentSession().evict(calendar); + session.getCurrentSession().evict(derivedCalendar); + session.getCurrentSession().evict(derivedCalendar2); + + calendar.dontPoseAsTransientObjectAnymore(); + derivedCalendar.dontPoseAsTransientObjectAnymore(); + derivedCalendar2.dontPoseAsTransientObjectAnymore(); + + List children = baseCalendarDAO.findByParent(calendar); + assertThat(children.size(), equalTo(2)); + assertTrue(children.get(0).getId().equals(derivedCalendar.getId()) + || children.get(0).getId().equals(derivedCalendar2.getId())); + + children = baseCalendarDAO.findByParent(derivedCalendar); + assertThat(children.size(), equalTo(0)); + + children = baseCalendarDAO.findByParent(derivedCalendar2); + assertThat(children.size(), equalTo(0)); + } + }