From f09771b001da37a4ac013c214161c9817d13c092 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Tue, 10 May 2011 16:39:34 +0200 Subject: [PATCH] [Bug #1048] Fix bug When a task is fixed, no constraints were preserved and the last check for all constraints was avoided. Now although the task is not moved due to be fixed, the final check with all constraints is done. FEA: ItEr74S04BugFixing --- .../zkoss/ganttz/data/GanttDiagramGraph.java | 51 +++++++++++-------- 1 file changed, 31 insertions(+), 20 deletions(-) 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 baed8c1c4..087a0cfdf 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java @@ -1043,6 +1043,23 @@ public class GanttDiagramGraph> implements abstract class PositionRestrictions { + private final GanttDate start; + + private final GanttDate end; + + PositionRestrictions(GanttDate start, GanttDate end) { + this.start = start; + this.end = end; + } + + GanttDate getStart() { + return start; + } + + GanttDate getEnd() { + return end; + } + abstract List> getStartConstraints(); abstract List> getEndConstraints(); @@ -1053,6 +1070,12 @@ public class GanttDiagramGraph> implements private final class NoRestrictions extends PositionRestrictions { + + public NoRestrictions(TaskPoint taskPoint) { + super(adapter.getStartDate(taskPoint.task), adapter + .getEndDateFor(taskPoint.task)); + } + @Override List> getStartConstraints() { return Collections.emptyList(); @@ -1067,10 +1090,11 @@ public class GanttDiagramGraph> implements boolean satisfies(PositionRestrictions restrictions) { return true; } + } PositionRestrictions noRestrictions() { - return new NoRestrictions(); + return new NoRestrictions(taskPoint); } DatesBasedPositionRestrictions biggerThan(GanttDate start, GanttDate end) { @@ -1089,14 +1113,11 @@ public class GanttDiagramGraph> implements private Constraint startConstraint; private Constraint endConstraint; - private final GanttDate start; - private final GanttDate end; public DatesBasedPositionRestrictions( ComparisonType comparisonType, GanttDate start, GanttDate end) { - this.start = start; - this.end = end; + super(start, end); this.startConstraint = ConstraintOnComparableValues .instantiate(comparisonType, start); this.endConstraint = ConstraintOnComparableValues.instantiate( @@ -1112,8 +1133,8 @@ public class GanttDiagramGraph> implements } private boolean satisfies(DatesBasedPositionRestrictions other) { - return startConstraint.isSatisfiedBy(other.start) - && endConstraint.isSatisfiedBy(other.end); + return startConstraint.isSatisfiedBy(other.getStart()) + && endConstraint.isSatisfiedBy(other.getEnd()); } @Override @@ -1163,7 +1184,7 @@ public class GanttDiagramGraph> implements this.task = taskPoint.task; } - private PositionRestrictions resultingRestrictions = new NoRestrictions(); + private PositionRestrictions resultingRestrictions = noRestrictions(); protected PositionRestrictions applyConstraintTo( PositionRestrictions restrictions) { @@ -1180,17 +1201,8 @@ public class GanttDiagramGraph> implements public void checkSatisfiesResult(PositionRestrictions finalResult) { super.checkSatisfiesResult(finalResult); - if (DatesBasedPositionRestrictions.class - .isInstance(finalResult)) { - checkConstraintsAgainst(DatesBasedPositionRestrictions.class - .cast(finalResult)); - } - } - - private void checkConstraintsAgainst( - DatesBasedPositionRestrictions finalResult) { - checkStartConstraints(finalResult.start); - checkEndConstraints(finalResult.end); + checkStartConstraints(finalResult.getStart()); + checkEndConstraints(finalResult.getEnd()); } private void checkStartConstraints(GanttDate finalStart) { @@ -1198,7 +1210,6 @@ public class GanttDiagramGraph> implements .checkSatisfyResult(getStartConstraints(), finalStart); } - private void checkEndConstraints(GanttDate finalEnd) { Constraint.checkSatisfyResult(getEndConstraints(), finalEnd); }