From 60552ca278ed16f5c18dbe3fbec43e9be56634f6 Mon Sep 17 00:00:00 2001 From: Christian Wulf <chw@informatik.uni-kiel.de> Date: Tue, 3 Feb 2015 14:53:57 +0100 Subject: [PATCH] added CompositeStage --- .settings/edu.umd.cs.findbugs.core.prefs | 2 +- .../teetime/framework/CompositeStage.java | 65 +++++++++++++++++++ src/site/markdown/wiki | 2 +- 3 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 src/main/java/teetime/framework/CompositeStage.java diff --git a/.settings/edu.umd.cs.findbugs.core.prefs b/.settings/edu.umd.cs.findbugs.core.prefs index 73ac78d8..82e5b15f 100644 --- a/.settings/edu.umd.cs.findbugs.core.prefs +++ b/.settings/edu.umd.cs.findbugs.core.prefs @@ -1,5 +1,5 @@ #FindBugs User Preferences -#Wed Jan 28 07:11:46 CET 2015 +#Mon Feb 02 14:42:51 CET 2015 detector_threshold=3 effort=max excludefilter0=.fbExcludeFilterFile|true diff --git a/src/main/java/teetime/framework/CompositeStage.java b/src/main/java/teetime/framework/CompositeStage.java new file mode 100644 index 00000000..69653e3a --- /dev/null +++ b/src/main/java/teetime/framework/CompositeStage.java @@ -0,0 +1,65 @@ +package teetime.framework; + +import java.util.Collection; +import java.util.List; + +import teetime.framework.signal.ISignal; +import teetime.framework.validation.InvalidPortConnection; + +public abstract class CompositeStage extends Stage { + + private final Stage firstStage; + private final Collection<Stage> lastStages; + + protected CompositeStage(final Stage firstStage, final Collection<Stage> lastStages) { + this.firstStage = firstStage; + this.lastStages = lastStages; + } + + @Override + protected void executeWithPorts() { + firstStage.executeWithPorts(); + } + + @Override + protected void onSignal(final ISignal signal, final InputPort<?> inputPort) { + firstStage.onSignal(signal, inputPort); + } + + @Override + protected TerminationStrategy getTerminationStrategy() { + return firstStage.getTerminationStrategy(); + } + + @Override + protected void terminate() { + firstStage.terminate(); + } + + @Override + protected boolean shouldBeTerminated() { + return firstStage.shouldBeTerminated(); + } + + @Override + protected InputPort<?>[] getInputPorts() { + return firstStage.getInputPorts(); + } + + @Override + public void validateOutputPorts(final List<InvalidPortConnection> invalidPortConnections) { + for (final Stage s : lastStages) { + s.validateOutputPorts(invalidPortConnections); + } + } + + @Override + protected boolean isStarted() { + boolean isStarted = true; + for (final Stage s : lastStages) { + isStarted = isStarted && s.isStarted(); + } + return isStarted; + } + +} diff --git a/src/site/markdown/wiki b/src/site/markdown/wiki index a9358190..0e447457 160000 --- a/src/site/markdown/wiki +++ b/src/site/markdown/wiki @@ -1 +1 @@ -Subproject commit a93581905ef7b0584d52eae1898148ffa6201a31 +Subproject commit 0e4474577e1f49bc96e734c286b2d9e0363895e8 -- GitLab