From e8c762a520979efbdc7d3ec882708a70e3f533f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Wed, 4 May 2011 13:24:36 +0200 Subject: [PATCH] Fix precondition error in finishing criterions The descendants of the criterion were being matched too, when only the exact match was required. FEA: ItEr74S04BugFixing --- .../business/resources/entities/Resource.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Resource.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Resource.java index 5d6bfa888..81f2f1d93 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Resource.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Resource.java @@ -321,6 +321,16 @@ public abstract class Resource extends IntegrationEntity { }); } + public Query exactly(final Criterion criterion) { + return withNewPredicate(new IPredicate() { + + @Override + public boolean accepts(CriterionSatisfaction satisfaction) { + return criterion.isEquivalent(satisfaction.getCriterion()); + } + }); + } + /** * Method called to retrieve the result. If no predicate was set, it * returns all satisfactions @@ -540,8 +550,8 @@ public abstract class Resource extends IntegrationEntity { public List finishEnforcedAt(Criterion criterion, LocalDate date) { ArrayList result = new ArrayList(); - for (CriterionSatisfaction criterionSatisfaction : query().from( - criterion).at(date).result()) { + for (CriterionSatisfaction criterionSatisfaction : query() + .exactly(criterion).at(date).result()) { criterionSatisfaction.finish(date); result.add(criterionSatisfaction); }