From ec11dab825ab5122db91f0926a7ca54fba4b6153 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Wed, 15 Dec 2010 12:56:51 +0100 Subject: [PATCH] Notify when a constraint is satisfied too FEA: ItEr65S06BugFixing --- .../org/zkoss/ganttz/DependencyComponent.java | 6 +++++ .../java/org/zkoss/ganttz/TaskComponent.java | 6 +++++ .../ganttz/data/constraint/Constraint.java | 15 +++++++---- .../util/ConstraintViolationNotificator.java | 17 +++++++++--- .../data/constraint/ConstraintTest.java | 27 +++++++++++++++++++ .../LimitingDependencyComponent.java | 7 +++++ 6 files changed, 69 insertions(+), 9 deletions(-) diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/DependencyComponent.java b/ganttzk/src/main/java/org/zkoss/ganttz/DependencyComponent.java index 626f04cac..2a0450403 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/DependencyComponent.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/DependencyComponent.java @@ -69,6 +69,12 @@ public class DependencyComponent extends XulElement implements AfterCompose { GanttDate value) { // TODO mark graphically dependency as violated } + + @Override + public void constraintSatisfied(Constraint constraint, + GanttDate value) { + // TODO mark graphically dependency as not violated + } }; this.dependency.addConstraintViolationListener(violationListener); } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java b/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java index aece0f785..d7de89169 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java @@ -202,6 +202,12 @@ public class TaskComponent extends Div implements AfterCompose { GanttDate value) { // TODO mark graphically task as violated } + + @Override + public void constraintSatisfied(Constraint constraint, + GanttDate value) { + // TODO mark graphically dependency as not violated + } }; this.task.addConstraintViolationListener(taskViolationListener); reloadResourcesTextRequested = new IReloadResourcesTextRequested() { diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/constraint/Constraint.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/constraint/Constraint.java index c7a35b544..d627e66b7 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/constraint/Constraint.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/constraint/Constraint.java @@ -84,7 +84,10 @@ public abstract class Constraint { } public interface IConstraintViolationListener { + public void constraintViolated(Constraint constraint, T value); + + public void constraintSatisfied(Constraint constraint, T value); } public static class ConstraintBuilder { @@ -185,19 +188,21 @@ public abstract class Constraint { public abstract boolean isSatisfiedBy(T value); public void checkSatisfiesResult(T finalResult) { - if (!isSatisfiedBy(finalResult)) { - fireNotSatisfied(finalResult); - } + fireSatisfaction(finalResult, isSatisfiedBy(finalResult)); } - private void fireNotSatisfied(final T value) { + private void fireSatisfaction(final T value, final boolean satisfied) { weakListeners .fireEvent(new IListenerNotification>() { @Override public void doNotify( IConstraintViolationListener listener) { - listener.constraintViolated(Constraint.this, value); + if (satisfied) { + listener.constraintSatisfied(Constraint.this, value); + } else { + listener.constraintViolated(Constraint.this, value); + } } }); } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/util/ConstraintViolationNotificator.java b/ganttzk/src/main/java/org/zkoss/ganttz/util/ConstraintViolationNotificator.java index 1890cbf3d..98e69a254 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/util/ConstraintViolationNotificator.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/util/ConstraintViolationNotificator.java @@ -42,7 +42,12 @@ public class ConstraintViolationNotificator { @Override public void constraintViolated(Constraint constraint, T value) { - fireConstraintViolated(constraint, value); + fireConstraint(constraint, value, false); + } + + @Override + public void constraintSatisfied(Constraint constraint, T value) { + fireConstraint(constraint, value, true); } }; @@ -58,15 +63,19 @@ public class ConstraintViolationNotificator { return constraint; } - private void fireConstraintViolated(final Constraint constraint, - final T value) { + private void fireConstraint(final Constraint constraint, final T value, + final boolean satisfied) { constraintViolationListeners .fireEvent(new IListenerNotification>() { @Override public void doNotify( IConstraintViolationListener listener) { - listener.constraintViolated(constraint, value); + if (satisfied) { + listener.constraintSatisfied(constraint, value); + } else { + listener.constraintViolated(constraint, value); + } } }); } diff --git a/ganttzk/src/test/java/org/zkoss/ganttz/data/constraint/ConstraintTest.java b/ganttzk/src/test/java/org/zkoss/ganttz/data/constraint/ConstraintTest.java index 699223f0e..f53604d7a 100644 --- a/ganttzk/src/test/java/org/zkoss/ganttz/data/constraint/ConstraintTest.java +++ b/ganttzk/src/test/java/org/zkoss/ganttz/data/constraint/ConstraintTest.java @@ -131,11 +131,38 @@ public class ConstraintTest { Constraint constraint, Integer value) { constraintViolated[0] = constraint; } + + @Override + public void constraintSatisfied( + Constraint constraint, Integer value) { + } }); Constraint.apply(6, biggerThanFive, lessThanFive); assertThat(constraintViolated[0], equalTo(biggerThanFive)); } + @Test + @SuppressWarnings("unchecked") + public void theSatisfiedConstraintsNotifiesItsListeners() { + final Constraint[] constraintSatisfied = new Constraint[1]; + biggerThanFive + .addConstraintViolationListener(new IConstraintViolationListener() { + + @Override + public void constraintViolated( + Constraint constraint, Integer value) { + } + + @Override + public void constraintSatisfied( + Constraint constraint, Integer value) { + constraintSatisfied[0] = constraint; + } + }); + Constraint.apply(6, biggerThanFive); + assertThat(constraintSatisfied[0], equalTo(biggerThanFive)); + } + @SuppressWarnings("unchecked") @Test public void theApplicationCanBeDoneUsingAFluentInterface() { diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingDependencyComponent.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingDependencyComponent.java index cec138861..3095fc350 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingDependencyComponent.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingDependencyComponent.java @@ -70,6 +70,13 @@ public class LimitingDependencyComponent extends XulElement implements Date value) { // TODO mark graphically dependency as violated } + + @Override + public void constraintSatisfied(Constraint constraint, + Date value) { + // TODO mark graphically dependency as not violated + + } }; // this.dependency.addConstraintViolationListener(violationListener); }