/* PredefinedFilterConfiguration.java created 2010-11-26
*
*/
package org.signalml.app.config.preset;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import java.util.ArrayList;
import java.util.List;
import org.signalml.domain.montage.filter.SampleFilterDefinition;
import org.signalml.domain.montage.filter.TimeDomainSampleFilter;
/**
* This class holds predefined filters for one given sampling frequency.
*
* @author Piotr Szachewicz
*/
@XStreamAlias("filterConfiguration")
public class PredefinedFiltersConfiguration<FilterDefinition extends SampleFilterDefinition> {
/**
* the sampling frequency at which the filters stored in this class
* should operate
*/
private double samplingFrequency;
/**
* a list containing predefined filters which can be used on
* signals having the given sampling frequency
*/
private List<FilterDefinition> predefinedFilters = new ArrayList<FilterDefinition>();
/**
* a filter which can be used as a starting point when designing
* a new (custom) filter
*/
private FilterDefinition customFilterStartingPoint;
public PredefinedFiltersConfiguration() {
}
/**
* Constructor. Creates an empty set of predefined filters for
* the given sampling frequency.
* @param samplingFrequency the sampling frequency at which filters
* stored in this class should operate.
*/
public PredefinedFiltersConfiguration(double samplingFrequency) {
this.samplingFrequency = samplingFrequency;
}
/**
* Returns the sampling frequency at which the filters stored
* in this class should operate.
* @return the sampling frequency at which this filter configuration
* should operate.
*/
public double getSamplingFrequency() {
return samplingFrequency;
}
/**
* Adds a {@link TimeDomainSampleFilter} to this class.
* @param filterDefinition a {@link TimeDomainSampleFilter}
* to be added
*/
public void addPredefinedFilter(FilterDefinition filterDefinition) {
predefinedFilters.add(filterDefinition);
}
/**
* Adds a {@link TimeDomainSampleFilter} which should be used
* as a starting point to design new filters.
* @param filterDefinition a {@link TimeDomainSampleFilter}
* to be added
*/
public void addCustomFilterStartingPoint(FilterDefinition filterDefinition) {
customFilterStartingPoint = filterDefinition;
}
/**
* Returns a list containing predefined filters stored in this
* class (except for customFilterStartingPoint).
* @return a list of filters
*/
public List<FilterDefinition> getPredefinedFilters() {
return predefinedFilters;
}
/**
* Returns the number of predefined filters stored in this class
* (excluding customFilterStartingPoint).
* @return the number of filters stored
*/
public int getNumberOfPredefinedFilters() {
return predefinedFilters.size();
}
/**
* Returns the custom filter starting point for designing new
* filters (this filter is shown in a filter designer after choosing
* 'Add custom filter' option).
* @return the {@link TimeDomainSampleFilter} which should be
* used as a starting point to design new filters.
*/
public FilterDefinition getCustomFilterStartingPoint() {
return customFilterStartingPoint;
}
}