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");