/* SelectionSegmentedSampleSourceDescriptor.java created 2008-02-15 * */ package org.signalml.domain.signal.space; import org.signalml.domain.signal.samplesource.MultichannelSampleSource; import org.signalml.domain.signal.samplesource.MultichannelSegmentedSampleSource; import com.thoughtworks.xstream.annotations.XStreamAlias; import org.signalml.plugin.export.signal.SignalSelection; /** * This class represents a descriptor of a * {@link SelectionSegmentedSampleSource segmented source of samples}. * Allows to create a {@link MultichannelSegmentedSampleSource segmented source} * of samples from the given {@link MultichannelSampleSource source} * based on this descriptor. * Contains the index of the first sample, selected channels and the length * of the segment. * * @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o. */ @XStreamAlias("selectionsegsource") public class SelectionSegmentedSampleSourceDescriptor implements SegmentedSampleSourceDescriptor { private static final long serialVersionUID = 1L; /** * the index of the first selected sample */ private int firstSample; /** * the number of samples in the selection */ private int segmentLength; /** * the number of segments in the described * {@link SelectionSegmentedSampleSource source}, * if the {@link SignalSelection selection} is a page selection - the * number of pages in the selection * if the selection is a block selection - the number of blocks * if the selection is a channel selection - <code>1</code> */ private int segmentCount; /** * the number of channels in the described * {@link SelectionSegmentedSampleSource source} */ private int channelCount; /** * an array mapping indexes in the described * {@link SelectionSegmentedSampleSource source} to the indexes of * channels in the actual source */ private int[] channelIndices; /** * the number of segments that can not be used (the required * segment is not in the signal) */ private int unusableSegmentCount; /** * Constructor. Creates an empty descriptor. */ public SelectionSegmentedSampleSourceDescriptor() { } /** * Creates the * {@link SelectionSegmentedSampleSource segmented source of samples} * based on this descriptor. * Uses provided source of samples for the whole channel. * @param source the actual source of samples for the whole channel * @return the created source of samples */ @Override public MultichannelSegmentedSampleSource createSegmentedSource(MultichannelSampleSource source) { return new SelectionSegmentedSampleSource(source,this); } /** * Returns the index of the first selected sample. * @return the index of the first selected sample */ public int getFirstSample() { return firstSample; } /** * Sets the index of the first selected sample. * @param firstSample the index of the first selected sample */ public void setFirstSample(int firstSample) { this.firstSample = firstSample; } /** * Returns the number of samples in the selection. * @return the number of samples in the selection */ public int getSegmentLength() { return segmentLength; } /** * Sets the number of samples in the selection. * @param segmentLength the number of samples in the selection */ public void setSegmentLength(int segmentLength) { this.segmentLength = segmentLength; } /** * Returns the number of segments in the described * {@link SelectionSegmentedSampleSource source}: * if the {@link SignalSelection selection} is a page selection - the * number of pages in the selection * if the selection is a block selection - the number of blocks * if the selection is a channel selection - <code>1</code> * @return the number of segments in the described source */ public int getSegmentCount() { return segmentCount; } /** * Sets the number of segments in the described * {@link SelectionSegmentedSampleSource source}: * if the {@link SignalSelection selection} is a page selection - the * number of pages in the selection * if the selection is a block selection - the number of blocks * if the selection is a channel selection - <code>1</code> * @param segmentCount the number of segments in the described source */ public void setSegmentCount(int segmentCount) { this.segmentCount = segmentCount; } /** * Returns the number of channels in the described * {@link SelectionSegmentedSampleSource source}. * @return the number of channels in the described source */ public int getChannelCount() { return channelCount; } /** * Sets the number of channels in the described * {@link SelectionSegmentedSampleSource source} * @param channelCount the number of channels in the described source */ public void setChannelCount(int channelCount) { this.channelCount = channelCount; } /** * Returns the array mapping indexes in the described * {@link SelectionSegmentedSampleSource source} to the indexes of * channels in the actual source * @return the array mapping indexes in the describe source to the * indexes of channels in the actual source */ public int[] getChannelIndices() { return channelIndices; } /** * Sets the array mapping indexes in the described * {@link SelectionSegmentedSampleSource source} to the indexes of * channels in the actual source * @param channelIndices the array mapping indexes in the described * source to the indexes of channels in the actual source */ public void setChannelIndices(int[] channelIndices) { this.channelIndices = channelIndices; } /** * Returns the number of segments that can not be used (the required * segment is not in the signal) * @return the number of segments that can not be used (the required * segment is not in the signal) */ public int getUnusableSegmentCount() { return unusableSegmentCount; } /** * Sets the number of segments that can not be used (the required * segment is not in the signal) * @param unusableSegmentCount the number of segments that can not be * used (the required segment is not in the signal) */ public void setUnusableSegmentCount(int unusableSegmentCount) { this.unusableSegmentCount = unusableSegmentCount; } }