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;