From 3ea299d41613bc4c052ec378189bbf9bb346f8f3 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Thu, 8 Oct 2009 12:20:24 +0200 Subject: [PATCH] ItEr29S16CUCreacionProxectoCategorizacionTraballoItEr10S11: Refactoring Order, now it is a subclass of OrderLineGroup. --- .../business/orders/entities/Order.java | 105 ++---------------- .../orders/entities/OrderElement.java | 8 +- .../orders/entities/OrderLineGroup.java | 11 +- .../business/orders/entities/Orders.hbm.xml | 28 ++--- ...dAdvanceAssignmentsToOrderElementTest.java | 1 + .../test/planner/daos/TaskElementDAOTest.java | 13 +++ .../web/orders/OrderModelTest.java | 1 + 7 files changed, 47 insertions(+), 120 deletions(-) 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; }