diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/Order.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/Order.java
index 054700377..0b8b6bb6a 100644
--- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/Order.java
+++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/Order.java
@@ -21,15 +21,10 @@
package org.navalplanner.business.orders.entities;
import java.util.ArrayList;
-import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
-import org.hibernate.validator.NotEmpty;
-import org.hibernate.validator.NotNull;
-import org.hibernate.validator.Valid;
-import org.navalplanner.business.common.BaseEntity;
import org.navalplanner.business.common.IValidable;
import org.navalplanner.business.common.exceptions.ValidationException;
import org.navalplanner.business.planner.entities.DayAssignment;
@@ -41,11 +36,14 @@ import org.navalplanner.business.resources.entities.Resource;
* It represents an {@link Order} with its related information.
* @author Óscar González Fernández
*/
-public class Order extends BaseEntity implements IOrderLineGroup, IValidable {
+public class Order extends OrderLineGroup implements IValidable {
public static Order create() {
Order order = new Order();
order.setNewObject(true);
+
+ OrderLineGroup.setupOrderLineGroup(order);
+
return order;
}
@@ -56,61 +54,11 @@ public class Order extends BaseEntity implements IOrderLineGroup, IValidable {
}
- private static Date copy(Date date) {
- return date != null ? new Date(date.getTime()) : date;
- }
-
- @NotEmpty
- private String name;
-
-
- @NotNull
- private Date initDate;
-
- private Date endDate;
-
- private String description;
-
private String responsible;
// TODO turn into a many to one relationship when Customer entity is defined
private String customer;
- @Valid
- private List orderElements = new ArrayList();
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public Date getInitDate() {
- return copy(initDate);
- }
-
- public void setInitDate(Date initDate) {
- this.initDate = initDate;
- }
-
- public Date getEndDate() {
- return copy(endDate);
- }
-
- public void setEndDate(Date endDate) {
- this.endDate = endDate;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
public String getResponsible() {
return responsible;
}
@@ -128,55 +76,23 @@ public class Order extends BaseEntity implements IOrderLineGroup, IValidable {
}
public boolean isEndDateBeforeStart() {
- return endDate != null && endDate.before(initDate);
- }
-
- public void add(OrderElement orderElement) {
- getOrderElementsManipulator().add(orderElement);
- }
-
- private OrderLineGroupManipulator getOrderElementsManipulator() {
- return OrderLineGroupManipulator.createManipulatorForOrder(orderElements);
+ return getEndDate() != null && getEndDate().before(getInitDate());
}
public List getOrderElements() {
- return new ArrayList(orderElements);
- }
-
- public void remove(OrderElement orderElement) {
- getOrderElementsManipulator().remove(orderElement);
- }
-
- public void replace(OrderElement oldOrderElement, OrderElement orderElement) {
- getOrderElementsManipulator().replace(oldOrderElement, orderElement);
- }
-
- @Override
- public void up(OrderElement orderElement) {
- getOrderElementsManipulator().up(orderElement);
- }
-
- @Override
- public void down(OrderElement orderElement) {
- getOrderElementsManipulator().down(orderElement);
- }
-
- @Override
- public void add(int position, OrderElement orderElement) {
- getOrderElementsManipulator().add(position, orderElement);
-
+ return new ArrayList(getChildren());
}
public List getAssociatedTasks() {
ArrayList result = new ArrayList();
- for (OrderElement orderElement : orderElements) {
+ for (OrderElement orderElement : getChildren()) {
result.addAll(orderElement.getTaskElements());
}
return result;
}
public boolean isSomeTaskElementScheduled() {
- for (OrderElement orderElement : orderElements) {
+ for (OrderElement orderElement : getChildren()) {
if (orderElement.isScheduled())
return true;
}
@@ -213,8 +129,9 @@ public class Order extends BaseEntity implements IOrderLineGroup, IValidable {
private List getAllOrderElements() {
List result = new ArrayList(
- this.orderElements);
- for (OrderElement orderElement : this.orderElements) {
+ this
+ .getChildren());
+ for (OrderElement orderElement : this.getChildren()) {
result.addAll(orderElement.getAllChildren());
}
return result;
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 c598413d8..d9ed8a08e 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
@@ -98,8 +98,12 @@ public abstract class OrderElement extends BaseEntity {
public abstract List getChildren();
+ private static Date copy(Date date) {
+ return date != null ? new Date(date.getTime()) : date;
+ }
+
public Date getInitDate() {
- return initDate;
+ return copy(initDate);
}
public void setInitDate(Date initDate) {
@@ -107,7 +111,7 @@ public abstract class OrderElement extends BaseEntity {
}
public Date getEndDate() {
- return endDate;
+ return copy(endDate);
}
public void setEndDate(Date endDate) {
diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java
index e3557ca3e..2cde7fbe0 100644
--- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java
+++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java
@@ -49,15 +49,18 @@ public class OrderLineGroup extends OrderElement implements IOrderLineGroup {
OrderLineGroup result = new OrderLineGroup();
result.setNewObject(true);
+ setupOrderLineGroup(result);
+
+ return result;
+ }
+
+ protected static void setupOrderLineGroup(OrderLineGroup result) {
IndirectAdvanceAssignment indirectAdvanceAssignment = IndirectAdvanceAssignment
.create(true);
AdvanceType advanceType = PredefinedAdvancedTypes.CHILDREN.getType();
- indirectAdvanceAssignment
- .setAdvanceType(advanceType);
+ indirectAdvanceAssignment.setAdvanceType(advanceType);
indirectAdvanceAssignment.setOrderElement(result);
result.addIndirectAdvanceAssignment(indirectAdvanceAssignment);
-
- return result;
}
private List children = new ArrayList();
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 7af996c5e..49775343e 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
@@ -1,26 +1,6 @@
-
-
-
- 100
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -64,6 +44,14 @@
+
+
+
+
+
+
+
+
diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/orders/entities/AddAdvanceAssignmentsToOrderElementTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/orders/entities/AddAdvanceAssignmentsToOrderElementTest.java
index b042699d1..d6c16e2b5 100644
--- a/navalplanner-business/src/test/java/org/navalplanner/business/test/orders/entities/AddAdvanceAssignmentsToOrderElementTest.java
+++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/orders/entities/AddAdvanceAssignmentsToOrderElementTest.java
@@ -105,6 +105,7 @@ public class AddAdvanceAssignmentsToOrderElementTest {
order.setInitDate(CriterionSatisfactionDAOTest.year(2000));
order.setName("name");
order.setResponsible("responsible");
+ order.setCode("code");
return order;
}
diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/daos/TaskElementDAOTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/daos/TaskElementDAOTest.java
index 77439f947..30552f4b1 100644
--- a/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/daos/TaskElementDAOTest.java
+++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/daos/TaskElementDAOTest.java
@@ -32,9 +32,13 @@ import static org.navalplanner.business.test.BusinessGlobalNames.BUSINESS_SPRING
import java.util.Date;
import java.util.List;
+import javax.annotation.Resource;
+
import org.hibernate.SessionFactory;
+import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.navalplanner.business.IDataBootstrap;
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
import org.navalplanner.business.common.exceptions.ValidationException;
import org.navalplanner.business.orders.daos.IOrderDAO;
@@ -66,6 +70,14 @@ import org.springframework.transaction.annotation.Transactional;
@Transactional
public class TaskElementDAOTest {
+ @Resource
+ private IDataBootstrap defaultAdvanceTypesBootstrapListener;
+
+ @Before
+ public void loadRequiredaData() {
+ defaultAdvanceTypesBootstrapListener.loadRequiredData();
+ }
+
@Autowired
private ITaskElementDAO taskElementDAO;
@@ -94,6 +106,7 @@ public class TaskElementDAOTest {
Order order = Order.create();
order.setName("bla");
order.setInitDate(new Date());
+ order.setCode("code");
order.add(orderLine);
try {
order.checkValid();
diff --git a/navalplanner-webapp/src/test/java/org/navalplanner/web/orders/OrderModelTest.java b/navalplanner-webapp/src/test/java/org/navalplanner/web/orders/OrderModelTest.java
index 570b1210c..e2584ff24 100644
--- a/navalplanner-webapp/src/test/java/org/navalplanner/web/orders/OrderModelTest.java
+++ b/navalplanner-webapp/src/test/java/org/navalplanner/web/orders/OrderModelTest.java
@@ -102,6 +102,7 @@ public class OrderModelTest {
order.setInitDate(year(2000));
order.setName("name");
order.setResponsible("responsible");
+ order.setCode("code");
return order;
}