package org.signalml.plugin.newartifact.logic.mgr;
import org.signalml.plugin.exception.PluginException;
import org.signalml.plugin.newartifact.data.NewArtifactComputationType;
import org.signalml.plugin.newartifact.data.NewArtifactConstants;
import org.signalml.plugin.newartifact.logic.algorithm.BlinkingArtifactAlgorithm;
import org.signalml.plugin.newartifact.logic.algorithm.BreathingArtifactAlgorithm;
import org.signalml.plugin.newartifact.logic.algorithm.ECGArtifactAlgorithm;
import org.signalml.plugin.newartifact.logic.algorithm.EyeMoveArtifactAlgorithm;
import org.signalml.plugin.newartifact.logic.algorithm.INewArtifactAlgorithm;
import org.signalml.plugin.newartifact.logic.algorithm.MuscleActivityArtifactAlgorithm;
import org.signalml.plugin.newartifact.logic.algorithm.TechnicalArtifactAlgorithm;
import org.signalml.plugin.newartifact.logic.algorithm.UnknownArtifactAlgorithm;
public class NewArtifactAlgorithmFactory {
private final NewArtifactComputationType producedAlgorithmType;
private final NewArtifactConstants constants;
public NewArtifactAlgorithmFactory(NewArtifactComputationType prodAlgorithmType,
NewArtifactConstants constants) {
this.producedAlgorithmType = prodAlgorithmType;
this.constants = constants;
}
public INewArtifactAlgorithm createAlgorithm() throws PluginException {
switch (this.producedAlgorithmType) {
case GALV:
return new BreathingArtifactAlgorithm(constants);
case EYE_MOVEMENT:
return new EyeMoveArtifactAlgorithm(constants);
case MUSCLE_PLUS_POWER:
return new MuscleActivityArtifactAlgorithm(constants);
case TECHNICAL:
return new TechnicalArtifactAlgorithm(constants);
case ECG:
return new ECGArtifactAlgorithm(constants);
case EYEBLINKS:
return new BlinkingArtifactAlgorithm(constants);
case UNKNOWN:
return new UnknownArtifactAlgorithm(constants);
default:
throw new PluginException("Unknown algorithm");
}
}
}