ItEr16S12CreacionProxectoPlanificacion: Turning OrderElement many to one relationship to TaskElement into a many-to-one bidirectional relationship.

This commit is contained in:
Óscar González Fernández 2009-07-09 17:23:33 +02:00 committed by Javier Moran Rua
parent d9d820ac3c
commit 770a1d5e7c
4 changed files with 32 additions and 4 deletions

View file

@ -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<TaskElement> taskElements = new HashSet<TaskElement>();
public abstract Integer getWorkHours();
public abstract List<HoursGroup> getHoursGroups();
@ -122,8 +126,15 @@ public abstract class OrderElement {
transientHoursGroups.add(hoursGroup);
}
}
return transientHoursGroups;
}
public Set<TaskElement> getTaskElements() {
return Collections.unmodifiableSet(taskElements);
}
public boolean isScheduled() {
return !taskElements.isEmpty();
}
}

View file

@ -31,6 +31,10 @@
<property name="mandatoryInit" access="field" />
<property name="mandatoryEnd" access="field" />
<property name="description" access="field" />
<set name="taskElements" access="field">
<key column="ORDER_ELEMENT_ID"/>
<one-to-many class="org.navalplanner.business.planner.entities.TaskElement"></one-to-many>
</set>
<joined-subclass name="OrderLineGroup">
<key column="ORDERELEMENTID"></key>

View file

@ -3,15 +3,15 @@
<hibernate-mapping package="org.navalplanner.business.planner.entities"
default-access="field">
<class name="TaskElement">
<id name="id">
<generator class="native"></generator>
<id name="id" column="id" type="long">
<generator class="native" />
</id>
<version name="version" type="long"></version>
<property name="startDate" type="timestamp" />
<property name="endDate" type="timestamp" />
<many-to-one name="orderElement" cascade="none"/>
<many-to-one name="orderElement" cascade="none" column="ORDER_ELEMENT_ID"/>
<set name="dependenciesWithThisOrigin">
<key column="ORIGIN"></key>

View file

@ -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));
}
}