ItEr29S16CUCreacionProxectoCategorizacionTraballoItEr10S11: Refactoring Order, now it is a subclass of OrderLineGroup.
This commit is contained in:
parent
8ce8917b31
commit
3ea299d416
7 changed files with 47 additions and 120 deletions
|
|
@ -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. <br />
|
||||
* @author Óscar González Fernández <ogonzalez@igalia.com>
|
||||
*/
|
||||
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<OrderElement> orderElements = new ArrayList<OrderElement>();
|
||||
|
||||
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<OrderElement> getOrderElements() {
|
||||
return new ArrayList<OrderElement>(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<OrderElement>(getChildren());
|
||||
}
|
||||
|
||||
public List<TaskElement> getAssociatedTasks() {
|
||||
ArrayList<TaskElement> result = new ArrayList<TaskElement>();
|
||||
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<OrderElement> getAllOrderElements() {
|
||||
List<OrderElement> result = new ArrayList<OrderElement>(
|
||||
this.orderElements);
|
||||
for (OrderElement orderElement : this.orderElements) {
|
||||
this
|
||||
.getChildren());
|
||||
for (OrderElement orderElement : this.getChildren()) {
|
||||
result.addAll(orderElement.getAllChildren());
|
||||
}
|
||||
return result;
|
||||
|
|
|
|||
|
|
@ -98,8 +98,12 @@ public abstract class OrderElement extends BaseEntity {
|
|||
|
||||
public abstract List<OrderElement> 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) {
|
||||
|
|
|
|||
|
|
@ -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<OrderElement> children = new ArrayList<OrderElement>();
|
||||
|
|
|
|||
|
|
@ -1,26 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
|
||||
<hibernate-mapping package="org.navalplanner.business.orders.entities">
|
||||
<class name="Order" table="order_table">
|
||||
<id name="id" access="property" type="long">
|
||||
<generator class="hilo" >
|
||||
<param name="max_lo">100</param>
|
||||
</generator>
|
||||
</id>
|
||||
<version name="version" access="property" type="long" />
|
||||
<property name="initDate" access="field"></property>
|
||||
<property name="endDate" access="field"></property>
|
||||
<property name="name" access="field"></property>
|
||||
<property name="description" access="field"></property>
|
||||
<property name="responsible" access="field"></property>
|
||||
<property name="customer" access="field"></property>
|
||||
<list name="orderElements" access="field" cascade="all">
|
||||
<key column="orderId" not-null="false"></key>
|
||||
<index column="positionInOrder"></index>
|
||||
<one-to-many class="OrderElement"/>
|
||||
</list>
|
||||
</class>
|
||||
|
||||
<class name="OrderElement" abstract="true">
|
||||
<id name="id" access="property" type="long">
|
||||
<generator class="hilo" >
|
||||
|
|
@ -64,6 +44,14 @@
|
|||
<key column="INDIRECT_ORDER_ELEMENT_ID" />
|
||||
<one-to-many class="org.navalplanner.business.advance.entities.IndirectAdvanceAssignment" />
|
||||
</set>
|
||||
|
||||
<joined-subclass name="Order" table="order_table">
|
||||
<key column="ORDERELEMENTID"></key>
|
||||
|
||||
<property name="responsible" access="field"></property>
|
||||
<property name="customer" access="field"></property>
|
||||
</joined-subclass>
|
||||
|
||||
</joined-subclass>
|
||||
|
||||
<joined-subclass name="OrderLine">
|
||||
|
|
|
|||
|
|
@ -105,6 +105,7 @@ public class AddAdvanceAssignmentsToOrderElementTest {
|
|||
order.setInitDate(CriterionSatisfactionDAOTest.year(2000));
|
||||
order.setName("name");
|
||||
order.setResponsible("responsible");
|
||||
order.setCode("code");
|
||||
return order;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -102,6 +102,7 @@ public class OrderModelTest {
|
|||
order.setInitDate(year(2000));
|
||||
order.setName("name");
|
||||
order.setResponsible("responsible");
|
||||
order.setCode("code");
|
||||
return order;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue