ItEr41S16ImplantacionAplicacionItEr40S21: [Bug #53] Fixed mapping between resources and calendars.

This commit is contained in:
Manuel Rego Casasnovas 2009-12-29 14:08:34 +01:00 committed by Javier Moran Rua
parent abe94db641
commit d1bddfa6a2
6 changed files with 31 additions and 4 deletions

View file

@ -21,6 +21,7 @@
package org.navalplanner.business.calendars.entities;
import org.hibernate.validator.AssertTrue;
import org.hibernate.validator.NotNull;
import org.joda.time.LocalDate;
import org.navalplanner.business.resources.entities.Resource;
@ -31,6 +32,8 @@ import org.navalplanner.business.resources.entities.Resource;
*/
public class ResourceCalendar extends BaseCalendar {
private Resource resource;
private Integer capacity = 1;
public Integer getCapacity() {
@ -78,4 +81,13 @@ public class ResourceCalendar extends BaseCalendar {
return (capacity >= 1);
}
@NotNull(message = "resource not specified")
public Resource getResource() {
return resource;
}
public void setResource(Resource resource) {
this.resource = resource;
}
}

View file

@ -647,6 +647,9 @@ public abstract class Resource extends BaseEntity{
public void setCalendar(ResourceCalendar calendar) {
this.calendar = calendar;
if (calendar != null) {
calendar.setResource(this);
}
}
public ResourceCalendar getCalendar() {

View file

@ -34,6 +34,9 @@
<joined-subclass name="ResourceCalendar">
<key column="BASE_CALENDAR_ID" />
<property name="capacity" not-null="true" />
<one-to-one name="resource"
class="org.navalplanner.business.resources.entities.Resource"
access="field" property-ref="calendar" />
</joined-subclass>
</class>

View file

@ -24,7 +24,7 @@
<many-to-one name="calendar" access="field" cascade="all"
class="org.navalplanner.business.calendars.entities.ResourceCalendar"
unique="true" />
column="BASE_CALENDAR_ID" unique="true" />
<set name="resourcesCostCategoryAssignments" inverse="true" cascade="all-delete-orphan">
<key column="RESOURCE_ID"/>

View file

@ -47,7 +47,10 @@ import org.navalplanner.business.calendars.entities.CalendarExceptionType;
import org.navalplanner.business.calendars.entities.ResourceCalendar;
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
import org.navalplanner.business.common.exceptions.ValidationException;
import org.navalplanner.business.resources.daos.IResourceDAO;
import org.navalplanner.business.resources.entities.Worker;
import org.navalplanner.business.test.calendars.entities.BaseCalendarTest;
import org.navalplanner.business.test.resources.daos.ResourceDAOTest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.test.context.ContextConfiguration;
@ -74,6 +77,9 @@ public class BaseCalendarDAOTest {
@Autowired
private SessionFactory session;
@Autowired
private IResourceDAO resourceDAO;
@Resource
private IDataBootstrap calendarBootstrap;
@ -292,14 +298,17 @@ public class BaseCalendarDAOTest {
BaseCalendar calendar2 = BaseCalendarTest.createBasicCalendar();
calendar1.setName("Test2");
Worker worker = ResourceDAOTest.givenValidWorker();
ResourceCalendar resourceCalendar = ResourceCalendar.create();
resourceCalendar.setName("testResourceCalendar");
BaseCalendarTest.setHoursForAllDays(resourceCalendar, 8);
worker.setCalendar(resourceCalendar);
baseCalendarDAO.save(calendar1);
baseCalendarDAO.save(calendar2);
baseCalendarDAO.save(resourceCalendar);
resourceDAO.save(worker);
baseCalendarDAO.flush();
resourceDAO.flush();
baseCalendars = baseCalendarDAO.getBaseCalendars();
assertThat(baseCalendars.size(), equalTo(previous + 2));

View file

@ -70,7 +70,7 @@ public class ResourceDAOTest {
Resource foundResource = resourceDAO.find(resource.getId());
assertNotSame(resource, foundResource);
assertNotNull(foundResource.getCalendar().getId());
assertNotNull(foundResource.getCalendar());
assertThat(foundResource.getCalendar().getId(),
equalTo(resourceCalendar.getId()));
}
@ -81,7 +81,7 @@ public class ResourceDAOTest {
return resourceCalendar;
}
private Worker givenValidWorker() {
public static Worker givenValidWorker() {
Worker worker = Worker.create();
worker.setFirstName("First name");
worker.setSurname("Surname");