From 770a1d5e7caee932ed00f9b0b7c39dd526383e0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Thu, 9 Jul 2009 17:23:33 +0200 Subject: [PATCH] ItEr16S12CreacionProxectoPlanificacion: Turning OrderElement many to one relationship to TaskElement into a many-to-one bidirectional relationship. --- .../business/orders/entities/OrderElement.java | 13 ++++++++++++- .../business/orders/entities/Orders.hbm.xml | 4 ++++ .../business/planner/entities/Tasks.hbm.xml | 6 +++--- .../planner/services/TaskElementServiceTest.java | 13 +++++++++++++ 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java index d342cef72..b977f7fe0 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java @@ -1,11 +1,13 @@ package org.navalplanner.business.orders.entities; +import java.util.Collections; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Set; import org.hibernate.validator.NotNull; +import org.navalplanner.business.planner.entities.TaskElement; public abstract class OrderElement { @@ -26,6 +28,8 @@ public abstract class OrderElement { private String description; + private Set taskElements = new HashSet(); + public abstract Integer getWorkHours(); public abstract List getHoursGroups(); @@ -122,8 +126,15 @@ public abstract class OrderElement { transientHoursGroups.add(hoursGroup); } } - return transientHoursGroups; } + public Set getTaskElements() { + return Collections.unmodifiableSet(taskElements); + } + + public boolean isScheduled() { + return !taskElements.isEmpty(); + } + } diff --git a/navalplanner-business/src/main/resources/org/navalplanner/business/orders/entities/Orders.hbm.xml b/navalplanner-business/src/main/resources/org/navalplanner/business/orders/entities/Orders.hbm.xml index 2b4bd99d6..a27071af8 100644 --- a/navalplanner-business/src/main/resources/org/navalplanner/business/orders/entities/Orders.hbm.xml +++ b/navalplanner-business/src/main/resources/org/navalplanner/business/orders/entities/Orders.hbm.xml @@ -31,6 +31,10 @@ + + + + diff --git a/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/Tasks.hbm.xml b/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/Tasks.hbm.xml index 12c6842b6..11d7f4439 100644 --- a/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/Tasks.hbm.xml +++ b/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/Tasks.hbm.xml @@ -3,15 +3,15 @@ - - + + - + diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/services/TaskElementServiceTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/services/TaskElementServiceTest.java index 928dbe480..ad5ae255b 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/services/TaskElementServiceTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/services/TaskElementServiceTest.java @@ -263,4 +263,17 @@ public class TaskElementServiceTest { assertThat(child2.getHoursGroup(), JUnitMatchers .either(equalTo(hours1)).or(equalTo(hours2))); } + + @Test + public void testInverseManyToOneRelationshipInOrderElement() { + Task task = createValidTask(); + taskElementService.save(task); + flushAndEvict(task); + sessionFactory.getCurrentSession().evict(task.getOrderElement()); + TaskElement fromDB = taskElementService.findById(task.getId()); + OrderElement orderElement = fromDB.getOrderElement(); + assertThat(orderElement.getTaskElements().size(), equalTo(1)); + assertThat(orderElement.getTaskElements().iterator().next(), + equalTo(fromDB)); + } }