From 3a98225b068a2330799959a071b61b871dafa2ca Mon Sep 17 00:00:00 2001 From: Bertil Muth Date: Thu, 11 May 2017 15:19:06 +0200 Subject: [PATCH] Remove FlowPredicate from FlowPart Preparatory refactor for #2 --- .../java/org/requirementsascode/FlowPart.java | 48 ++----------------- .../requirementsascode/StepSystemPart.java | 2 +- .../java/org/requirementsascode/UseCase.java | 11 +---- 3 files changed, 6 insertions(+), 55 deletions(-) diff --git a/requirementsascodecore/src/main/java/org/requirementsascode/FlowPart.java b/requirementsascodecore/src/main/java/org/requirementsascode/FlowPart.java index ad8804c9..4047f838 100644 --- a/requirementsascodecore/src/main/java/org/requirementsascode/FlowPart.java +++ b/requirementsascodecore/src/main/java/org/requirementsascode/FlowPart.java @@ -19,13 +19,11 @@ public class FlowPart { private Flow flow; private UseCase useCase; private UseCasePart useCasePart; - private FlowPredicate flowPredicate; FlowPart(Flow flow, UseCasePart useCasePart) { this.flow = flow; this.useCasePart = useCasePart; this.useCase = useCasePart.useCase(); - this.flowPredicate = new FlowPredicate(); } /** @@ -37,19 +35,10 @@ public class FlowPart { */ public StepPart step(String stepName) { Step useCaseStep = - useCasePart.useCase().newStep(stepName, flow, Optional.empty(), getFlowPredicate()); + useCasePart.useCase().newStep(stepName, flow, Optional.empty()); return new StepPart(useCaseStep, this); } - /** - * Returns the predicate for this flow (that will become the predicate of its first step). - * - * @return the flow's predicate - */ - Optional> getFlowPredicate() { - return flowPredicate.get(); - } - /** * Starts the flow after the specified step has been run, in this flow's use case. You should use * after to handle exceptions that occured in the specified step. @@ -60,7 +49,7 @@ Optional> getFlowPredicate() { */ public FlowPart after(String stepName) { Step step = useCase.findStep(stepName); - flowPredicate.setFlowPosition(new After(Optional.of(step))); + flow.setFlowPosition(new After(Optional.of(step))); return this; } @@ -73,7 +62,7 @@ public FlowPart after(String stepName) { */ public FlowPart insteadOf(String stepName) { Step step = useCase.findStep(stepName); - flowPredicate.setFlowPosition(new InsteadOf(step)); + flow.setFlowPosition(new InsteadOf(step)); return this; } @@ -87,7 +76,7 @@ public FlowPart insteadOf(String stepName) { public FlowPart when(Predicate whenPredicate) { Objects.requireNonNull(whenPredicate); - flowPredicate.setWhen(whenPredicate); + flow.setWhen(whenPredicate); return this; } @@ -102,33 +91,4 @@ UseCasePart getUseCasePart() { UseCaseModelBuilder getUseCaseModelBuilder() { return useCasePart.useCaseModelBuilder(); } - - private class FlowPredicate { - private Optional> predicate; - - private FlowPredicate() { - this.predicate = Optional.empty(); - } - - public void setFlowPosition(Predicate stepPredicate) { - flow.setFlowPosition(stepPredicate); - predicate = Optional.of(stepPredicate); - } - - public void setWhen(Predicate whenPredicate) { - flow.setWhen(whenPredicate); - predicate = Optional.of(predicate.orElse(r -> true).and(whenPredicate)); - } - - public Optional> get() { - return predicate.map(pred -> isRunnerInDifferentFlow().and(pred)); - } - - private Predicate isRunnerInDifferentFlow() { - Predicate isRunnerInDifferentFlow = - runner -> - runner.getLatestFlow().map(runnerFlow -> !flow.equals(runnerFlow)).orElse(true); - return isRunnerInDifferentFlow; - } - } } diff --git a/requirementsascodecore/src/main/java/org/requirementsascode/StepSystemPart.java b/requirementsascodecore/src/main/java/org/requirementsascode/StepSystemPart.java index 9eed2f7b..aedb96d6 100644 --- a/requirementsascodecore/src/main/java/org/requirementsascode/StepSystemPart.java +++ b/requirementsascodecore/src/main/java/org/requirementsascode/StepSystemPart.java @@ -43,7 +43,7 @@ public StepPart step(String stepName) { Step nextUseCaseStepInFlow = useCaseFlow .getUseCase() - .newStep(stepName, useCaseFlow, Optional.of(step), Optional.empty()); + .newStep(stepName, useCaseFlow, Optional.of(step)); return new StepPart(nextUseCaseStepInFlow, useCaseFlowPart); } diff --git a/requirementsascodecore/src/main/java/org/requirementsascode/UseCase.java b/requirementsascodecore/src/main/java/org/requirementsascode/UseCase.java index 4030e7c6..eb3f24f3 100644 --- a/requirementsascodecore/src/main/java/org/requirementsascode/UseCase.java +++ b/requirementsascodecore/src/main/java/org/requirementsascode/UseCase.java @@ -10,7 +10,6 @@ import java.util.LinkedHashMap; import java.util.Map; import java.util.Optional; -import java.util.function.Predicate; import org.requirementsascode.exception.ElementAlreadyInModel; import org.requirementsascode.exception.NoSuchElementInModel; @@ -99,17 +98,9 @@ Flow newFlow(String flowName) { * @param stepName the name of the step * @param flow the flow the step shall belong to * @param previousStep the previous step in the flow, if there is one - * @param optionalPredicate the complete predicate of the step. If empty, the default predicate - * is: after previous step, unless interrupted by other flow with specified condition (e.g - * flow with "insteadOf" condition). * @return the newly created step */ - Step newStep( - String stepName, - Flow flow, - Optional previousStep, - Optional> optionalPredicate) { - + Step newStep(String stepName, Flow flow, Optional previousStep) { Step step = new Step(stepName, flow, previousStep); saveModelElement(step, nameToStepMap);