diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/ResourceCalendar.java b/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/ResourceCalendar.java index abd74eded..e3daefe1c 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/ResourceCalendar.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/ResourceCalendar.java @@ -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; + } + } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Resource.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Resource.java index 690b742e2..51fb106c6 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Resource.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Resource.java @@ -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() { diff --git a/navalplanner-business/src/main/resources/org/navalplanner/business/calendars/entities/Calendars.hbm.xml b/navalplanner-business/src/main/resources/org/navalplanner/business/calendars/entities/Calendars.hbm.xml index 0b11c901d..6fbaad8f1 100644 --- a/navalplanner-business/src/main/resources/org/navalplanner/business/calendars/entities/Calendars.hbm.xml +++ b/navalplanner-business/src/main/resources/org/navalplanner/business/calendars/entities/Calendars.hbm.xml @@ -34,6 +34,9 @@ + diff --git a/navalplanner-business/src/main/resources/org/navalplanner/business/resources/entities/Resources.hbm.xml b/navalplanner-business/src/main/resources/org/navalplanner/business/resources/entities/Resources.hbm.xml index 0e26ad750..4681319ab 100644 --- a/navalplanner-business/src/main/resources/org/navalplanner/business/resources/entities/Resources.hbm.xml +++ b/navalplanner-business/src/main/resources/org/navalplanner/business/resources/entities/Resources.hbm.xml @@ -24,7 +24,7 @@ + column="BASE_CALENDAR_ID" unique="true" /> 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 f97d687b3..efb05d282 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 @@ -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)); diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/daos/ResourceDAOTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/daos/ResourceDAOTest.java index 8c0db696d..5d0b180b3 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/daos/ResourceDAOTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/daos/ResourceDAOTest.java @@ -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");