From 31e2a04c87eee98ccb3005b4c59f50361dfbb85a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Fri, 1 Oct 2010 17:40:24 +0200 Subject: [PATCH] Segregate the methods for updating the task from the UI This is intented for segregating the methods that are intended to be used from the UI that will provide LocalDates from the the methods that will update the dates directly. FEA: ItEr61S08TimeUnitConfigurablePlanning --- .../java/org/zkoss/ganttz/LeftTasksTreeRow.java | 5 +++-- .../main/java/org/zkoss/ganttz/TaskComponent.java | 4 ++-- .../java/org/zkoss/ganttz/TaskEditFormComposer.java | 3 ++- .../ganttz/data/DefaultFundamentalProperties.java | 5 +++-- .../ganttz/data/ITaskFundamentalProperties.java | 3 ++- .../src/main/java/org/zkoss/ganttz/data/Task.java | 13 +++++++------ .../business/planner/entities/Task.java | 2 +- .../business/planner/entities/TaskElement.java | 4 ++-- .../business/planner/entities/TaskMilestone.java | 3 ++- .../planner/entities/TaskStartConstraint.java | 5 +++-- .../org/navalplanner/web/common/TemplateModel.java | 2 +- .../LimitingResourceQueueModel.java | 2 +- .../web/planner/TaskElementAdapter.java | 7 ++++++- 13 files changed, 35 insertions(+), 23 deletions(-) diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/LeftTasksTreeRow.java b/ganttzk/src/main/java/org/zkoss/ganttz/LeftTasksTreeRow.java index 0bc837267..b2a403f8f 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/LeftTasksTreeRow.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/LeftTasksTreeRow.java @@ -29,6 +29,7 @@ import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.joda.time.LocalDate; import org.zkoss.ganttz.adapters.IDisabilityConfiguration; import org.zkoss.ganttz.data.Task; import org.zkoss.ganttz.util.ComponentsFinder; @@ -383,10 +384,10 @@ public class LeftTasksTreeRow extends GenericForwardComposer { task.setName(getNameBox().getValue()); } else if (updatedComponent == getStartDateBox()) { Date begin = getStartDateBox().getValue(); - task.moveTo(begin); + task.moveTo(LocalDate.fromDateFields(begin)); } else if (updatedComponent == getEndDateBox()) { Date newEnd = getEndDateBox().getValue(); - task.setEndDate(newEnd); + task.resizeTo(LocalDate.fromDateFields(newEnd)); } } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java b/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java index b338a9d9c..88f7e32d0 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java @@ -342,7 +342,7 @@ public class TaskComponent extends Div implements AfterCompose { void doUpdatePosition(String leftX, String topY) { Date startBeforeMoving = this.task.getBeginDate(); LocalDate newPosition = getMapper().toDate(stripPx(leftX)); - this.task.moveTo(newPosition.toDateTimeAtStartOfDay().toDate()); + this.task.moveTo(newPosition); boolean remainsInOriginalPosition = this.task.getBeginDate().equals( startBeforeMoving); if (remainsInOriginalPosition) { @@ -354,7 +354,7 @@ public class TaskComponent extends Div implements AfterCompose { int pixels = stripPx(size); DateTime end = new DateTime(this.task.getBeginDate().getTime()) .plus(getMapper().toDuration(pixels)); - this.task.setEndDate(end.toDate()); + this.task.resizeTo(end.toLocalDate()); updateWidth(); } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/TaskEditFormComposer.java b/ganttzk/src/main/java/org/zkoss/ganttz/TaskEditFormComposer.java index 27064307b..19587544d 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/TaskEditFormComposer.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/TaskEditFormComposer.java @@ -22,6 +22,7 @@ package org.zkoss.ganttz; import java.util.Date; +import org.joda.time.LocalDate; import org.zkoss.ganttz.data.Task; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.util.GenericForwardComposer; @@ -107,7 +108,7 @@ public class TaskEditFormComposer extends GenericForwardComposer { private void copyFromDTO(TaskDTO taskDTO, Task currentTask) { currentTask.setName(taskDTO.name); currentTask.setBeginDate(taskDTO.beginDate); - currentTask.setEndDate(taskDTO.endDate); + currentTask.resizeTo(LocalDate.fromDateFields(taskDTO.endDate)); currentTask.setNotes(taskDTO.notes); currentTask.setDeadline(taskDTO.deadlineDate); } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/DefaultFundamentalProperties.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/DefaultFundamentalProperties.java index 0fbd14d44..090de3246 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/DefaultFundamentalProperties.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/DefaultFundamentalProperties.java @@ -25,6 +25,7 @@ import java.util.Collections; import java.util.Date; import java.util.List; +import org.joda.time.LocalDate; import org.zkoss.ganttz.data.constraint.Constraint; /** @@ -154,8 +155,8 @@ public class DefaultFundamentalProperties implements ITaskFundamentalProperties } @Override - public void moveTo(Date date) { - setBeginDate(date); + public void moveTo(LocalDate date) { + setBeginDate(date.toDateTimeAtStartOfDay().toDate()); } @Override diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/ITaskFundamentalProperties.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/ITaskFundamentalProperties.java index 48ae51486..9fa111e79 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/ITaskFundamentalProperties.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/ITaskFundamentalProperties.java @@ -24,6 +24,7 @@ import java.math.BigDecimal; import java.util.Date; import java.util.List; +import org.joda.time.LocalDate; import org.zkoss.ganttz.data.constraint.Constraint; /** @@ -76,7 +77,7 @@ public interface ITaskFundamentalProperties { List> getStartConstraints(); - public void moveTo(Date date); + public void moveTo(LocalDate date); public boolean isSubcontracted(); diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/Task.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/Task.java index f51edbb33..4e0614fe4 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/Task.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/Task.java @@ -180,10 +180,6 @@ public abstract class Task implements ITaskFundamentalProperties { return new Date(fundamentalProperties.getBeginDate().getTime()); } - public void setLengthMilliseconds(long lengthMilliseconds) { - setEndDate(new Date(getBeginDate().getTime() + lengthMilliseconds)); - } - public long getLengthMilliseconds() { return getEndDate().getTime() - getBeginDate().getTime(); } @@ -252,6 +248,10 @@ public abstract class Task implements ITaskFundamentalProperties { fundamentalProperties.getEndDate()); } + public void resizeTo(LocalDate date) { + setEndDate(date.toDateTimeAtStartOfDay().toDate()); + } + public void removed() { setVisible(false); } @@ -292,11 +292,12 @@ public abstract class Task implements ITaskFundamentalProperties { return fundamentalProperties.getResourcesText(); } - public void moveTo(Date date) { + public void moveTo(LocalDate date) { Date previousStart = getBeginDate(); Date previousEnd = getEndDate(); fundamentalProperties.moveTo(date); - dependenciesEnforcerHook.setStartDate(previousStart, previousEnd, date); + dependenciesEnforcerHook.setStartDate(previousStart, previousEnd, date + .toDateTimeAtStartOfDay().toDate()); } @Override diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/Task.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/Task.java index 2588d3707..6972a9bcc 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/Task.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/Task.java @@ -404,7 +404,7 @@ public class Task extends TaskElement implements ITaskLeafConstraint { } } - public void explicityMoved(Date date) { + public void explicityMoved(LocalDate date) { getStartConstraint().explicityMovedTo(date); } 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 5e1ddfa56..2e5a9e2c4 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 @@ -262,13 +262,13 @@ public abstract class TaskElement extends BaseEntity { * Sets the startDate to newStartDate. It can update the endDate * @param newStartDate */ - public void moveTo(Scenario scenario, Date newStartDate) { + public void moveTo(Scenario scenario, LocalDate newStartDate) { if (newStartDate == null) { return; } final boolean sameDay = this.startDate.areSameDay(newStartDate); long durationMilliseconds = getLengthMilliseconds(); - setStartDate(newStartDate); + setIntraDayStartDate(IntraDayDate.startOfDay(newStartDate)); DateTime newEnd = this.startDate.toDateTimeAtStartOfDay().plus( durationMilliseconds); this.endDate = IntraDayDate.create(newEnd.toLocalDate(), diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskMilestone.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskMilestone.java index 0a5a0745b..0854850ec 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskMilestone.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskMilestone.java @@ -29,6 +29,7 @@ import org.apache.commons.lang.Validate; import org.hibernate.validator.AssertTrue; import org.joda.time.DateTime; import org.joda.time.Days; +import org.joda.time.LocalDate; import org.navalplanner.business.scenarios.entities.Scenario; /** @@ -144,7 +145,7 @@ public class TaskMilestone extends TaskElement implements ITaskLeafConstraint { return false; } - public void explicityMoved(Date date) { + public void explicityMoved(LocalDate date) { getStartConstraint().explicityMovedTo(date); } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskStartConstraint.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskStartConstraint.java index d2925f262..c8a6ee6db 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskStartConstraint.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskStartConstraint.java @@ -22,6 +22,7 @@ package org.navalplanner.business.planner.entities; import java.util.Date; import org.apache.commons.lang.Validate; +import org.joda.time.LocalDate; /** * Component class that encapsulates a {@link StartConstraintType} and its @@ -42,10 +43,10 @@ public class TaskStartConstraint { : StartConstraintType.AS_SOON_AS_POSSIBLE; } - public void explicityMovedTo(Date date) { + public void explicityMovedTo(LocalDate date) { Validate.notNull(date); startConstraintType = startConstraintType.newTypeAfterMoved(); - constraintDate = new Date(date.getTime()); + constraintDate = date.toDateTimeAtStartOfDay().toDate(); } public Date getConstraintDate() { diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/TemplateModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/TemplateModel.java index a3fe50ca0..8c09aed08 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/TemplateModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/TemplateModel.java @@ -333,7 +333,7 @@ public class TemplateModel implements ITemplateModel { @Override public void setStartDateFor(TaskElement task, Date newStart) { - task.moveTo(scenario, newStart); + task.moveTo(scenario, LocalDate.fromDateFields(newStart)); } @Override diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourceQueueModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourceQueueModel.java index 0fec46bb8..1400caba6 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourceQueueModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourceQueueModel.java @@ -699,7 +699,7 @@ public class LimitingResourceQueueModel implements ILimitingResourceQueueModel { LocalDate endDate) { task.setStartDate(toDate(startDate)); task.setEndDate(toDate(endDate)); - task.explicityMoved(toDate(startDate)); + task.explicityMoved(startDate); } private Date toDate(LocalDate date) { 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 b8a793df6..a2b9c4948 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 @@ -184,6 +184,11 @@ public class TaskElementAdapter implements ITaskElementAdapter { @Override public void setBeginDate(final Date beginDate) { + setBeginDate(beginDate != null ? LocalDate + .fromDateFields(beginDate) : null); + } + + private void setBeginDate(final LocalDate beginDate) { transactionService .runOnReadOnlyTransaction(new IOnTransaction() { @Override @@ -518,7 +523,7 @@ public class TaskElementAdapter implements ITaskElementAdapter { } @Override - public void moveTo(Date date) { + public void moveTo(LocalDate date) { setBeginDate(date); if (taskElement instanceof Task) { Task task = (Task) taskElement;