ItEr17S10CUCreacionProxectoPlanificacionItEr16S12: Changing the adapter so changes applied in the planner are written to the corresponding TaskElement.

This commit is contained in:
Óscar González Fernández 2009-07-20 15:37:44 +02:00 committed by Javier Moran Rua
parent b9f13d3457
commit 689de93b24
3 changed files with 97 additions and 16 deletions

View file

@ -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<Dependency> dependenciesWithThisDestination = new HashSet<Dependency>();
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");

View file

@ -7,7 +7,8 @@
<generator class="native" />
</id>
<version name="version" type="long"></version>
<property name="name" />
<property name="notes"/>
<property name="startDate" type="timestamp" />
<property name="endDate" type="timestamp" />

View file

@ -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<TaskElement> dependency) {
return true;
}
}
}