diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java index 0c4fc4b94..726aaf335 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java @@ -136,10 +136,18 @@ public class GanttDiagramGraph { enforceEndDate(incoming); } + @SuppressWarnings("unchecked") private void enforceEndDate(Set incoming) { - Date endDate = task.getEndDate(); - Date newEnd = Dependency.calculateEnd(task, endDate, incoming); - if (!endDate.equals(newEnd)) { + Constraint currentLength = task.getCurrentLengthConstraint(); + Constraint respectStartDate = task + .getEndDateBiggerThanStartDate(); + Date newEnd = Constraint. initialValue(null) + .withConstraints(currentLength) + .withConstraints(Dependency + .getEndConstraints(incoming)) + .withConstraints(respectStartDate) + .apply(); + if (!task.getEndDate().equals(newEnd)) { task.setEndDate(newEnd); } }