diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/constraint/DateConstraint.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/constraint/DateConstraint.java index 97cbeec50..86c87600b 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/constraint/DateConstraint.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/constraint/DateConstraint.java @@ -34,6 +34,13 @@ public abstract class DateConstraint extends Constraint { return new BiggerOrEqualThan(date); } + public static Constraint equalTo(Date date) { + if (date == null) { + return Constraint.voidConstraint(); + } + return new EqualTo(date); + } + private long value; protected long getValue() { @@ -62,6 +69,22 @@ public abstract class DateConstraint extends Constraint { protected abstract boolean isSatisfiedBy(Long time); + static final class EqualTo extends DateConstraint { + EqualTo(Date date) { + super(date); + } + + @Override + protected long applyConstraintTo(Long time) { + return getValue(); + } + + @Override + protected boolean isSatisfiedBy(Long time) { + return getValue() == time; + } + } + static class BiggerOrEqualThan extends DateConstraint { protected BiggerOrEqualThan(Date date) { diff --git a/ganttzk/src/test/java/org/zkoss/ganttz/data/constraint/DateConstraintTest.java b/ganttzk/src/test/java/org/zkoss/ganttz/data/constraint/DateConstraintTest.java index e22173b5e..644b88810 100644 --- a/ganttzk/src/test/java/org/zkoss/ganttz/data/constraint/DateConstraintTest.java +++ b/ganttzk/src/test/java/org/zkoss/ganttz/data/constraint/DateConstraintTest.java @@ -32,6 +32,7 @@ public class DateConstraintTest { private Constraint biggerOrEqualThanNow = DateConstraint .biggerOrEqualThan(now); + private Constraint equalToNow = DateConstraint.equalTo(now); @Test public void canCreateConstraintBiggerThan() { @@ -53,4 +54,17 @@ public class DateConstraintTest { .getTime()))); } + @Test + public void canCreateConstraintEqualTo(){ + assertThat(equalToNow.applyTo(new Date(now.getTime() + 1000)), + equalTo(now)); + } + + @Test + public void equalToNullLeaveValuesUnmodified() { + Constraint equalToNull = DateConstraint.equalTo(null); + Date value = new Date(now.getTime() + 1000); + assertThat(equalToNull.applyTo(value), equalTo(value)); + } + }