Skip to content
Snippets Groups Projects
Commit 6d1c204b authored by Christian Wulf's avatar Christian Wulf
Browse files

refactored Pipeline to a composite stage

parent cdf208bb
No related branches found
No related tags found
No related merge requests found
package teetime.framework; package teetime.framework;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List; import java.util.List;
import teetime.framework.signal.ISignal;
import teetime.framework.validation.InvalidPortConnection;
/** /**
* *
* @author Christian Wulf * @author Christian Wulf
...@@ -13,59 +12,29 @@ import teetime.framework.validation.InvalidPortConnection; ...@@ -13,59 +12,29 @@ import teetime.framework.validation.InvalidPortConnection;
* the type of the last stage in this pipeline * the type of the last stage in this pipeline
*/ */
// TODO Consider to move it in the framework // TODO Consider to move it in the framework
public final class Pipeline<L extends Stage> extends Stage { public final class Pipeline<L extends Stage> extends CompositeStage {
private final Stage firstStage; private final Stage firstStage;
private final L lastStage; private final List<L> lastStages = new LinkedList<L>();
public Pipeline(final Stage firstStage, final L lastStage) { public Pipeline(final Stage firstStage, final L lastStage) {
super(); super();
this.firstStage = firstStage; this.firstStage = firstStage;
this.lastStage = lastStage; this.lastStages.add(lastStage);
}
@Override
public TerminationStrategy getTerminationStrategy() {
return firstStage.getTerminationStrategy();
}
@Override
public void terminate() {
firstStage.terminate();
}
@Override
public boolean shouldBeTerminated() {
return firstStage.shouldBeTerminated();
} }
@Override @Override
public void executeWithPorts() { protected Stage getFirstStage() {
firstStage.executeWithPorts(); return firstStage;
}
@Override
public void onSignal(final ISignal signal, final InputPort<?> inputPort) {
firstStage.onSignal(signal, inputPort);
}
@Override
public void validateOutputPorts(final List<InvalidPortConnection> invalidPortConnections) {
lastStage.validateOutputPorts(invalidPortConnections);
} }
public L getLastStage() { public L getLastStage() {
return lastStage; return lastStages.get(0);
}
@Override
protected InputPort<?>[] getInputPorts() {
return firstStage.getInputPorts();
} }
@Override @Override
protected boolean isStarted() { protected Collection<? extends Stage> getLastStages() {
return firstStage.isStarted(); return lastStages;
} }
@Override @Override
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment