/* NewStagerApplicationData.java created 2008-02-08
*
*/
package org.signalml.plugin.newstager.data;
import java.util.ArrayList;
import java.util.Map;
import org.signalml.app.document.signal.SignalDocument;
import org.signalml.domain.montage.SourceChannel;
import org.signalml.domain.montage.SourceMontage;
import org.signalml.domain.montage.system.ChannelType;
import org.signalml.domain.montage.system.IChannelFunction;
import org.signalml.plugin.export.SignalMLException;
import org.signalml.plugin.export.signal.ExportedSignalDocument;
import org.signalml.plugin.export.signal.SvarogAccessSignal;
import org.signalml.plugin.io.PluginSampleSourceAdapter;
/**
* NewStagerApplicationData
*
*
* @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe
* Sp. z o.o.
*/
public class NewStagerApplicationData extends NewStagerData {
private static final long serialVersionUID = 1L;
private transient ExportedSignalDocument signalDocument;
private float pageSize;
private SourceMontage montage;
private transient SvarogAccessSignal signalAccess;
public NewStagerApplicationData() {
super();
}
public ExportedSignalDocument getSignalDocument() {
return signalDocument;
}
public void setSignalDocument(ExportedSignalDocument signalDocument) {
this.signalDocument = signalDocument;
this.setMontage(this.createMontage(signalDocument));
}
public void setSignalAccess(SvarogAccessSignal signalAccess) {
this.signalAccess = signalAccess;
}
private SourceMontage createMontage(ExportedSignalDocument document) {
return new SourceMontage((SignalDocument) document); // FIXME
}
public float getPageSize() {
return pageSize;
}
public void setPageSize(float pageSize) {
this.pageSize = pageSize;
}
public SourceMontage getMontage() {
return montage;
}
public void setMontage(SourceMontage montage) {
this.montage = montage;
}
public void calculate() throws SignalMLException {
// ConfigurationDefaults.setStagerFixedParameters(getFixedParameters());
// //FIXME
Map<String, Integer> keyChannelMap = getKeyChannelMap();
ArrayList<Integer> eegChannels = getEegChannels();
Map<String, Integer> channelMap = getChannelMap();
keyChannelMap.clear();
eegChannels.clear();
channelMap.clear();
int cnt = montage.getSourceChannelCount();
for (int i = 0; i < cnt; i++) {
channelMap.put(montage.getSourceChannelLabelAt(i), i);
SourceChannel channel = montage.getSourceChannelAt(i);
if (channel == null) {
continue;
}
IChannelFunction function = channel.getFunction();
if (channel.isChannelType(ChannelType.PRIMARY)) {
eegChannels.add(i);
}
if (function != null) {
if (NewStagerData.keyChannelSet.contains(function)) {
keyChannelMap.put(function.getName(), i);
}
}
}
this.resetSampleSource();
this.setPageSize((int) signalDocument.getPageSize());
}
private void resetSampleSource() {
this.setSampleSource(new PluginSampleSourceAdapter(signalAccess,
signalDocument));
}
@Override
public void dispose() {
this.resetSampleSource();
}
}