From 689de93b24259e03d73c404ecac6a7bbe01b5758 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Mon, 20 Jul 2009 15:37:44 +0200 Subject: [PATCH] ItEr17S10CUCreacionProxectoPlanificacionItEr16S12: Changing the adapter so changes applied in the planner are written to the corresponding TaskElement. --- .../planner/entities/TaskElement.java | 20 +++++ .../business/planner/entities/Tasks.hbm.xml | 3 +- .../web/planner/TaskElementAdapter.java | 90 +++++++++++++++---- 3 files changed, 97 insertions(+), 16 deletions(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskElement.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskElement.java index 2fb03ac30..f69ab2365 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskElement.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskElement.java @@ -23,6 +23,10 @@ public abstract class TaskElement { private Date endDate; + private String name; + + private String notes; + @NotNull private OrderElement orderElement; @@ -30,6 +34,22 @@ public abstract class TaskElement { private Set dependenciesWithThisDestination = new HashSet(); + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNotes() { + return notes; + } + + public void setNotes(String notes) { + this.notes = notes; + } + public void setOrderElement(OrderElement orderElement) throws IllegalArgumentException, IllegalStateException { Validate.notNull(orderElement, "orderElement must be not null"); diff --git a/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/Tasks.hbm.xml b/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/Tasks.hbm.xml index d7f18954e..7069d0ca1 100644 --- a/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/Tasks.hbm.xml +++ b/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/Tasks.hbm.xml @@ -7,7 +7,8 @@ - + + diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/TaskElementAdapter.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/TaskElementAdapter.java index c2177d695..0cac71b03 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/TaskElementAdapter.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/TaskElementAdapter.java @@ -1,11 +1,11 @@ package org.navalplanner.web.planner; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Set; import org.navalplanner.business.orders.entities.Order; -import org.navalplanner.business.orders.entities.OrderElement; import org.navalplanner.business.planner.entities.Dependency; import org.navalplanner.business.planner.entities.TaskElement; import org.navalplanner.business.planner.entities.Dependency.Type; @@ -13,7 +13,6 @@ import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import org.zkoss.ganttz.adapters.DomainDependency; -import org.zkoss.ganttz.util.DefaultFundamentalProperties; import org.zkoss.ganttz.util.DependencyType; import org.zkoss.ganttz.util.ITaskFundamentalProperties; @@ -38,20 +37,81 @@ public class TaskElementAdapter implements ITaskElementAdapter { public TaskElementAdapter() { } + private class TaskElementWrapper implements ITaskFundamentalProperties { + + private final TaskElement taskElement; + private long lengthMilliseconds; + + protected TaskElementWrapper(TaskElement taskElement) { + this.taskElement = taskElement; + this.lengthMilliseconds = taskElement.getEndDate().getTime() + - taskElement.getStartDate().getTime(); + } + + @Override + public void setName(String name) { + taskElement.setName(name); + } + + @Override + public void setNotes(String notes) { + taskElement.setNotes(notes); + } + + @Override + public String getName() { + return taskElement.getName(); + } + + @Override + public String getNotes() { + return taskElement.getNotes(); + } + + @Override + public Date getBeginDate() { + return taskElement.getStartDate(); + } + + @Override + public long getLengthMilliseconds() { + return lengthMilliseconds; + } + + @Override + public void setBeginDate(Date beginDate) { + taskElement.setStartDate(beginDate); + updateEndDate(); + } + + @Override + public void setLengthMilliseconds(long lengthMilliseconds) { + this.lengthMilliseconds = lengthMilliseconds; + updateEndDate(); + } + + private void updateEndDate() { + taskElement.setEndDate(new Date(getBeginDate().getTime() + + this.lengthMilliseconds)); + } + + } + @Override public ITaskFundamentalProperties adapt(final TaskElement taskElement) { - // FIXME We'll need a custom ITaskFundamentalProperties - // implementation to edit the taskElement - - DefaultFundamentalProperties result = new DefaultFundamentalProperties(); - result.setName(taskElement.getOrderElement().getName()); - result.setBeginDate(taskElement.getStartDate() != null ? taskElement - .getStartDate() : order.getInitDate()); - OrderElement orderElement = taskElement.getOrderElement(); - Integer workHours = orderElement.getWorkHours(); - result.setLengthMilliseconds(workHours * 3600l * 1000); - result.setNotes(null); - return result; + if (taskElement.getName() == null) { + taskElement.setName(taskElement.getOrderElement().getName()); + } + if (taskElement.getStartDate() == null) { + taskElement.setStartDate(order.getInitDate()); + } + if (taskElement.getEndDate() == null) { + Integer workHours = taskElement.getOrderElement().getWorkHours(); + long endDateTime = taskElement.getStartDate().getTime() + + (workHours * 3600l * 1000); + taskElement.setEndDate(new Date(endDateTime)); + } + return new TaskElementWrapper(taskElement); } @Override @@ -107,4 +167,4 @@ public class TaskElementAdapter implements ITaskElementAdapter { public boolean canAddDependency(DomainDependency dependency) { return true; } -} \ No newline at end of file +}