/* ArtifactApplicationData.java created 2007-11-02 * */ package org.signalml.plugin.newartifact.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.ChannelFunction; import org.signalml.domain.signal.samplesource.MultichannelSampleSource; 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; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamOmitField; /** * ArtifactApplicationData * * * @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe * Sp. z o.o. */ @XStreamAlias("artifactdata") public class NewArtifactApplicationData extends NewArtifactData { private static final long serialVersionUID = 1L; @XStreamOmitField private transient ExportedSignalDocument signalDocument; @XStreamOmitField private boolean existingProject; @XStreamOmitField private transient SvarogAccessSignal signalAccess; private SourceMontage montage; public NewArtifactApplicationData() { super(); } public ExportedSignalDocument getSignalDocument() { return signalDocument; } public void setSignalDocument(ExportedSignalDocument signalDocument) { this.signalDocument = signalDocument; this.setMontage(this.createMontage(signalDocument)); } private SourceMontage createMontage(ExportedSignalDocument document) { return new SourceMontage((SignalDocument) document); // TODO FIXME } public SourceMontage getMontage() { return montage; } public void setMontage(SourceMontage montage) { this.montage = montage; } public void setSignalAccess(SvarogAccessSignal signalAccess) { this.signalAccess = signalAccess; } public boolean isExistingProject() { return existingProject; } public void setExistingProject(boolean existingProject) { this.existingProject = existingProject; } public void calculate() throws SignalMLException { Map<String, Integer> keyChannelMap = getKeyChannelMap(); ArrayList<Integer> eegChannels = getEegChannels(); Map<String, Integer> channelMap = getChannelMap(); keyChannelMap.clear(); eegChannels.clear(); channelMap.clear(); int cnt = montage.getSourceChannelCount(); SourceChannel channel; for (int i = 0; i < cnt; i++) { channelMap.put(montage.getSourceChannelLabelAt(i), i); channel = montage.getSourceChannelAt(i); if (channel.getFunction() == ChannelFunction.EEG) { eegChannels.add(i); } //TODO: IMPORTANT - fill the keyChannelMap. /* if (AbstractData.keyChannelSet.contains(function)) { keyChannelMap.put(function.getName(), i); }*/ } /* * Map<String, Integer> keyChannelMap = getKeyChannelMap(); * ArrayList<Integer> eegChannels = getEegChannels(); Map<String, * Integer> channelMap = getChannelMap(); * * keyChannelMap.clear(); eegChannels.clear(); channelMap.clear(); * * Map<String, Channel> eegChannelTypeMap = new HashMap<String, * Channel>(); for (EegChannel channel : EegChannel.values()) { * eegChannelTypeMap.put(channel.getName(), channel); } * * String channelList[] = this.signalDocument.getSourceChannelLabels() * .toArray(new String[] {}); for (int i = 0; i < channelList.length; * ++i) { String label = channelList[i]; Channel channel = * eegChannelTypeMap.get(label); if (channel != null) { if * (channel.getType() == ChannelType.PRIMARY) { eegChannels.add(i); } * * if (NewArtifactData.keyChannelSet.contains(channel)) { * keyChannelMap.put(channel.getName(), i); } } } */ /* * SignalView signalView = (SignalView) * signalDocument.getDocumentView(); SignalPlot plot = * signalView.getMasterPlot(); * * MultichannelSampleSource sampleSource; * * SignalProcessingChain signalChain = plot.getSignalChain(); try { // * SignalMLCodecSampleSource source = (SignalMLCodecSampleSource) // * signalChain.getSource(); // sampleSource = new // * FastMultichannelSampleSource(source.getReader()); throw new * ClassCastException(); } catch (ClassCastException e) { * SignalProcessingChain copyChain = signalChain * .createRawLevelCopyChain(); * * SignalSpace signalSpace = new SignalSpace(); * signalSpace.setChannelSpaceType(ChannelSpaceType.WHOLE_SIGNAL); * signalSpace.setTimeSpaceType(TimeSpaceType.WHOLE_SIGNAL); * signalSpace.setWholeSignalCompletePagesOnly(false); * * SegmentedSampleSourceFactory factory = SegmentedSampleSourceFactory * .getSharedInstance(); sampleSource = * factory.getContinuousSampleSource(copyChain, signalSpace, null, * plot.getPageSize(), plot.getBlockSize()); } */ this.resetSampleSource(); this.setPageSize((int) signalDocument.getPageSize()); this.setBlocksPerPage(signalDocument.getBlocksPerPage()); } private void resetSampleSource() { this.setSampleSource(new PluginSampleSourceAdapter(signalAccess, signalDocument)); } @Override public void dispose() { this.resetSampleSource(); } }