package org.signalml.plugin.newartifact.logic.tag; import java.io.IOException; import java.util.Arrays; import java.util.concurrent.Callable; import org.signalml.method.ComputationException; import org.signalml.plugin.io.IPluginTagWriter; import org.signalml.plugin.newartifact.data.tag.NewArtifactTagData; import org.signalml.plugin.newartifact.data.tag.NewArtifactTagResult; import org.signalml.plugin.newartifact.data.tag.NewArtifactTagRoutineData; import org.signalml.plugin.newartifact.io.INewArtifactDataReader; import org.signalml.plugin.newartifact.logic.tag.creators.INewArtifactTagCreator; public class NewArtifactTagCreatorRoutine implements Callable<NewArtifactTagResult> { private final NewArtifactTagRoutineData data; private final INewArtifactDataReader reader; private final INewArtifactTagCreator tagCreator; private final IPluginTagWriter writer; public NewArtifactTagCreatorRoutine(NewArtifactTagRoutineData data, INewArtifactDataReader reader, INewArtifactTagCreator tagCreator, IPluginTagWriter writer) { this.data = data; this.reader = reader; this.tagCreator = tagCreator; this.writer = writer; } @Override public NewArtifactTagResult call() throws Exception { double source[][]; try { source = this.reader.read(); } catch (IOException e) { throw new ComputationException(e); } NewArtifactTagResult result = this.tagCreator .tag(new NewArtifactTagData(source, this.data.constants, this.data.parameters, this.data.eegChannels, this.data.excludedChannels)); this.writer.writeTags(Arrays.asList(result.tagGroup)); return result; } }