/* ParameterRangeAtomFilter.java created 2008-02-25 * */ package org.signalml.domain.book.filter; import org.signalml.domain.book.StandardBookAtom; import org.signalml.domain.book.StandardBookSegment; import org.signalml.util.MinMaxRange; import org.signalml.util.MinMaxRangeFloat; import org.signalml.util.MinMaxRangeInteger; import com.thoughtworks.xstream.annotations.XStreamAlias; /** ParameterRangeAtomFilter * * * @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o. */ @XStreamAlias("parameterbookfilter") public class ParameterRangeAtomFilter extends AbstractAtomFilter { private static final long serialVersionUID = 1L; private static final String[] CODES = new String[] { "parameterRangeAtomFilter" }; private static final Object[] ARGUMENTS = new Object[0]; private MinMaxRangeFloat modulus; private MinMaxRangeFloat amplitude; private MinMaxRangeFloat position; private MinMaxRangeFloat scale; private MinMaxRangeFloat frequency; private MinMaxRangeFloat phase; private MinMaxRangeInteger iteration; public ParameterRangeAtomFilter() { super(); modulus = new MinMaxRangeFloat(MinMaxRange.UNLIMITED, true); amplitude = new MinMaxRangeFloat(MinMaxRange.UNLIMITED, true); position = new MinMaxRangeFloat(MinMaxRange.UNLIMITED, true); scale = new MinMaxRangeFloat(MinMaxRange.UNLIMITED, true); frequency = new MinMaxRangeFloat(MinMaxRange.UNLIMITED, true); phase = new MinMaxRangeFloat(MinMaxRange.UNLIMITED, true); iteration = new MinMaxRangeInteger(MinMaxRange.UNLIMITED, 1,1,true,true); } public ParameterRangeAtomFilter(ParameterRangeAtomFilter template) { super(template); modulus = new MinMaxRangeFloat(template.modulus); amplitude = new MinMaxRangeFloat(template.amplitude); position = new MinMaxRangeFloat(template.position); scale = new MinMaxRangeFloat(template.scale); frequency = new MinMaxRangeFloat(template.frequency); phase = new MinMaxRangeFloat(template.phase); iteration = new MinMaxRangeInteger(template.iteration); } @Override public AbstractAtomFilter duplicate() { return new ParameterRangeAtomFilter(this); } public MinMaxRangeFloat getModulus() { return modulus; } public MinMaxRangeFloat getAmplitude() { return amplitude; } public MinMaxRangeFloat getPosition() { return position; } public MinMaxRangeFloat getScale() { return scale; } public MinMaxRangeFloat getFrequency() { return frequency; } public MinMaxRangeFloat getPhase() { return phase; } public MinMaxRangeInteger getIteration() { return iteration; } @Override public boolean matches(StandardBookSegment segment, StandardBookAtom atom) { // TODO what about types? if (!modulus.isInRangeInclusive(atom.getModulus())) { return false; } if (!amplitude.isInRangeInclusive(atom.getAmplitude())) { return false; } if (!position.isInRangeInclusive(atom.getTimePosition())) { return false; } if (!scale.isInRangeInclusive(atom.getTimeScale())) { return false; } if (!frequency.isInRangeInclusive(atom.getHzFrequency())) { return false; } if (!phase.isInRangeInclusive(atom.getPhase())) { return false; } if (!iteration.isInRangeInclusive(segment.indexOfAtom(atom)+1)) { return false; } return true; } @Override public Object[] getArguments() { return ARGUMENTS; } @Override public String[] getCodes() { return CODES; } @Override public String getDefaultMessage() { return "Parameter range atom filter"; } }