ItEr22S08CUAltaCalendarioLaboralItEr21S10: Added new method findByParent to BaseCalendarDAO.

This commit is contained in:
Manuel Rego Casasnovas 2009-08-19 18:35:22 +02:00 committed by Óscar González Fernández
parent e86894d68d
commit c0179bc2a9
4 changed files with 50 additions and 0 deletions

View file

@ -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<BaseCalendar, Long>
return list(BaseCalendar.class);
}
@Override
public List<BaseCalendar> findByParent(BaseCalendar baseCalendar) {
if (baseCalendar == null) {
return new ArrayList<BaseCalendar>();
}
Criteria c = getSession().createCriteria(BaseCalendar.class);
c.add(Restrictions.eq("parent", baseCalendar));
return (List<BaseCalendar>) c.list();
}
}

View file

@ -9,4 +9,6 @@ public interface IBaseCalendarDAO extends IGenericDAO<BaseCalendar, Long> {
List<BaseCalendar> getBaseCalendars();
List<BaseCalendar> findByParent(BaseCalendar baseCalendar);
}

View file

@ -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;
/**

View file

@ -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<BaseCalendar> 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));
}
}