ItEr24S10CUAsignacionCalendarioLaboralRecursoItEr23S13: Modified BaseCalendarDAO to ignore ResourceCalendar instances.

This commit is contained in:
Manuel Rego Casasnovas 2009-09-02 11:49:45 +02:00 committed by Óscar González Fernández
parent 307fc4de17
commit 92d42b5b85
4 changed files with 67 additions and 5 deletions

View file

@ -1,11 +1,13 @@
package org.navalplanner.business.calendars.daos;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;
import org.navalplanner.business.calendars.entities.BaseCalendar;
import org.navalplanner.business.calendars.entities.ResourceCalendar;
import org.navalplanner.business.common.daos.GenericDAOHibernate;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.Scope;
@ -23,7 +25,19 @@ public class BaseCalendarDAO extends GenericDAOHibernate<BaseCalendar, Long>
@Override
public List<BaseCalendar> getBaseCalendars() {
return list(BaseCalendar.class);
List<BaseCalendar> list = list(BaseCalendar.class);
removeResourceCalendarInstances(list);
return list;
}
private void removeResourceCalendarInstances(List<BaseCalendar> list) {
for (Iterator<BaseCalendar> iterator = list.iterator(); iterator
.hasNext();) {
BaseCalendar baseCalendar = iterator.next();
if (baseCalendar instanceof ResourceCalendar) {
iterator.remove();
}
}
}
@Override
@ -36,7 +50,9 @@ public class BaseCalendarDAO extends GenericDAOHibernate<BaseCalendar, Long>
.createCriteria("calendarDataVersions", "v");
c.add(Restrictions.eq("v.parent", baseCalendar));
return (List<BaseCalendar>) c.list();
List<BaseCalendar> list = (List<BaseCalendar>) c.list();
removeResourceCalendarInstances(list);
return list;
}
@Override
@ -48,7 +64,9 @@ public class BaseCalendarDAO extends GenericDAOHibernate<BaseCalendar, Long>
Criteria c = getSession().createCriteria(BaseCalendar.class);
c.add(Restrictions.eq("name", baseCalendar.getName()));
return (List<BaseCalendar>) c.list();
List<BaseCalendar> list = (List<BaseCalendar>) c.list();
removeResourceCalendarInstances(list);
return list;
}
}

View file

@ -28,9 +28,8 @@ public class BaseCalendar extends BaseEntity {
private static final Integer DEFAULT_VALUE = 0;
public static BaseCalendar create() {
BaseCalendar baseCalendar = new BaseCalendar();
BaseCalendar baseCalendar = new BaseCalendar(CalendarData.create());
baseCalendar.setNewObject(true);
baseCalendar.calendarDataVersions.add(CalendarData.create());
return baseCalendar;
}
@ -51,6 +50,10 @@ public class BaseCalendar extends BaseEntity {
public BaseCalendar() {
}
protected BaseCalendar(CalendarData calendarData) {
calendarDataVersions.add(calendarData);
}
public void setName(String name) {
this.name = name;
}

View file

@ -9,4 +9,21 @@ import org.navalplanner.business.resources.entities.Resource;
*/
public class ResourceCalendar extends BaseCalendar {
public static ResourceCalendar create() {
ResourceCalendar resourceCalendar = new ResourceCalendar(CalendarData
.create());
resourceCalendar.setNewObject(true);
return resourceCalendar;
}
/**
* Constructor for hibernate. Do not use!
*/
public ResourceCalendar() {
}
private ResourceCalendar(CalendarData calendarData) {
super(calendarData);
}
}

View file

@ -1,6 +1,7 @@
package org.navalplanner.business.test.calendars.daos;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.not;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
@ -18,6 +19,7 @@ import org.junit.runner.RunWith;
import org.navalplanner.business.calendars.daos.BaseCalendarDAO;
import org.navalplanner.business.calendars.daos.IBaseCalendarDAO;
import org.navalplanner.business.calendars.entities.BaseCalendar;
import org.navalplanner.business.calendars.entities.ResourceCalendar;
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
import org.navalplanner.business.test.calendars.entities.BaseCalendarTest;
import org.springframework.beans.factory.annotation.Autowired;
@ -275,4 +277,26 @@ public class BaseCalendarDAOTest {
assertThat(list.get(0).getId(), equalTo(calendar.getId()));
}
@Test
public void getBaseCalendarsAndNotResourceCalendars() {
BaseCalendar calendar1 = BaseCalendarTest.createBasicCalendar();
calendar1.setName("Test1");
BaseCalendar calendar2 = BaseCalendarTest.createBasicCalendar();
calendar1.setName("Test2");
ResourceCalendar resourceCalendar = ResourceCalendar.create();
resourceCalendar.setName("testResourceCalendar");
BaseCalendarTest.setHoursForAllDays(resourceCalendar, 8);
baseCalendarDAO.save(calendar1);
baseCalendarDAO.save(calendar2);
baseCalendarDAO.save(resourceCalendar);
baseCalendarDAO.flush();
List<BaseCalendar> baseCalendars = baseCalendarDAO.getBaseCalendars();
assertThat(baseCalendars.size(), equalTo(2));
assertThat(baseCalendars.get(0).getId(), not(resourceCalendar.getId()));
assertThat(baseCalendars.get(1).getId(), not(resourceCalendar.getId()));
}
}