diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/ActivityWork.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/HoursGroup.java
similarity index 91%
rename from navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/ActivityWork.java
rename to navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/HoursGroup.java
index 0ead19ab8..654998c7c 100644
--- a/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/ActivityWork.java
+++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/HoursGroup.java
@@ -1,8 +1,8 @@
-package org.navalplanner.business.workorders.entities;
+package org.navalplanner.business.orders.entities;
import java.math.BigDecimal;
-public class ActivityWork {
+public class HoursGroup {
private Long id;
diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/IOrderLineGroup.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/IOrderLineGroup.java
new file mode 100644
index 000000000..31278c51c
--- /dev/null
+++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/IOrderLineGroup.java
@@ -0,0 +1,23 @@
+package org.navalplanner.business.orders.entities;
+
+/**
+ * Container of {@link OrderElement}.
+ *
+ * @author Óscar González Fernández
+ */
+public interface IOrderLineGroup {
+
+ public void add(OrderElement orderElement);
+
+ public void remove(OrderElement orderElement);
+
+ public void replace(OrderElement oldOrderElement,
+ OrderElement newOrderElement);
+
+ public void up(OrderElement orderElement);
+
+ public void down(OrderElement orderElement);
+
+ public void add(int position, OrderElement orderElement);
+
+}
\ No newline at end of file
diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/ProjectWork.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/Order.java
similarity index 61%
rename from navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/ProjectWork.java
rename to navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/Order.java
index f4b132280..7ee231a84 100644
--- a/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/ProjectWork.java
+++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/Order.java
@@ -1,4 +1,4 @@
-package org.navalplanner.business.workorders.entities;
+package org.navalplanner.business.orders.entities;
import java.util.ArrayList;
import java.util.Date;
@@ -8,10 +8,11 @@ import org.hibernate.validator.NotEmpty;
import org.hibernate.validator.NotNull;
/**
- * It represents a project with its related information.
+ * It represents an {@link Order} with its related information.
+ *
* @author Óscar González Fernández
*/
-public class ProjectWork implements ITaskWorkContainer {
+public class Order implements IOrderLineGroup {
private static Date copy(Date date) {
return date != null ? new Date(date.getTime()) : date;
@@ -36,7 +37,7 @@ public class ProjectWork implements ITaskWorkContainer {
// TODO turn into a many to one relationship when Customer entity is defined
private String customer;
- private List taskWorks = new ArrayList();
+ private List orderElements = new ArrayList();
public Long getId() {
return id;
@@ -98,39 +99,39 @@ public class ProjectWork implements ITaskWorkContainer {
return endDate != null && endDate.before(initDate);
}
- public void add(TaskWork task) {
- getTasksManipulator().add(task);
+ public void add(OrderElement orderElement) {
+ getOrderElementsManipulator().add(orderElement);
}
- private TaskWorkListManipulator getTasksManipulator() {
- return new TaskWorkListManipulator(taskWorks);
+ private OrderLineGroupManipulator getOrderElementsManipulator() {
+ return new OrderLineGroupManipulator(orderElements);
}
- public List getTaskWorks() {
- return new ArrayList(taskWorks);
+ public List getOrderElements() {
+ return new ArrayList(orderElements);
}
- public void remove(TaskWork task) {
- getTasksManipulator().remove(task);
+ public void remove(OrderElement orderElement) {
+ getOrderElementsManipulator().remove(orderElement);
}
- public void replace(TaskWork oldTask, TaskWork newTask) {
- getTasksManipulator().replace(oldTask, newTask);
+ public void replace(OrderElement oldOrderElement, OrderElement orderElement) {
+ getOrderElementsManipulator().replace(oldOrderElement, orderElement);
}
@Override
- public void up(TaskWork task) {
- getTasksManipulator().up(task);
+ public void up(OrderElement orderElement) {
+ getOrderElementsManipulator().up(orderElement);
}
@Override
- public void down(TaskWork task) {
- getTasksManipulator().down(task);
+ public void down(OrderElement orderElement) {
+ getOrderElementsManipulator().down(orderElement);
}
@Override
- public void add(int position, TaskWork task) {
- getTasksManipulator().add(position, task);
+ public void add(int position, OrderElement orderElement) {
+ getOrderElementsManipulator().add(position, orderElement);
}
diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/TaskWork.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java
similarity index 84%
rename from navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/TaskWork.java
rename to navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java
index dc3707c89..c66c5ed03 100644
--- a/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/TaskWork.java
+++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java
@@ -1,11 +1,11 @@
-package org.navalplanner.business.workorders.entities;
+package org.navalplanner.business.orders.entities;
import java.util.Date;
import java.util.List;
import org.hibernate.validator.NotNull;
-public abstract class TaskWork {
+public abstract class OrderElement {
private long id;
@NotNull
@@ -23,7 +23,7 @@ public abstract class TaskWork {
public abstract Integer getWorkHours();
- public abstract List getActivities();
+ public abstract List getHoursGroups();
public long getId() {
return id;
@@ -46,7 +46,7 @@ public abstract class TaskWork {
public abstract boolean isLeaf();
- public abstract List getChildren();
+ public abstract List getChildren();
public Date getInitDate() {
return initDate;
@@ -88,8 +88,8 @@ public abstract class TaskWork {
return description;
}
- public abstract TaskWorkContainer asContainer();
+ public abstract OrderLineGroup asContainer();
- public abstract void forceLoadActivities();
+ public abstract void forceLoadHourGroups();
}
diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLine.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLine.java
new file mode 100644
index 000000000..c5fd170e1
--- /dev/null
+++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLine.java
@@ -0,0 +1,97 @@
+package org.navalplanner.business.orders.entities;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+public class OrderLine extends OrderElement {
+
+ private Boolean fixedHours = false;
+
+ private Set hoursGroups = new HashSet();
+
+ @Override
+ public Integer getWorkHours() {
+ int result = 0;
+ List hoursGroups = getHoursGroups();
+ for (HoursGroup hoursGroup : hoursGroups) {
+ Integer workingHours = hoursGroup.getWorkingHours();
+ if (workingHours != null) {
+ result += workingHours;
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public List getChildren() {
+ return new ArrayList();
+ }
+
+ @Override
+ public boolean isLeaf() {
+ return true;
+ }
+
+ @Override
+ public OrderLineGroup asContainer() {
+ OrderLineGroup result = new OrderLineGroup();
+ result.setName(getName());
+ result.setInitDate(getInitDate());
+ result.setEndDate(getEndDate());
+ // FIXME
+ // result.setHoursGroups(getHoursGroups());
+ return result;
+ }
+
+ public void setWorkHours(Integer workingHours) {
+ List hoursGroups = getHoursGroups();
+
+ // FIXME For the moment we have just one HoursGroup for each OrderLine
+ if (hoursGroups.isEmpty()) {
+ HoursGroup hourGroup = new HoursGroup();
+ hourGroup.setWorkingHours(workingHours);
+
+ hoursGroups.add(hourGroup);
+ } else {
+ HoursGroup hourGroup = hoursGroups.get(0);
+ hourGroup.setWorkingHours(workingHours);
+ }
+
+ setHoursGroups(hoursGroups);
+ }
+
+ public void setHoursGroups(List hoursGroups) {
+ this.hoursGroups = new HashSet(hoursGroups);
+ }
+
+ public void addHoursGroup(HoursGroup hoursGroup) {
+ hoursGroups.add(hoursGroup);
+ }
+
+ public void deleteHoursGroup(HoursGroup hoursGroup) {
+ hoursGroups.remove(hoursGroup);
+ }
+
+ @Override
+ public List getHoursGroups() {
+ return new ArrayList(hoursGroups);
+ }
+
+ @Override
+ public void forceLoadHourGroups() {
+ for (HoursGroup hoursGroup : hoursGroups) {
+ hoursGroup.getWorkingHours();
+ }
+ }
+
+ public void setFixedHours(Boolean fixedHours) {
+ this.fixedHours = fixedHours;
+ }
+
+ public Boolean isFixedHours() {
+ return fixedHours;
+ }
+
+}
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
new file mode 100644
index 000000000..4ac0bb0bf
--- /dev/null
+++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java
@@ -0,0 +1,85 @@
+package org.navalplanner.business.orders.entities;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class OrderLineGroup extends OrderElement implements IOrderLineGroup {
+
+ private List children = new ArrayList();
+
+ @Override
+ public List getChildren() {
+ return new ArrayList(children);
+ }
+
+ @Override
+ public boolean isLeaf() {
+ return false;
+ }
+
+ @Override
+ public void remove(OrderElement child) {
+ getManipulator().remove(child);
+ }
+
+ @Override
+ public void replace(OrderElement oldOrderElement, OrderElement orderElement) {
+ getManipulator().replace(oldOrderElement, orderElement);
+ }
+
+ @Override
+ public void add(OrderElement orderElement) {
+ getManipulator().add(orderElement);
+ }
+
+ @Override
+ public void up(OrderElement orderElement) {
+ getManipulator().up(orderElement);
+ }
+
+ private OrderLineGroupManipulator getManipulator() {
+ return new OrderLineGroupManipulator(children);
+ }
+
+ @Override
+ public OrderLineGroup asContainer() {
+ return this;
+ }
+
+ @Override
+ public void down(OrderElement orderElement) {
+ getManipulator().down(orderElement);
+ }
+
+ @Override
+ public void add(int position, OrderElement orderElement) {
+ children.add(position, orderElement);
+ }
+
+ @Override
+ public Integer getWorkHours() {
+ int result = 0;
+ List children = getChildren();
+ for (OrderElement orderElement : children) {
+ result += orderElement.getWorkHours();
+ }
+ return result;
+ }
+
+ @Override
+ public void forceLoadHourGroups() {
+ for (OrderElement orderElement : children) {
+ orderElement.forceLoadHourGroups();
+ }
+ }
+
+ @Override
+ public List getHoursGroups() {
+ List hoursGroups = new ArrayList();
+ for (OrderElement orderElement : children) {
+ hoursGroups.addAll(orderElement.getHoursGroups());
+ }
+ return hoursGroups;
+ }
+
+}
diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroupManipulator.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroupManipulator.java
new file mode 100644
index 000000000..e58c747e1
--- /dev/null
+++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroupManipulator.java
@@ -0,0 +1,57 @@
+package org.navalplanner.business.orders.entities;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Implementation of {@link OrderElement}.
+ * @author Óscar González Fernández
+ */
+public class OrderLineGroupManipulator implements IOrderLineGroup {
+
+ private final List orderElements;
+
+ public OrderLineGroupManipulator(List orderElements) {
+ this.orderElements = orderElements;
+
+ }
+
+ @Override
+ public void add(OrderElement orderElement) {
+ orderElements.add(orderElement);
+ }
+
+ @Override
+ public void remove(OrderElement orderElement) {
+ orderElements.remove(orderElement);
+ }
+
+ @Override
+ public void replace(OrderElement oldOrderElement, OrderElement orderElement) {
+ Collections.replaceAll(orderElements, oldOrderElement, orderElement);
+ }
+
+ @Override
+ public void up(OrderElement orderElement) {
+ int position = orderElements.indexOf(orderElement);
+ if (position < orderElements.size() - 1) {
+ orderElements.remove(position);
+ orderElements.add(position + 1, orderElement);
+ }
+ }
+
+ @Override
+ public void down(OrderElement orderElement) {
+ int position = orderElements.indexOf(orderElement);
+ if (position > 0) {
+ orderElements.remove(position);
+ orderElements.add(position - 1, orderElement);
+ }
+ }
+
+ @Override
+ public void add(int position, OrderElement orderElement) {
+ orderElements.add(position, orderElement);
+ }
+
+}
diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/services/IOrderService.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/services/IOrderService.java
new file mode 100644
index 000000000..ff3dba850
--- /dev/null
+++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/services/IOrderService.java
@@ -0,0 +1,28 @@
+package org.navalplanner.business.orders.services;
+
+import java.util.List;
+
+import org.navalplanner.business.common.OnTransaction;
+import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
+import org.navalplanner.business.common.exceptions.ValidationException;
+import org.navalplanner.business.orders.entities.Order;
+
+/**
+ * Management of {@link Order}
+ * @author Óscar González Fernández
+ */
+public interface IOrderService {
+
+ void save(Order order) throws ValidationException;
+
+ boolean exists(Order HoursGroup);
+
+ List getOrders();
+
+ void remove(Order HoursGroup) throws InstanceNotFoundException;
+
+ Order find(Long workerId) throws InstanceNotFoundException;
+
+ public T onTransaction(OnTransaction onTransaction);
+
+}
diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/workorders/services/ProjectWorkService.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/services/OrderService.java
similarity index 61%
rename from navalplanner-business/src/main/java/org/navalplanner/business/workorders/services/ProjectWorkService.java
rename to navalplanner-business/src/main/java/org/navalplanner/business/orders/services/OrderService.java
index 3706ab39a..c01acb278 100644
--- a/navalplanner-business/src/main/java/org/navalplanner/business/workorders/services/ProjectWorkService.java
+++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/services/OrderService.java
@@ -1,4 +1,4 @@
-package org.navalplanner.business.workorders.services;
+package org.navalplanner.business.orders.services;
import java.util.List;
@@ -8,7 +8,7 @@ import org.navalplanner.business.common.OnTransaction;
import org.navalplanner.business.common.daos.impl.GenericDaoHibernate;
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
import org.navalplanner.business.common.exceptions.ValidationException;
-import org.navalplanner.business.workorders.entities.ProjectWork;
+import org.navalplanner.business.orders.entities.Order;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.Scope;
@@ -16,23 +16,23 @@ import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
- * Default implementation of {@link IProjectWorkService}
+ * Default implementation of {@link IOrderService}
* @author Óscar González Fernández
*/
@Component
@Scope(BeanDefinition.SCOPE_SINGLETON)
@Transactional
-public class ProjectWorkService implements IProjectWorkService {
+public class OrderService implements IOrderService {
@Autowired
private SessionFactory sessionFactory;
/*
- * Because the dao for project work doesn't have special needs, it's not
+ * Because the dao for orderwork doesn't have special needs, it's not
* created an interface for defining its contract
*/
- private GenericDaoHibernate dao = new GenericDaoHibernate() {
+ private GenericDaoHibernate dao = new GenericDaoHibernate() {
@Override
protected Session getSession() {
@@ -42,33 +42,33 @@ public class ProjectWorkService implements IProjectWorkService {
@Override
@Transactional(readOnly = true)
- public boolean exists(ProjectWork projectWork) {
- return dao.exists(projectWork.getId());
+ public boolean exists(Order order) {
+ return dao.exists(order.getId());
}
@Override
- public void save(ProjectWork projectWork) throws ValidationException {
- if (projectWork.isEndDateBeforeStart()) {
+ public void save(Order order) throws ValidationException {
+ if (order.isEndDateBeforeStart()) {
throw new ValidationException("endDate must be after startDate");
}
- dao.save(projectWork);
+ dao.save(order);
}
@Override
- public List getProjectWorks() {
- return dao.list(ProjectWork.class);
+ public List getOrders() {
+ return dao.list(Order.class);
}
@Override
- public ProjectWork find(Long projectWorkId)
+ public Order find(Long orderId)
throws InstanceNotFoundException {
- return dao.find(projectWorkId);
+ return dao.find(orderId);
}
@Override
- public void remove(ProjectWork projectWork)
+ public void remove(Order order)
throws InstanceNotFoundException {
- dao.remove(projectWork.getId());
+ dao.remove(order.getId());
}
@Override
diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/ITaskWorkContainer.java b/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/ITaskWorkContainer.java
deleted file mode 100644
index f95dcbb45..000000000
--- a/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/ITaskWorkContainer.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.navalplanner.business.workorders.entities;
-
-/**
- * Container of TaskWorks.
- * @author Óscar González Fernández
- */
-public interface ITaskWorkContainer {
-
- public void add(TaskWork task);
-
- public void remove(TaskWork task);
-
- public void replace(TaskWork oldTask, TaskWork newTask);
-
- public void up(TaskWork task);
-
- public void down(TaskWork task);
-
- public void add(int position, TaskWork task);
-
-}
\ No newline at end of file
diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/TaskWorkContainer.java b/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/TaskWorkContainer.java
deleted file mode 100644
index c0c8abbc5..000000000
--- a/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/TaskWorkContainer.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package org.navalplanner.business.workorders.entities;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class TaskWorkContainer extends TaskWork implements ITaskWorkContainer {
-
- private List children = new ArrayList();
-
- @Override
- public List getChildren() {
- return new ArrayList(children);
- }
-
- @Override
- public boolean isLeaf() {
- return false;
- }
-
- @Override
- public void remove(TaskWork child) {
- getManipulator().remove(child);
- }
-
- @Override
- public void replace(TaskWork oldTask, TaskWork newTask) {
- getManipulator().replace(oldTask, newTask);
- }
-
- @Override
- public void add(TaskWork task) {
- getManipulator().add(task);
- }
-
- @Override
- public void up(TaskWork task) {
- getManipulator().up(task);
- }
-
- private TaskWorkListManipulator getManipulator() {
- return new TaskWorkListManipulator(children);
- }
-
- @Override
- public TaskWorkContainer asContainer() {
- return this;
- }
-
- @Override
- public void down(TaskWork task) {
- getManipulator().down(task);
- }
-
- @Override
- public void add(int position, TaskWork task) {
- children.add(position, task);
- }
-
- @Override
- public Integer getWorkHours() {
- int result = 0;
- List children = getChildren();
- for (TaskWork taskWork : children) {
- result += taskWork.getWorkHours();
- }
- return result;
- }
-
- @Override
- public void forceLoadActivities() {
- for (TaskWork taskWork : children) {
- taskWork.forceLoadActivities();
- }
- }
-
- @Override
- public List getActivities() {
- List activities = new ArrayList();
- for (TaskWork taskWork : children) {
- activities.addAll(taskWork.getActivities());
- }
- return activities;
- }
-
-}
diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/TaskWorkLeaf.java b/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/TaskWorkLeaf.java
deleted file mode 100644
index 2436deb35..000000000
--- a/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/TaskWorkLeaf.java
+++ /dev/null
@@ -1,97 +0,0 @@
-package org.navalplanner.business.workorders.entities;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-public class TaskWorkLeaf extends TaskWork {
-
- private Boolean fixedHours = false;
-
- private Set activityWorks = new HashSet();
-
- @Override
- public Integer getWorkHours() {
- int result = 0;
- List a = getActivities();
- for (ActivityWork activityWork : a) {
- Integer workingHours = activityWork.getWorkingHours();
- if (workingHours != null) {
- result += workingHours;
- }
- }
- return result;
- }
-
- @Override
- public List getChildren() {
- return new ArrayList();
- }
-
- @Override
- public boolean isLeaf() {
- return true;
- }
-
- @Override
- public TaskWorkContainer asContainer() {
- TaskWorkContainer result = new TaskWorkContainer();
- result.setName(getName());
- result.setInitDate(getInitDate());
- result.setEndDate(getEndDate());
- // FIXME
- // result.setActivities(getActivities());
- return result;
- }
-
- public void setWorkHours(Integer workingHours) {
- List activities = getActivities();
-
- // FIXME For the moment we have just one activity for each TaksWorkLeaf
- if (activities.isEmpty()) {
- ActivityWork activity = new ActivityWork();
- activity.setWorkingHours(workingHours);
-
- activities.add(activity);
- } else {
- ActivityWork activity = activities.get(0);
- activity.setWorkingHours(workingHours);
- }
-
- setActivities(activities);
- }
-
- public void setActivities(List activities) {
- this.activityWorks = new HashSet(activities);
- }
-
- public void addActivity(ActivityWork activityWork) {
- activityWorks.add(activityWork);
- }
-
- public void deleteActivity(ActivityWork value) {
- activityWorks.remove(value);
- }
-
- @Override
- public List getActivities() {
- return new ArrayList(activityWorks);
- }
-
- @Override
- public void forceLoadActivities() {
- for (ActivityWork activityWork : activityWorks) {
- activityWork.getWorkingHours();
- }
- }
-
- public void setFixedHours(Boolean fixedHours) {
- this.fixedHours = fixedHours;
- }
-
- public Boolean isFixedHours() {
- return fixedHours;
- }
-
-}
diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/TaskWorkListManipulator.java b/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/TaskWorkListManipulator.java
deleted file mode 100644
index 613bbaf2a..000000000
--- a/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/TaskWorkListManipulator.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.navalplanner.business.workorders.entities;
-
-import java.util.Collections;
-import java.util.List;
-
-/**
- * Implementation of {@link TaskWork}.
- * @author Óscar González Fernández
- */
-public class TaskWorkListManipulator implements ITaskWorkContainer {
-
- private final List taskWorks;
-
- public TaskWorkListManipulator(List taskWorks) {
- this.taskWorks = taskWorks;
-
- }
-
- @Override
- public void add(TaskWork task) {
- taskWorks.add(task);
- }
-
- @Override
- public void remove(TaskWork task) {
- taskWorks.remove(task);
- }
-
- @Override
- public void replace(TaskWork oldTask, TaskWork newTask) {
- Collections.replaceAll(taskWorks, oldTask, newTask);
- }
-
- @Override
- public void up(TaskWork task) {
- int position = taskWorks.indexOf(task);
- if (position < taskWorks.size() - 1) {
- taskWorks.remove(position);
- taskWorks.add(position + 1, task);
- }
- }
-
- @Override
- public void down(TaskWork task) {
- int position = taskWorks.indexOf(task);
- if (position > 0) {
- taskWorks.remove(position);
- taskWorks.add(position - 1, task);
- }
- }
-
- @Override
- public void add(int position, TaskWork task) {
- taskWorks.add(position, task);
- }
-
-}
diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/workorders/services/IProjectWorkService.java b/navalplanner-business/src/main/java/org/navalplanner/business/workorders/services/IProjectWorkService.java
deleted file mode 100644
index 90b7dbafd..000000000
--- a/navalplanner-business/src/main/java/org/navalplanner/business/workorders/services/IProjectWorkService.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.navalplanner.business.workorders.services;
-
-import java.util.List;
-
-import org.navalplanner.business.common.OnTransaction;
-import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
-import org.navalplanner.business.common.exceptions.ValidationException;
-import org.navalplanner.business.workorders.entities.ProjectWork;
-
-/**
- * Management of {@link ProjectWork}
- * @author Óscar González Fernández
- */
-public interface IProjectWorkService {
-
- void save(ProjectWork projectWork) throws ValidationException;
-
- boolean exists(ProjectWork projectWork);
-
- List getProjectWorks();
-
- void remove(ProjectWork projectWork) throws InstanceNotFoundException;
-
- ProjectWork find(Long workerId) throws InstanceNotFoundException;
-
- public T onTransaction(OnTransaction onTransaction);
-
-}
diff --git a/navalplanner-business/src/main/resources/navalplanner-business-spring-config.xml b/navalplanner-business/src/main/resources/navalplanner-business-spring-config.xml
index b123d34ac..014bf31d3 100644
--- a/navalplanner-business/src/main/resources/navalplanner-business-spring-config.xml
+++ b/navalplanner-business/src/main/resources/navalplanner-business-spring-config.xml
@@ -24,7 +24,7 @@
org/navalplanner/business/resources/entities/Resources.hbm.xml
- org/navalplanner/business/workorders/entities/WorkOrders.hbm.xml
+ org/navalplanner/business/orders/entities/Orders.hbm.xml
diff --git a/navalplanner-business/src/main/resources/org/navalplanner/business/workorders/entities/WorkOrders.hbm.xml b/navalplanner-business/src/main/resources/org/navalplanner/business/orders/entities/Orders.hbm.xml
similarity index 65%
rename from navalplanner-business/src/main/resources/org/navalplanner/business/workorders/entities/WorkOrders.hbm.xml
rename to navalplanner-business/src/main/resources/org/navalplanner/business/orders/entities/Orders.hbm.xml
index bfdc03d3c..8b0c60d7b 100644
--- a/navalplanner-business/src/main/resources/org/navalplanner/business/workorders/entities/WorkOrders.hbm.xml
+++ b/navalplanner-business/src/main/resources/org/navalplanner/business/orders/entities/Orders.hbm.xml
@@ -1,8 +1,8 @@
-
-
-
+
+
+
@@ -12,14 +12,14 @@
-
-
-
-
+
+
+
+
-
+
@@ -31,28 +31,28 @@
-
-
+
+
-
+
-
-
+
+
-
-
-
+
+
+
-
+
diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/orders/entities/OrderTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/orders/entities/OrderTest.java
new file mode 100644
index 000000000..ea792e268
--- /dev/null
+++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/orders/entities/OrderTest.java
@@ -0,0 +1,42 @@
+package org.navalplanner.business.test.orders.entities;
+
+import org.junit.Test;
+import org.navalplanner.business.orders.entities.Order;
+import org.navalplanner.business.orders.entities.OrderElement;
+import org.navalplanner.business.orders.entities.OrderLineGroup;
+import org.navalplanner.business.orders.entities.OrderLine;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Tests for {@link Order}.
+ * @author Óscar González Fernández
+ */
+public class OrderTest {
+
+ @Test
+ public void testAddingOrderElement() throws Exception {
+ Order order = new Order();
+ OrderLineGroup container = new OrderLineGroup();
+ OrderLine leaf = new OrderLine();
+ container.add(leaf);
+ order.add(container);
+ assertThat(order.getOrderElements().size(), equalTo(1));
+ }
+
+ @Test
+ public void testPreservesOrder() throws Exception {
+ OrderLineGroup container = new OrderLineGroup();
+
+ OrderLine[] created = new OrderLine[100];
+ for (int i = 0; i < created.length; i++) {
+ created[i] = new OrderLine();
+ container.add(created[i]);
+ }
+ for (int i = 0; i < created.length; i++) {
+ assertThat(container.getChildren().get(i),
+ equalTo((OrderElement) created[i]));
+ }
+ }
+}
diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/orders/services/OrderServiceTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/orders/services/OrderServiceTest.java
new file mode 100644
index 000000000..250d89bd7
--- /dev/null
+++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/orders/services/OrderServiceTest.java
@@ -0,0 +1,187 @@
+package org.navalplanner.business.test.orders.services;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+import static org.navalplanner.business.BusinessGlobalNames.BUSINESS_SPRING_CONFIG_FILE;
+import static org.navalplanner.business.test.BusinessGlobalNames.BUSINESS_SPRING_CONFIG_TEST_FILE;
+
+import java.util.List;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.navalplanner.business.common.OnTransaction;
+import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
+import org.navalplanner.business.common.exceptions.ValidationException;
+import org.navalplanner.business.orders.entities.HoursGroup;
+import org.navalplanner.business.orders.entities.Order;
+import org.navalplanner.business.orders.entities.OrderElement;
+import org.navalplanner.business.orders.entities.OrderLineGroup;
+import org.navalplanner.business.orders.entities.OrderLine;
+import org.navalplanner.business.orders.services.IOrderService;
+import org.navalplanner.business.test.resources.daos.CriterionSatisfactionDAOTest;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.annotation.NotTransactional;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * Tests for {@link Order}.
+ * @author Óscar González Fernández
+ */
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(locations = { BUSINESS_SPRING_CONFIG_FILE,
+ BUSINESS_SPRING_CONFIG_TEST_FILE })
+@Transactional
+public class OrderServiceTest {
+
+ private static Order createValidOrder() {
+ Order order = new Order();
+ order.setDescription("description");
+ order.setCustomer("blabla");
+ order.setInitDate(CriterionSatisfactionDAOTest.year(2000));
+ order.setName("name");
+ order.setResponsible("responsible");
+ return order;
+ }
+
+ @Autowired
+ private IOrderService orderService;
+
+ @Test
+ public void testCreation() throws ValidationException {
+ Order order = createValidOrder();
+ orderService.save(order);
+ assertTrue(orderService.exists(order));
+ }
+
+ @Test
+ public void testListing() throws Exception {
+ List list = orderService.getOrders();
+ orderService.save(createValidOrder());
+ assertThat(orderService.getOrders().size(), equalTo(list
+ .size() + 1));
+ }
+
+ @Test
+ public void testRemove() throws Exception {
+ Order order = createValidOrder();
+ orderService.save(order);
+ assertTrue(orderService.exists(order));
+ orderService.remove(order);
+ assertFalse(orderService.exists(order));
+ }
+
+ @Test(expected = ValidationException.class)
+ public void shouldSendValidationExceptionIfEndDateIsBeforeThanStartingDate()
+ throws ValidationException {
+ Order order = createValidOrder();
+ order.setEndDate(CriterionSatisfactionDAOTest.year(0));
+ orderService.save(order);
+ }
+
+ @Test
+ public void testFind() throws Exception {
+ Order order = createValidOrder();
+ orderService.save(order);
+ assertThat(orderService.find(order.getId()), notNullValue());
+ }
+
+ @Test
+ @NotTransactional
+ public void testOrderPreserved() throws ValidationException,
+ InstanceNotFoundException {
+ final Order order = createValidOrder();
+ final OrderElement[] containers = new OrderLineGroup[10];
+ for (int i = 0; i < containers.length; i++) {
+ containers[i] = new OrderLineGroup();
+ containers[i].setName("bla");
+ order.add(containers[i]);
+ }
+ OrderLineGroup container = (OrderLineGroup) containers[0];
+ container.setName("container");
+ final OrderElement[] orderElements = new OrderElement[10];
+ for (int i = 0; i < orderElements.length; i++) {
+ OrderLine leaf = createValidLeaf("bla");
+ orderElements[i] = leaf;
+ container.add(leaf);
+ }
+ orderService.save(order);
+ orderService.onTransaction(new OnTransaction() {
+
+ @Override
+ public Void execute() {
+ try {
+ Order reloaded = orderService.find(order
+ .getId());
+ List elements = reloaded.getOrderElements();
+ for (int i = 0; i < containers.length; i++) {
+ assertThat(elements.get(i).getId(),
+ equalTo(containers[i].getId()));
+ }
+ OrderLineGroup container = (OrderLineGroup) reloaded
+ .getOrderElements().iterator().next();
+ List children = container.getChildren();
+ for (int i = 0; i < orderElements.length; i++) {
+ assertThat(children.get(i).getId(), equalTo(orderElements[i]
+ .getId()));
+ }
+ return null;
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ });
+ orderService.remove(order);
+ }
+
+ private OrderLine createValidLeaf(String parameter) {
+ OrderLine result = new OrderLine();
+ result.setName(parameter);
+ return result;
+ }
+
+ @Test
+ @NotTransactional
+ public void testAddingOrderElement() throws Exception {
+ final Order order = createValidOrder();
+ OrderLineGroup container = new OrderLineGroup();
+ container.setName("bla");
+ OrderLine leaf = new OrderLine();
+ leaf.setName("leaf");
+ container.add(leaf);
+ order.add(container);
+ HoursGroup hoursGroup = new HoursGroup();
+ hoursGroup.setWorkingHours(3);
+ leaf.addHoursGroup(hoursGroup);
+ orderService.save(order);
+ orderService.onTransaction(new OnTransaction() {
+
+ @Override
+ public Void execute() {
+ try {
+ Order reloaded = orderService.find(order
+ .getId());
+ assertFalse(order == reloaded);
+ assertThat(reloaded.getOrderElements().size(), equalTo(1));
+ OrderLineGroup containerReloaded = (OrderLineGroup) reloaded
+ .getOrderElements().get(0);
+ assertThat(containerReloaded.getHoursGroups().size(),
+ equalTo(1));
+ assertThat(containerReloaded.getChildren().size(),
+ equalTo(1));
+ OrderElement leaf = containerReloaded.getChildren().get(0);
+ assertThat(leaf.getHoursGroups().size(), equalTo(1));
+ orderService.remove(order);
+ } catch (InstanceNotFoundException e) {
+ throw new RuntimeException(e);
+ }
+ return null;
+ }
+ });
+ }
+}
diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/workorders/entities/ProjectWorkTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/workorders/entities/ProjectWorkTest.java
deleted file mode 100644
index 398c1af05..000000000
--- a/navalplanner-business/src/test/java/org/navalplanner/business/test/workorders/entities/ProjectWorkTest.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package org.navalplanner.business.test.workorders.entities;
-
-import org.junit.Test;
-import org.navalplanner.business.workorders.entities.ProjectWork;
-import org.navalplanner.business.workorders.entities.TaskWork;
-import org.navalplanner.business.workorders.entities.TaskWorkContainer;
-import org.navalplanner.business.workorders.entities.TaskWorkLeaf;
-
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
-
-/**
- * Tests for {@link ProjectWork}.
- * @author Óscar González Fernández
- */
-public class ProjectWorkTest {
-
- @Test
- public void testAddingTaskWork() throws Exception {
- ProjectWork projectWork = new ProjectWork();
- TaskWorkContainer container = new TaskWorkContainer();
- TaskWorkLeaf leaf = new TaskWorkLeaf();
- container.add(leaf);
- projectWork.add(container);
- assertThat(projectWork.getTaskWorks().size(), equalTo(1));
- }
-
- @Test
- public void testPreservesOrder() throws Exception {
- TaskWorkContainer container = new TaskWorkContainer();
-
- TaskWorkLeaf[] created = new TaskWorkLeaf[100];
- for (int i = 0; i < created.length; i++) {
- created[i] = new TaskWorkLeaf();
- container.add(created[i]);
- }
- for (int i = 0; i < created.length; i++) {
- assertThat(container.getChildren().get(i),
- equalTo((TaskWork) created[i]));
- }
- }
-}
diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/workorders/services/ProjectWorkServiceTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/workorders/services/ProjectWorkServiceTest.java
deleted file mode 100644
index 77ed835aa..000000000
--- a/navalplanner-business/src/test/java/org/navalplanner/business/test/workorders/services/ProjectWorkServiceTest.java
+++ /dev/null
@@ -1,187 +0,0 @@
-package org.navalplanner.business.test.workorders.services;
-
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
-import static org.navalplanner.business.BusinessGlobalNames.BUSINESS_SPRING_CONFIG_FILE;
-import static org.navalplanner.business.test.BusinessGlobalNames.BUSINESS_SPRING_CONFIG_TEST_FILE;
-
-import java.util.List;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.navalplanner.business.common.OnTransaction;
-import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
-import org.navalplanner.business.common.exceptions.ValidationException;
-import org.navalplanner.business.test.resources.daos.CriterionSatisfactionDAOTest;
-import org.navalplanner.business.workorders.entities.ActivityWork;
-import org.navalplanner.business.workorders.entities.ProjectWork;
-import org.navalplanner.business.workorders.entities.TaskWork;
-import org.navalplanner.business.workorders.entities.TaskWorkContainer;
-import org.navalplanner.business.workorders.entities.TaskWorkLeaf;
-import org.navalplanner.business.workorders.services.IProjectWorkService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.annotation.NotTransactional;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.transaction.annotation.Transactional;
-
-/**
- * Tests for {@link ProjectWork}.
- * @author Óscar González Fernández
- */
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = { BUSINESS_SPRING_CONFIG_FILE,
- BUSINESS_SPRING_CONFIG_TEST_FILE })
-@Transactional
-public class ProjectWorkServiceTest {
-
- private static ProjectWork createValidProjectWork() {
- ProjectWork projectWork = new ProjectWork();
- projectWork.setDescription("description");
- projectWork.setCustomer("blabla");
- projectWork.setInitDate(CriterionSatisfactionDAOTest.year(2000));
- projectWork.setName("name");
- projectWork.setResponsible("responsible");
- return projectWork;
- }
-
- @Autowired
- private IProjectWorkService projectWorkService;
-
- @Test
- public void testCreation() throws ValidationException {
- ProjectWork projectWork = createValidProjectWork();
- projectWorkService.save(projectWork);
- assertTrue(projectWorkService.exists(projectWork));
- }
-
- @Test
- public void testListing() throws Exception {
- List list = projectWorkService.getProjectWorks();
- projectWorkService.save(createValidProjectWork());
- assertThat(projectWorkService.getProjectWorks().size(), equalTo(list
- .size() + 1));
- }
-
- @Test
- public void testRemove() throws Exception {
- ProjectWork projectWork = createValidProjectWork();
- projectWorkService.save(projectWork);
- assertTrue(projectWorkService.exists(projectWork));
- projectWorkService.remove(projectWork);
- assertFalse(projectWorkService.exists(projectWork));
- }
-
- @Test(expected = ValidationException.class)
- public void shouldSendValidationExceptionIfEndDateIsBeforeThanStartingDate()
- throws ValidationException {
- ProjectWork projectWork = createValidProjectWork();
- projectWork.setEndDate(CriterionSatisfactionDAOTest.year(0));
- projectWorkService.save(projectWork);
- }
-
- @Test
- public void testFind() throws Exception {
- ProjectWork projectWork = createValidProjectWork();
- projectWorkService.save(projectWork);
- assertThat(projectWorkService.find(projectWork.getId()), notNullValue());
- }
-
- @Test
- @NotTransactional
- public void testOrderPreserved() throws ValidationException,
- InstanceNotFoundException {
- final ProjectWork projectWork = createValidProjectWork();
- final TaskWork[] containers = new TaskWorkContainer[10];
- for (int i = 0; i < containers.length; i++) {
- containers[i] = new TaskWorkContainer();
- containers[i].setName("bla");
- projectWork.add(containers[i]);
- }
- TaskWorkContainer container = (TaskWorkContainer) containers[0];
- container.setName("container");
- final TaskWork[] tasks = new TaskWork[10];
- for (int i = 0; i < tasks.length; i++) {
- TaskWorkLeaf leaf = createValidLeaf("bla");
- tasks[i] = leaf;
- container.add(leaf);
- }
- projectWorkService.save(projectWork);
- projectWorkService.onTransaction(new OnTransaction() {
-
- @Override
- public Void execute() {
- try {
- ProjectWork reloaded = projectWorkService.find(projectWork
- .getId());
- List taskWorks = reloaded.getTaskWorks();
- for (int i = 0; i < containers.length; i++) {
- assertThat(taskWorks.get(i).getId(),
- equalTo(containers[i].getId()));
- }
- TaskWorkContainer container = (TaskWorkContainer) reloaded
- .getTaskWorks().iterator().next();
- List children = container.getChildren();
- for (int i = 0; i < tasks.length; i++) {
- assertThat(children.get(i).getId(), equalTo(tasks[i]
- .getId()));
- }
- return null;
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
-
- });
- projectWorkService.remove(projectWork);
- }
-
- private TaskWorkLeaf createValidLeaf(String parameter) {
- TaskWorkLeaf result = new TaskWorkLeaf();
- result.setName(parameter);
- return result;
- }
-
- @Test
- @NotTransactional
- public void testAddingTaskWork() throws Exception {
- final ProjectWork projectWork = createValidProjectWork();
- TaskWorkContainer container = new TaskWorkContainer();
- container.setName("bla");
- TaskWorkLeaf leaf = new TaskWorkLeaf();
- leaf.setName("leaf");
- container.add(leaf);
- projectWork.add(container);
- ActivityWork activityWork = new ActivityWork();
- activityWork.setWorkingHours(3);
- leaf.addActivity(activityWork);
- projectWorkService.save(projectWork);
- projectWorkService.onTransaction(new OnTransaction() {
-
- @Override
- public Void execute() {
- try {
- ProjectWork reloaded = projectWorkService.find(projectWork
- .getId());
- assertFalse(projectWork == reloaded);
- assertThat(reloaded.getTaskWorks().size(), equalTo(1));
- TaskWorkContainer containerReloaded = (TaskWorkContainer) reloaded
- .getTaskWorks().get(0);
- assertThat(containerReloaded.getActivities().size(),
- equalTo(1));
- assertThat(containerReloaded.getChildren().size(),
- equalTo(1));
- TaskWork leaf = containerReloaded.getChildren().get(0);
- assertThat(leaf.getActivities().size(), equalTo(1));
- projectWorkService.remove(projectWork);
- } catch (InstanceNotFoundException e) {
- throw new RuntimeException(e);
- }
- return null;
- }
- });
- }
-}
diff --git a/navalplanner-business/src/test/resources/navalplanner-business-spring-config-test.xml b/navalplanner-business/src/test/resources/navalplanner-business-spring-config-test.xml
index 161c5d40a..78946c8fd 100644
--- a/navalplanner-business/src/test/resources/navalplanner-business-spring-config-test.xml
+++ b/navalplanner-business/src/test/resources/navalplanner-business-spring-config-test.xml
@@ -30,7 +30,7 @@
org/navalplanner/business/resources/entities/Resources.hbm.xml
- org/navalplanner/business/workorders/entities/WorkOrders.hbm.xml
+ org/navalplanner/business/orders/entities/Orders.hbm.xml
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/ProjectWorkConverter.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/ProjectWorkConverter.java
index ec915cd42..9c87e0a89 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/ProjectWorkConverter.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/ProjectWorkConverter.java
@@ -1,26 +1,26 @@
package org.navalplanner.web.common.converters;
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
-import org.navalplanner.business.workorders.entities.ProjectWork;
-import org.navalplanner.business.workorders.services.IProjectWorkService;
+import org.navalplanner.business.orders.entities.Order;
+import org.navalplanner.business.orders.services.IOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
/**
- * A {@link Converter} for {@link ProjectWork}
+ * A {@link Converter} for {@link Order}
* @author Óscar González Fernández
*/
@Component
@Scope(BeanDefinition.SCOPE_SINGLETON)
-public class ProjectWorkConverter implements Converter {
+public class ProjectWorkConverter implements Converter {
@Autowired
- private IProjectWorkService projectWorkService;
+ private IOrderService projectWorkService;
@Override
- public ProjectWork asObject(String stringRepresentation) {
+ public Order asObject(String stringRepresentation) {
try {
return projectWorkService
.find(Long.parseLong(stringRepresentation));
@@ -30,18 +30,18 @@ public class ProjectWorkConverter implements Converter {
}
@Override
- public String asString(ProjectWork entity) {
+ public String asString(Order entity) {
return entity.getId() + "";
}
@Override
public String asStringUngeneric(Object entity) {
- return asString((ProjectWork) entity);
+ return asString((Order) entity);
}
@Override
- public Class getType() {
- return ProjectWork.class;
+ public Class getType() {
+ return Order.class;
}
}
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/IOrderModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/IOrderModel.java
new file mode 100644
index 000000000..85ac102bc
--- /dev/null
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/IOrderModel.java
@@ -0,0 +1,31 @@
+package org.navalplanner.web.orders;
+
+import java.util.List;
+
+import org.navalplanner.business.common.exceptions.ValidationException;
+import org.navalplanner.business.orders.entities.IOrderLineGroup;
+import org.navalplanner.business.orders.entities.Order;
+
+/**
+ * Contract for {@link OrderModel}
+ * @author Óscar González Fernández
+ */
+public interface IOrderModel {
+
+ List getOrders();
+
+ void prepareEditFor(Order order);
+
+ void prepareForCreate();
+
+ void save() throws ValidationException;
+
+ IOrderLineGroup getOrder();
+
+ void remove(Order order);
+
+ void prepareForRemove(Order order);
+
+ OrderElementModel getOrderElementTreeModel();
+
+}
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/workorders/ProjectWorkCRUDController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderCRUDController.java
similarity index 65%
rename from navalplanner-webapp/src/main/java/org/navalplanner/web/workorders/ProjectWorkCRUDController.java
rename to navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderCRUDController.java
index a6cd5069c..17cf77ba3 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/workorders/ProjectWorkCRUDController.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderCRUDController.java
@@ -1,10 +1,10 @@
-package org.navalplanner.web.workorders;
+package org.navalplanner.web.orders;
import java.util.List;
import org.navalplanner.business.common.exceptions.ValidationException;
-import org.navalplanner.business.workorders.entities.ITaskWorkContainer;
-import org.navalplanner.business.workorders.entities.ProjectWork;
+import org.navalplanner.business.orders.entities.IOrderLineGroup;
+import org.navalplanner.business.orders.entities.Order;
import org.navalplanner.web.common.IMessagesForUser;
import org.navalplanner.web.common.Level;
import org.navalplanner.web.common.MessagesForUser;
@@ -18,9 +18,9 @@ import org.zkoss.zul.api.Window;
* Controller for CRUD actions
* @author Óscar González Fernández
*/
-public class ProjectWorkCRUDController extends GenericForwardComposer {
+public class OrderCRUDController extends GenericForwardComposer {
- private IProjectWorkModel projectWorkModel;
+ private IOrderModel orderModel;
private IMessagesForUser messagesForUser;
@@ -36,8 +36,8 @@ public class ProjectWorkCRUDController extends GenericForwardComposer {
private Window confirmRemove;
- public List getProjects() {
- return projectWorkModel.getProjects();
+ public List getOrders() {
+ return orderModel.getOrders();
}
private OnlyOneVisible getVisibility() {
@@ -48,14 +48,14 @@ public class ProjectWorkCRUDController extends GenericForwardComposer {
return cachedOnlyOneVisible;
}
- public ITaskWorkContainer getProject() {
- return projectWorkModel.getProject();
+ public IOrderLineGroup getOrder() {
+ return orderModel.getOrder();
}
public void save() {
try {
- projectWorkModel.save();
- messagesForUser.showMessage(Level.INFO, "proxecto gardado");
+ orderModel.save();
+ messagesForUser.showMessage(Level.INFO, "order saved");
goToList();
} catch (ValidationException e) {
messagesForUser.showInvalidValues(e);
@@ -71,8 +71,8 @@ public class ProjectWorkCRUDController extends GenericForwardComposer {
goToList();
}
- public void confirmRemove(ProjectWork project) {
- projectWorkModel.prepareForRemove(project);
+ public void confirmRemove(Order order) {
+ orderModel.prepareForRemove(order);
showConfirmingWindow();
}
@@ -103,22 +103,22 @@ public class ProjectWorkCRUDController extends GenericForwardComposer {
}
}
- public void goToEditForm(ProjectWork project) {
- projectWorkModel.prepareEditFor(project);
+ public void goToEditForm(Order order) {
+ orderModel.prepareEditFor(order);
getVisibility().showOnly(editWindow);
Util.reloadBindings(editWindow);
}
- public void remove(ProjectWork projectWork) {
- projectWorkModel.remove(projectWork);
+ public void remove(Order order) {
+ orderModel.remove(order);
hideConfirmingWindow();
Util.reloadBindings(listWindow);
messagesForUser.showMessage(Level.INFO, "removed "
- + projectWork.getName());
+ + order.getName());
}
public void goToCreateForm() {
- projectWorkModel.prepareForCreate();
+ orderModel.prepareForCreate();
getVisibility().showOnly(createWindow);
Util.reloadBindings(createWindow);
}
@@ -130,20 +130,22 @@ public class ProjectWorkCRUDController extends GenericForwardComposer {
comp.setVariable("controller", this, true);
getVisibility().showOnly(listWindow);
- TaskWorkController taskWorkController = new TaskWorkController();
- taskWorkController.doAfterCompose(comp.getFellow("editTaskWorkPopup"));
+ OrderElementController orderElementController = new OrderElementController();
+ orderElementController.doAfterCompose(comp
+ .getFellow("editOrderElementPopup"));
- setupTaskTreeController(comp, "editWindow", taskWorkController);
- setupTaskTreeController(comp, "createWindow", taskWorkController);
+ setupOrderElementTreeController(comp, "editWindow", orderElementController);
+ setupOrderElementTreeController(comp, "createWindow", orderElementController);
}
- private void setupTaskTreeController(Component comp, String window,
- TaskWorkController taskWorkController)
+ private void setupOrderElementTreeController(Component comp, String window,
+ OrderElementController orderElementController)
throws Exception {
- TaskWorksTreeController controller = new TaskWorksTreeController(
- projectWorkModel, taskWorkController);
+ OrderElementTreeController controller = new OrderElementTreeController(
+ orderModel, orderElementController);
controller
- .doAfterCompose(comp.getFellow(window).getFellow("tasksTree"));
+ .doAfterCompose(comp.getFellow(window).getFellow(
+ "orderElementTree"));
}
}
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/workorders/TaskWorkController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementController.java
similarity index 66%
rename from navalplanner-webapp/src/main/java/org/navalplanner/web/workorders/TaskWorkController.java
rename to navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementController.java
index aada6923c..4fb926d7e 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/workorders/TaskWorkController.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementController.java
@@ -1,16 +1,16 @@
-package org.navalplanner.web.workorders;
+package org.navalplanner.web.orders;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
-import org.navalplanner.business.workorders.entities.ActivityWork;
-import org.navalplanner.business.workorders.entities.ProjectWork;
-import org.navalplanner.business.workorders.entities.TaskWork;
-import org.navalplanner.business.workorders.entities.TaskWorkContainer;
-import org.navalplanner.business.workorders.entities.TaskWorkLeaf;
-import org.navalplanner.business.workorders.entities.ActivityWork.HoursPolicies;
+import org.navalplanner.business.orders.entities.HoursGroup;
+import org.navalplanner.business.orders.entities.Order;
+import org.navalplanner.business.orders.entities.OrderElement;
+import org.navalplanner.business.orders.entities.OrderLine;
+import org.navalplanner.business.orders.entities.OrderLineGroup;
+import org.navalplanner.business.orders.entities.HoursGroup.HoursPolicies;
import org.navalplanner.web.common.Util;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.event.Event;
@@ -29,47 +29,47 @@ import org.zkoss.zul.Popup;
import org.zkoss.zul.Textbox;
/**
- * Controller for {@link TaskWork} view of {@link ProjectWork} entities
+ * Controller for {@link OrderElement} view of {@link Order} entities
*
* @author Manuel Rego Casasnovas
*/
-public class TaskWorkController extends GenericForwardComposer {
+public class OrderElementController extends GenericForwardComposer {
/**
- * {@link TaskWork} that is managed
+ * {@link OrderElement} that is managed
*/
- private TaskWork taskWork;
+ private OrderElement orderElement;
/**
- * {@link Popup} where {@link TaskWork} edition form is showed
+ * {@link Popup} where {@link OrderElement} edition form is showed
*/
private Popup popup;
/**
- * Model of the {@link ActivityWork} list
+ * Model of the {@link HoursGroup} list
*/
- private List activityWorksModel;
+ private List hoursGroupsModel;
/**
- * {@link Listitem} for every {@link ActivityWork}
+ * {@link Listitem} for every {@link HoursGroup}
*/
- private AcitivyWorkListitemRender renderer = new AcitivyWorkListitemRender();
+ private HoursGroupListitemRender renderer = new HoursGroupListitemRender();
/**
- * {@link Listbox} where {@link ActivityWork} are shown
+ * {@link Listbox} where {@link HoursGroup} are shown
*/
- private Listbox activityWorksListbox;
+ private Listbox hoursGroupsListbox;
- public TaskWork getTaskWork() {
- return taskWork;
+ public OrderElement getOrderElement() {
+ return orderElement;
}
- public List getActivityWorksModel() {
- return activityWorksModel;
+ public List getHoursGroupsModel() {
+ return hoursGroupsModel;
}
- public AcitivyWorkListitemRender getRenderer() {
+ public HoursGroupListitemRender getRenderer() {
return renderer;
}
@@ -77,43 +77,43 @@ public class TaskWorkController extends GenericForwardComposer {
@Override
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
- comp.setVariable("taskWorkController", this, true);
+ comp.setVariable("orderElementController", this, true);
popup = (Popup) comp;
}
/**
- * Open the popup to edit a {@link TaskWork}. If it's a
- * {@link TaskWorkContainer} less fields will be enabled.
+ * Open the popup to edit a {@link OrderElement}. If it's a
+ * {@link OrderLineGroup} less fields will be enabled.
*
- * @param taskWork
- * The {@link TaskWork} to be edited
+ * @param orderElement
+ * The {@link OrderElement} to be edited
*/
- public void openPopup(TaskWork taskWork) {
- this.taskWork = taskWork;
+ public void openPopup(OrderElement orderElement) {
+ this.orderElement = orderElement;
- this.activityWorksModel = taskWork.getActivities();
+ this.hoursGroupsModel = orderElement.getHoursGroups();
// If is a container
- if (taskWork instanceof TaskWorkContainer) {
- // Disable fields just used in the TaskWorkLeaf
+ if (orderElement instanceof OrderLineGroup) {
+ // Disable fields just used in the OrderLine
((Textbox) popup.getFellow("totalHours")).setDisabled(true);
// Hide not needed buttons
popup.getFellow("manageCriterions").setVisible(false);
- popup.getFellow("addActivityWork").setVisible(false);
- popup.getFellow("deleteActivityWork").setVisible(false);
+ popup.getFellow("addHoursGroup").setVisible(false);
+ popup.getFellow("deleteHoursGroup").setVisible(false);
} else {
- // Enable fields just used in the TaskWorkLeaf
+ // Enable fields just used in the OrderLine
((Textbox) popup.getFellow("totalHours")).setDisabled(false);
// Show needed buttons
popup.getFellow("manageCriterions").setVisible(true);
- popup.getFellow("addActivityWork").setVisible(true);
- popup.getFellow("deleteActivityWork").setVisible(true);
+ popup.getFellow("addHoursGroup").setVisible(true);
+ popup.getFellow("deleteHoursGroup").setVisible(true);
}
- fillFixedHoursCheckbox(taskWork);
+ fillFixedHoursCheckbox(orderElement);
Util.reloadBindings(popup);
@@ -124,13 +124,13 @@ public class TaskWorkController extends GenericForwardComposer {
* Private method that just fills the Div with id "fixedHoursCheckbox" in
* the .zul.
*
- * If the parameter is a {@link TaskWorkLeaf} the method adds the needed
+ * If the parameter is a {@link OrderLine} the method adds the needed
* checkbox.
*
- * @param taskWork
- * {@link TaskWork} that is been rendered
+ * @param orderElement
+ * {@link OrderElement} that is been rendered
*/
- private void fillFixedHoursCheckbox(final TaskWork taskWork) {
+ private void fillFixedHoursCheckbox(final OrderElement orderElement) {
// Get the Div with id "fixedHoursCheckbox"
Component fixedHoursCheckbox = popup.getFellow("fixedHoursCheckbox");
@@ -144,20 +144,20 @@ public class TaskWorkController extends GenericForwardComposer {
}
// If is a leaf
- if (taskWork instanceof TaskWorkLeaf) {
+ if (orderElement instanceof OrderLine) {
// Add specific fields
fixedHoursCheckbox.appendChild(Util.bind(new Checkbox(),
new Util.Getter() {
@Override
public Boolean get() {
- return ((TaskWorkLeaf) taskWork).isFixedHours();
+ return ((OrderLine) orderElement).isFixedHours();
}
}, new Util.Setter() {
@Override
public void set(Boolean value) {
- ((TaskWorkLeaf) taskWork).setFixedHours(value);
+ ((OrderLine) orderElement).setFixedHours(value);
}
}));
fixedHoursCheckbox.appendChild(new Label("Fixed hours"));
@@ -181,48 +181,48 @@ public class TaskWorkController extends GenericForwardComposer {
}
/**
- * Adds a new {@link ActivityWork} to the current {@link TaskWork}
+ * Adds a new {@link HoursGroup} to the current {@link OrderElement}
*
- * The {@link TaskWork} should be a {@link TaskWorkLeaf}
+ * The {@link OrderElement} should be a {@link OrderLine}
*/
- public void addActivityWork() {
- ActivityWork activity = new ActivityWork();
+ public void addHoursGroup() {
+ HoursGroup hoursGroup = new HoursGroup();
- ((TaskWorkLeaf) taskWork).addActivity(activity);
+ ((OrderLine) orderElement).addHoursGroup(hoursGroup);
- this.activityWorksModel = taskWork.getActivities();
+ this.hoursGroupsModel = orderElement.getHoursGroups();
Util.reloadBindings(popup);
}
/**
- * Deletes the selected {@link ActivityWork} for the current
- * {@link TaskWork}
+ * Deletes the selected {@link HoursGroup} for the current
+ * {@link OrderElement}
*
- * The {@link TaskWork} should be a {@link TaskWorkLeaf}
+ * The {@link OrderElement} should be a {@link OrderLine}
*/
- public void deleteActivityWorks() {
- Set selectedItems = activityWorksListbox.getSelectedItems();
+ public void deleteHoursGroups() {
+ Set selectedItems = hoursGroupsListbox.getSelectedItems();
for (Listitem item : selectedItems) {
- ((TaskWorkLeaf) taskWork).deleteActivity((ActivityWork) item
+ ((OrderLine) orderElement).deleteHoursGroup((HoursGroup) item
.getValue());
}
- this.activityWorksModel = taskWork.getActivities();
+ this.hoursGroupsModel = orderElement.getHoursGroups();
Util.reloadBindings(popup);
}
/**
- * Represents every {@link AcitivyWork} with an edition form if needed
+ * Represents every {@link HoursGroup} with an edition form if needed
*
* @author Manuel Rego Casasnovas
*/
- public class AcitivyWorkListitemRender implements ListitemRenderer {
+ public class HoursGroupListitemRender implements ListitemRenderer {
@Override
public void render(Listitem item, Object data) throws Exception {
- final ActivityWork activity = (ActivityWork) data;
+ final HoursGroup hoursGroup = (HoursGroup) data;
- item.setValue(activity);
+ item.setValue(hoursGroup);
Listcell cellWorkingHours = new Listcell();
cellWorkingHours.setParent(item);
@@ -244,7 +244,7 @@ public class TaskWorkController extends GenericForwardComposer {
}
// If is a container
- if (taskWork instanceof TaskWorkContainer) {
+ if (orderElement instanceof OrderLineGroup) {
// Just getters are needed
// Working hours
@@ -253,7 +253,7 @@ public class TaskWorkController extends GenericForwardComposer {
@Override
public Integer get() {
- return activity.getWorkingHours();
+ return hoursGroup.getWorkingHours();
}
}));
@@ -263,12 +263,12 @@ public class TaskWorkController extends GenericForwardComposer {
@Override
public BigDecimal get() {
- return activity.getPercentage();
+ return hoursGroup.getPercentage();
}
}));
// Hours policy
- hoursPolicyListBox.setSelectedIndex(activity.getHoursPolicy()
+ hoursPolicyListBox.setSelectedIndex(hoursGroup.getHoursPolicy()
.ordinal());
hoursPolicyListBox.setDisabled(true);
cellHoursPolicy.appendChild(hoursPolicyListBox);
@@ -280,13 +280,13 @@ public class TaskWorkController extends GenericForwardComposer {
@Override
public Integer get() {
- return activity.getWorkingHours();
+ return hoursGroup.getWorkingHours();
}
}, new Util.Setter() {
@Override
public void set(Integer value) {
- activity.setWorkingHours(value);
+ hoursGroup.setWorkingHours(value);
}
});
@@ -295,18 +295,18 @@ public class TaskWorkController extends GenericForwardComposer {
@Override
public BigDecimal get() {
- return activity.getPercentage();
+ return hoursGroup.getPercentage();
}
}, new Util.Setter() {
@Override
public void set(BigDecimal value) {
- activity.setPercentage(value);
+ hoursGroup.setPercentage(value);
}
});
// Hours policy
- hoursPolicyListBox.setSelectedIndex(activity.getHoursPolicy()
+ hoursPolicyListBox.setSelectedIndex(hoursGroup.getHoursPolicy()
.ordinal());
hoursPolicyListBox.addEventListener(Events.ON_SELECT,
new EventListener() {
@@ -315,7 +315,7 @@ public class TaskWorkController extends GenericForwardComposer {
public void onEvent(Event event) throws Exception {
HoursPolicies policy = (HoursPolicies) hoursPolicyListBox
.getSelectedItem().getValue();
- activity.setHoursPolicy(policy);
+ hoursGroup.setHoursPolicy(policy);
// Disable components depending on the policy
disableComponents(workingHours, percentage,
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/workorders/TaskTreeModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementModel.java
similarity index 50%
rename from navalplanner-webapp/src/main/java/org/navalplanner/web/workorders/TaskTreeModel.java
rename to navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementModel.java
index 8b6dcbb3d..a36447f37 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/workorders/TaskTreeModel.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementModel.java
@@ -1,89 +1,90 @@
-package org.navalplanner.web.workorders;
+package org.navalplanner.web.orders;
import java.util.ArrayList;
import java.util.List;
-import org.navalplanner.business.workorders.entities.ITaskWorkContainer;
-import org.navalplanner.business.workorders.entities.ProjectWork;
-import org.navalplanner.business.workorders.entities.TaskWork;
-import org.navalplanner.business.workorders.entities.TaskWorkContainer;
-import org.navalplanner.business.workorders.entities.TaskWorkLeaf;
+import org.navalplanner.business.orders.entities.IOrderLineGroup;
+import org.navalplanner.business.orders.entities.Order;
+import org.navalplanner.business.orders.entities.OrderElement;
+import org.navalplanner.business.orders.entities.OrderLine;
+import org.navalplanner.business.orders.entities.OrderLineGroup;
import org.zkoss.zul.SimpleTreeModel;
import org.zkoss.zul.SimpleTreeNode;
/**
- * Model for a the tasks tree for a project
+ * Model for a the {@link OrderElement} tree for a {@link Order}
+ *
* @author Lorenzo Tilve Álvaro
*/
-public class TaskTreeModel extends SimpleTreeModel {
+public class OrderElementModel extends SimpleTreeModel {
- private static List asNodes(List taskWorks) {
+ private static List asNodes(List orderElements) {
ArrayList result = new ArrayList();
- for (TaskWork taskWork : taskWorks) {
- result.add(asNode(taskWork));
+ for (OrderElement orderElement : orderElements) {
+ result.add(asNode(orderElement));
}
return result;
}
- private static SimpleTreeNode asNode(TaskWork taskWork) {
- taskWork.forceLoadActivities();
- return new SimpleTreeNode(taskWork, asNodes(taskWork.getChildren()));
+ private static SimpleTreeNode asNode(OrderElement orderElement) {
+ orderElement.forceLoadHourGroups();
+ return new SimpleTreeNode(orderElement, asNodes(orderElement.getChildren()));
}
private static SimpleTreeNode createRootNodeAndDescendants(
- ProjectWork project) {
- return new SimpleTreeNode(project, asNodes(project.getTaskWorks()));
+ Order order) {
+ return new SimpleTreeNode(order, asNodes(order.getOrderElements()));
}
- public TaskTreeModel(ProjectWork projectWork) {
- super(createRootNodeAndDescendants(projectWork));
+ public OrderElementModel(Order order) {
+ super(createRootNodeAndDescendants(order));
}
- public void reloadFromProjectWork() {
- ProjectWork root = getRootAsProject();
+ public void reloadFromOrder() {
+ Order root = getRootAsOrder();
SimpleTreeNode rootAsNode = getRootAsNode();
rootAsNode.getChildren().clear();
- rootAsNode.getChildren().addAll(asNodes(root.getTaskWorks()));
+ rootAsNode.getChildren().addAll(asNodes(root.getOrderElements()));
}
- public void addTask() {
- addTaskAtImpl(getRootAsNode());
- reloadFromProjectWork();
+ public void addOrderElement() {
+ addOrderElementAtImpl(getRootAsNode());
+ reloadFromOrder();
}
- private TaskWork createNewTask() {
- TaskWork newTask = new TaskWorkLeaf();
- newTask.setName("Nova Tarefa");
- return newTask;
+ private OrderElement createNewOrderElement() {
+ OrderElement newOrderElement = new OrderLine();
+ newOrderElement.setName("New Order Element");
+ return newOrderElement;
}
- public void addTaskAt(SimpleTreeNode node) {
- addTaskAtImpl(node);
- reloadFromProjectWork();
+ public void addOrderElementAt(SimpleTreeNode node) {
+ addOrderElementAtImpl(node);
+ reloadFromOrder();
}
- private void addTaskAtImpl(SimpleTreeNode node) {
- addTaskAtImpl(node, createNewTask());
+ private void addOrderElementAtImpl(SimpleTreeNode node) {
+ addOrderElementAtImpl(node, createNewOrderElement());
}
- private void addTaskAtImpl(SimpleTreeNode node, TaskWork task) {
- addTaskAtImpl(node, task, node.getChildCount());
+ private void addOrderElementAtImpl(SimpleTreeNode node, OrderElement orderElement) {
+ addOrderElementAtImpl(node, orderElement, node.getChildCount());
}
- private void addTaskAtImpl(SimpleTreeNode destinationNode, TaskWork task,
+ private void addOrderElementAtImpl(SimpleTreeNode destinationNode, OrderElement orderElement,
int position) {
- ITaskWorkContainer container = turnIntoContainerIfNeeded(destinationNode);
- container.add(position, task);
+ IOrderLineGroup container = turnIntoContainerIfNeeded(destinationNode);
+ container.add(position, orderElement);
}
- private ITaskWorkContainer turnIntoContainerIfNeeded(
+ private IOrderLineGroup turnIntoContainerIfNeeded(
SimpleTreeNode selectedForTurningIntoContainer) {
- ITaskWorkContainer parentContainer = asTaskContainer(getParent(selectedForTurningIntoContainer));
- if (selectedForTurningIntoContainer.getData() instanceof ITaskWorkContainer)
- return (ITaskWorkContainer) selectedForTurningIntoContainer
+ IOrderLineGroup parentContainer = asOrderLineGroup(getParent(selectedForTurningIntoContainer));
+ if (selectedForTurningIntoContainer.getData() instanceof IOrderLineGroup)
+ return (IOrderLineGroup) selectedForTurningIntoContainer
.getData();
- TaskWork toBeTurned = asTask(selectedForTurningIntoContainer);
- TaskWorkContainer asContainer = toBeTurned.asContainer();
+ OrderElement toBeTurned = asOrderLine(selectedForTurningIntoContainer);
+ OrderLineGroup asContainer = toBeTurned.asContainer();
parentContainer.replace(toBeTurned, asContainer);
return asContainer;
}
@@ -124,7 +125,7 @@ public class TaskTreeModel extends SimpleTreeModel {
SimpleTreeNode destination = (SimpleTreeNode) parentOfSelected
.getChildren().get(position - 1);
moveImpl(nodeToIndent, destination, destination.getChildCount());
- reloadFromProjectWork();
+ reloadFromOrder();
}
public void unindent(SimpleTreeNode nodeToUnindent) {
@@ -135,12 +136,12 @@ public class TaskTreeModel extends SimpleTreeModel {
SimpleTreeNode destination = getParent(parent);
moveImpl(nodeToUnindent, destination, destination.getChildren()
.indexOf(parent) + 1);
- reloadFromProjectWork();
+ reloadFromOrder();
}
public void move(SimpleTreeNode toBeMoved, SimpleTreeNode destination) {
moveImpl(toBeMoved, destination, destination.getChildCount());
- reloadFromProjectWork();
+ reloadFromOrder();
}
private void moveImpl(SimpleTreeNode toBeMoved, SimpleTreeNode destination,
@@ -149,7 +150,7 @@ public class TaskTreeModel extends SimpleTreeModel {
return;// it's already moved
}
removeNodeImpl(toBeMoved);
- addTaskAtImpl(destination, asTask(toBeMoved), position);
+ addOrderElementAtImpl(destination, asOrderLine(toBeMoved), position);
}
public int[] getPath(SimpleTreeNode destination) {
@@ -158,27 +159,27 @@ public class TaskTreeModel extends SimpleTreeModel {
}
public void up(SimpleTreeNode node) {
- ITaskWorkContainer taskWorkContainer = asTaskContainer(getParent(node));
- taskWorkContainer.up(asTask(node));
- reloadFromProjectWork();
+ IOrderLineGroup orderLineGroup = asOrderLineGroup(getParent(node));
+ orderLineGroup.up(asOrderLine(node));
+ reloadFromOrder();
}
public void down(SimpleTreeNode node) {
- ITaskWorkContainer taskWorkContainer = asTaskContainer(getParent(node));
- taskWorkContainer.down(asTask(node));
- reloadFromProjectWork();
+ IOrderLineGroup orderLineGroup = asOrderLineGroup(getParent(node));
+ orderLineGroup.down(asOrderLine(node));
+ reloadFromOrder();
}
- private ProjectWork getRootAsProject() {
- return (ProjectWork) getRootAsNode().getData();
+ private Order getRootAsOrder() {
+ return (Order) getRootAsNode().getData();
}
- private static TaskWork asTask(SimpleTreeNode node) {
- return (TaskWork) node.getData();
+ private static OrderElement asOrderLine(SimpleTreeNode node) {
+ return (OrderElement) node.getData();
}
- private static ITaskWorkContainer asTaskContainer(SimpleTreeNode node) {
- return (ITaskWorkContainer) node.getData();
+ private static IOrderLineGroup asOrderLineGroup(SimpleTreeNode node) {
+ return (IOrderLineGroup) node.getData();
}
private SimpleTreeNode getRootAsNode() {
@@ -187,14 +188,14 @@ public class TaskTreeModel extends SimpleTreeModel {
public void removeNode(SimpleTreeNode value) {
removeNodeImpl(value);
- reloadFromProjectWork();
+ reloadFromOrder();
}
private void removeNodeImpl(SimpleTreeNode value) {
if (value == getRootAsNode())
return;
- ITaskWorkContainer taskContainer = asTaskContainer(getParent(value));
- taskContainer.remove(asTask(value));
+ IOrderLineGroup orderLineGroup = asOrderLineGroup(getParent(value));
+ orderLineGroup.remove(asOrderLine(value));
}
}
\ No newline at end of file
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/workorders/TaskWorksTreeController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementTreeController.java
similarity index 76%
rename from navalplanner-webapp/src/main/java/org/navalplanner/web/workorders/TaskWorksTreeController.java
rename to navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementTreeController.java
index 9515f14e0..037e1a766 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/workorders/TaskWorksTreeController.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementTreeController.java
@@ -1,4 +1,4 @@
-package org.navalplanner.web.workorders;
+package org.navalplanner.web.orders;
import java.util.Date;
import java.util.HashMap;
@@ -8,9 +8,9 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
-import org.navalplanner.business.workorders.entities.ProjectWork;
-import org.navalplanner.business.workorders.entities.TaskWork;
-import org.navalplanner.business.workorders.entities.TaskWorkLeaf;
+import org.navalplanner.business.orders.entities.Order;
+import org.navalplanner.business.orders.entities.OrderElement;
+import org.navalplanner.business.orders.entities.OrderLine;
import org.navalplanner.web.common.Util;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.event.DropEvent;
@@ -29,49 +29,49 @@ import org.zkoss.zul.Treerow;
import org.zkoss.zul.api.Tree;
/**
- * Controller for {@link WorkOrganization} view of WorkOrder entities
+ * Controller for {@link OrderElement} tree view of {@link Order} entities
*
* @author Lorenzo Tilve Álvaro
* @author Manuel Rego Casasnovas
*/
-public class TaskWorksTreeController extends GenericForwardComposer {
+public class OrderElementTreeController extends GenericForwardComposer {
private Tree tree;
- private TaskWorkTreeitemRenderer renderer = new TaskWorkTreeitemRenderer();
+ private OrderElementTreeitemRenderer renderer = new OrderElementTreeitemRenderer();
private TreeViewStateSnapshot snapshotOfOpenedNodes;
- private final IProjectWorkModel projectWorkModel;
+ private final IOrderModel orderModel;
- private final TaskWorkController taskWorkController;
+ private final OrderElementController orderElementController;
- public TaskWorkTreeitemRenderer getRenderer() {
+ public OrderElementTreeitemRenderer getRenderer() {
return renderer;
}
- public TaskWorksTreeController(IProjectWorkModel projectWorkModel,
- TaskWorkController taskWorkController) {
- this.projectWorkModel = projectWorkModel;
- this.taskWorkController = taskWorkController;
+ public OrderElementTreeController(IOrderModel orderModel,
+ OrderElementController orderElementController) {
+ this.orderModel = orderModel;
+ this.orderElementController = orderElementController;
}
public void indent() {
snapshotOfOpenedNodes = TreeViewStateSnapshot.snapshotOpened(tree);
if (tree.getSelectedCount() == 1) {
- getTasksTreeModel().indent(getSelectedNode());
+ getOrderElementTreeModel().indent(getSelectedNode());
Util.reloadBindings(tree);
}
}
- public TaskTreeModel getTasksTreeModel() {
- return projectWorkModel.getTasksTreeModel();
+ public OrderElementModel getOrderElementTreeModel() {
+ return orderModel.getOrderElementTreeModel();
}
public void unindent() {
snapshotOfOpenedNodes = TreeViewStateSnapshot.snapshotOpened(tree);
if (tree.getSelectedCount() == 1) {
- getTasksTreeModel().unindent(getSelectedNode());
+ getOrderElementTreeModel().unindent(getSelectedNode());
Util.reloadBindings(tree);
}
}
@@ -79,7 +79,7 @@ public class TaskWorksTreeController extends GenericForwardComposer {
public void up() {
snapshotOfOpenedNodes = TreeViewStateSnapshot.snapshotOpened(tree);
if (tree.getSelectedCount() == 1) {
- getTasksTreeModel().up(getSelectedNode());
+ getOrderElementTreeModel().up(getSelectedNode());
Util.reloadBindings(tree);
}
}
@@ -87,7 +87,7 @@ public class TaskWorksTreeController extends GenericForwardComposer {
public void down() {
snapshotOfOpenedNodes = TreeViewStateSnapshot.snapshotOpened(tree);
if (tree.getSelectedCount() == 1) {
- getTasksTreeModel().down(getSelectedNode());
+ getOrderElementTreeModel().down(getSelectedNode());
Util.reloadBindings(tree);
}
}
@@ -104,16 +104,16 @@ public class TaskWorksTreeController extends GenericForwardComposer {
.getValue();
SimpleTreeNode toNode = (SimpleTreeNode) ((Treeitem) to.getParent())
.getValue();
- getTasksTreeModel().move(fromNode, toNode);
+ getOrderElementTreeModel().move(fromNode, toNode);
Util.reloadBindings(tree);
}
- public void addTaskWork() {
+ public void addOrderElement() {
snapshotOfOpenedNodes = TreeViewStateSnapshot.snapshotOpened(tree);
if (tree.getSelectedCount() == 1) {
- getTasksTreeModel().addTaskAt(getSelectedNode());
+ getOrderElementTreeModel().addOrderElementAt(getSelectedNode());
} else {
- getTasksTreeModel().addTask();
+ getOrderElementTreeModel().addOrderElement();
}
Util.reloadBindings(tree);
}
@@ -162,86 +162,86 @@ public class TaskWorksTreeController extends GenericForwardComposer {
}
}
- public void removeTaskWork() {
+ public void removeOrderElement() {
Set selectedItems = tree.getSelectedItems();
for (Treeitem treeItem : selectedItems) {
SimpleTreeNode value = (SimpleTreeNode) treeItem.getValue();
- getTasksTreeModel().removeNode(value);
+ getOrderElementTreeModel().removeNode(value);
}
Util.reloadBindings(tree);
}
- void doEditFor(ProjectWork projectWork) {
+ void doEditFor(Order order) {
Util.reloadBindings(tree);
}
@Override
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
- comp.setVariable("tasksTreeController", this, true);
+ comp.setVariable("orderElementTreeController", this, true);
}
- public class TaskWorkTreeitemRenderer implements TreeitemRenderer {
+ public class OrderElementTreeitemRenderer implements TreeitemRenderer {
private Map map = new HashMap();
- public void TaskWorkTreeitemRenderer() {
+ public OrderElementTreeitemRenderer() {
}
@Override
public void render(Treeitem item, Object data) throws Exception {
final SimpleTreeNode t = (SimpleTreeNode) data;
item.setValue(data);
- final TaskWork taskWork = (TaskWork) t.getData();
+ final OrderElement orderElement = (OrderElement) t.getData();
if (snapshotOfOpenedNodes != null) {
snapshotOfOpenedNodes.openIfRequired(item);
}
- // Contruct treecells
- int[] path = getTasksTreeModel().getPath(t);
+ // Construct treecells
+ int[] path = getOrderElementTreeModel().getPath(t);
Treecell cellForName = new Treecell(pathAsString(path));
cellForName.appendChild(Util.bind(new Textbox(),
new Util.Getter() {
@Override
public String get() {
- return taskWork.getName();
+ return orderElement.getName();
}
}, new Util.Setter() {
@Override
public void set(String value) {
- taskWork.setName(value);
+ orderElement.setName(value);
}
}));
Treecell cellForHours = new Treecell();
Intbox intboxHours = new Intbox();
map.put(t, intboxHours);
- if (taskWork instanceof TaskWorkLeaf) {
+ if (orderElement instanceof OrderLine) {
// If it's a leaf hours cell is editable
cellForHours.appendChild(Util.bind(intboxHours,
new Util.Getter() {
@Override
public Integer get() {
- return taskWork.getWorkHours();
+ return orderElement.getWorkHours();
}
}, new Util.Setter() {
@Override
public void set(Integer value) {
- ((TaskWorkLeaf) taskWork).setWorkHours(value);
+ ((OrderLine) orderElement).setWorkHours(value);
- List parentNodes = getTasksTreeModel()
+ List parentNodes = getOrderElementTreeModel()
.getParents(t);
- // Remove the last element becuase it's a
- // ProjectWork node, not a TaskWork
+ // Remove the last element becuase it's an
+ // Order node, not an OrderElement
parentNodes.remove(parentNodes.size() - 1);
for (SimpleTreeNode node : parentNodes) {
Intbox intbox = map.get(node);
- TaskWork parentTaskWork = (TaskWork) node
+ OrderElement parentOrderElement = (OrderElement) node
.getData();
- intbox.setValue(parentTaskWork
+ intbox.setValue(parentOrderElement
.getWorkHours());
}
}
@@ -253,7 +253,7 @@ public class TaskWorksTreeController extends GenericForwardComposer {
@Override
public Integer get() {
- return taskWork.getWorkHours();
+ return orderElement.getWorkHours();
}
}));
}
@@ -263,13 +263,13 @@ public class TaskWorksTreeController extends GenericForwardComposer {
@Override
public Date get() {
- return taskWork.getInitDate();
+ return orderElement.getInitDate();
}
}, new Util.Setter() {
@Override
public void set(Date value) {
- taskWork.setInitDate(value);
+ orderElement.setInitDate(value);
}
}));
Treecell tcDateEnd = new Treecell();
@@ -278,13 +278,13 @@ public class TaskWorksTreeController extends GenericForwardComposer {
@Override
public Date get() {
- return taskWork.getEndDate();
+ return orderElement.getEndDate();
}
}, new Util.Setter() {
@Override
public void set(Date value) {
- taskWork.setEndDate(value);
+ orderElement.setEndDate(value);
}
}));
@@ -326,7 +326,7 @@ public class TaskWorksTreeController extends GenericForwardComposer {
@Override
public void onEvent(Event event) throws Exception {
- taskWorkController.openPopup(taskWork);
+ orderElementController.openPopup(orderElement);
}
});
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java
new file mode 100644
index 000000000..e0f38e98e
--- /dev/null
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java
@@ -0,0 +1,102 @@
+package org.navalplanner.web.orders;
+
+import java.util.Date;
+import java.util.List;
+
+import org.apache.commons.lang.Validate;
+import org.hibernate.validator.ClassValidator;
+import org.hibernate.validator.InvalidValue;
+import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
+import org.navalplanner.business.common.exceptions.ValidationException;
+import org.navalplanner.business.orders.entities.IOrderLineGroup;
+import org.navalplanner.business.orders.entities.Order;
+import org.navalplanner.business.orders.services.IOrderService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * Model for UI operations related to {@link Order}.
+ * @author Óscar González Fernández
+ */
+@Component
+@Scope(BeanDefinition.SCOPE_PROTOTYPE)
+public class OrderModel implements IOrderModel {
+
+ private final IOrderService orderService;
+
+ private Order order;
+
+ private ClassValidator orderValidator = new ClassValidator(
+ Order.class);
+
+ private OrderElementModel orderElementTreeModel;
+
+ @Autowired
+ public OrderModel(IOrderService orderService) {
+ Validate.notNull(orderService);
+ this.orderService = orderService;
+ }
+
+ @Override
+ @Transactional(readOnly = true)
+ public List getOrders() {
+ return orderService.getOrders();
+ }
+
+ @Override
+ @Transactional(readOnly = true)
+ public void prepareEditFor(Order order) {
+ Validate.notNull(order);
+ try {
+ this.order = orderService.find(order.getId());
+ this.orderElementTreeModel = new OrderElementModel(this.order);
+ } catch (InstanceNotFoundException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public void prepareForCreate() {
+ this.order = new Order();
+ this.orderElementTreeModel = new OrderElementModel(this.order);
+ this.order.setInitDate(new Date());
+ }
+
+ @Override
+ @Transactional
+ public void save() throws ValidationException {
+ InvalidValue[] invalidValues = orderValidator
+ .getInvalidValues(order);
+ if (invalidValues.length > 0)
+ throw new ValidationException(invalidValues);
+ this.orderService.save(order);
+ }
+
+ @Override
+ public IOrderLineGroup getOrder() {
+ return order;
+ }
+
+ @Override
+ public void remove(Order order) {
+ try {
+ this.orderService.remove(order);
+ } catch (InstanceNotFoundException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public void prepareForRemove(Order order) {
+ this.order = order;
+ }
+
+ @Override
+ public OrderElementModel getOrderElementTreeModel() {
+ return orderElementTreeModel;
+ }
+
+}
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/workorders/IProjectWorkModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/workorders/IProjectWorkModel.java
deleted file mode 100644
index 277dc36c2..000000000
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/workorders/IProjectWorkModel.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.navalplanner.web.workorders;
-
-import java.util.List;
-
-import org.navalplanner.business.common.exceptions.ValidationException;
-import org.navalplanner.business.workorders.entities.ITaskWorkContainer;
-import org.navalplanner.business.workorders.entities.ProjectWork;
-
-/**
- * Contract for {@link ProjectWorkModel}
- * @author Óscar González Fernández
- */
-public interface IProjectWorkModel {
-
- List getProjects();
-
- void prepareEditFor(ProjectWork project);
-
- void prepareForCreate();
-
- void save() throws ValidationException;
-
- ITaskWorkContainer getProject();
-
- void remove(ProjectWork projectWork);
-
- void prepareForRemove(ProjectWork project);
-
- TaskTreeModel getTasksTreeModel();
-
-}
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/workorders/ProjectWorkModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/workorders/ProjectWorkModel.java
deleted file mode 100644
index d0791f707..000000000
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/workorders/ProjectWorkModel.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package org.navalplanner.web.workorders;
-
-import java.util.Date;
-import java.util.List;
-
-import org.apache.commons.lang.Validate;
-import org.hibernate.validator.ClassValidator;
-import org.hibernate.validator.InvalidValue;
-import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
-import org.navalplanner.business.common.exceptions.ValidationException;
-import org.navalplanner.business.workorders.entities.ITaskWorkContainer;
-import org.navalplanner.business.workorders.entities.ProjectWork;
-import org.navalplanner.business.workorders.services.IProjectWorkService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.config.BeanDefinition;
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-
-/**
- * Model for UI operations related to {@link ProjectWork}.
- * @author Óscar González Fernández
- */
-@Component
-@Scope(BeanDefinition.SCOPE_PROTOTYPE)
-public class ProjectWorkModel implements IProjectWorkModel {
-
- private final IProjectWorkService projectService;
-
- private ProjectWork project;
-
- private ClassValidator projectValidator = new ClassValidator(
- ProjectWork.class);
-
- private TaskTreeModel tasksTreeModel;
-
- @Autowired
- public ProjectWorkModel(IProjectWorkService projectService) {
- Validate.notNull(projectService);
- this.projectService = projectService;
- }
-
- @Override
- @Transactional(readOnly = true)
- public List getProjects() {
- return projectService.getProjectWorks();
- }
-
- @Override
- @Transactional(readOnly = true)
- public void prepareEditFor(ProjectWork project) {
- Validate.notNull(project);
- try {
- this.project = projectService.find(project.getId());
- this.tasksTreeModel = new TaskTreeModel(this.project);
- } catch (InstanceNotFoundException e) {
- throw new RuntimeException(e);
- }
- }
-
- @Override
- public void prepareForCreate() {
- this.project = new ProjectWork();
- this.tasksTreeModel = new TaskTreeModel(this.project);
- this.project.setInitDate(new Date());
- }
-
- @Override
- @Transactional
- public void save() throws ValidationException {
- InvalidValue[] invalidValues = projectValidator
- .getInvalidValues(project);
- if (invalidValues.length > 0)
- throw new ValidationException(invalidValues);
- this.projectService.save(project);
- }
-
- @Override
- public ITaskWorkContainer getProject() {
- return project;
- }
-
- @Override
- public void remove(ProjectWork projectWork) {
- try {
- this.projectService.remove(projectWork);
- } catch (InstanceNotFoundException e) {
- throw new RuntimeException(e);
- }
- }
-
- @Override
- public void prepareForRemove(ProjectWork project) {
- this.project = project;
- }
-
- @Override
- public TaskTreeModel getTasksTreeModel() {
- return tasksTreeModel;
- }
-
-}
diff --git a/navalplanner-webapp/src/main/webapp/WEB-INF/i3-label.properties b/navalplanner-webapp/src/main/webapp/WEB-INF/i3-label.properties
index 763c2febc..287427d58 100644
--- a/navalplanner-webapp/src/main/webapp/WEB-INF/i3-label.properties
+++ b/navalplanner-webapp/src/main/webapp/WEB-INF/i3-label.properties
@@ -29,5 +29,5 @@ mainmenu.help=Axuda
mainmenu.about=Acerca de
mainmenu.aclunaga=Aclunaga
mainmenu.manage_criterions=Administrar criterios
-mainmenu.workorders=Traballos
-mainmenu.list_projects=Proxectos
\ No newline at end of file
+mainmenu.orders=Pedidos
+mainmenu.list_orders=Lista de pedidos
\ No newline at end of file
diff --git a/navalplanner-webapp/src/main/webapp/WEB-INF/i3-label_en_US.properties b/navalplanner-webapp/src/main/webapp/WEB-INF/i3-label_en_US.properties
index 9136891e7..6b0b7ba6d 100644
--- a/navalplanner-webapp/src/main/webapp/WEB-INF/i3-label_en_US.properties
+++ b/navalplanner-webapp/src/main/webapp/WEB-INF/i3-label_en_US.properties
@@ -29,5 +29,5 @@ mainmenu.help=Help
mainmenu.about=About
mainmenu.aclunaga=Aclunaga
mainmenu.manage_criterions=Manage criterions
-mainmenu.workorders=Work
-mainmenu.list_projects=Projects
\ No newline at end of file
+mainmenu.orders=Orders
+mainmenu.list_orders=Orders list
\ No newline at end of file
diff --git a/navalplanner-webapp/src/main/webapp/common/layout/template.zul b/navalplanner-webapp/src/main/webapp/common/layout/template.zul
index 2a7ebcd72..50b561b2b 100644
--- a/navalplanner-webapp/src/main/webapp/common/layout/template.zul
+++ b/navalplanner-webapp/src/main/webapp/common/layout/template.zul
@@ -36,10 +36,10 @@
-