/**
* Answers a string representation of this object suitable for use when
- * persisting data, in a format that should not change so can be reliably read
- * back.
+ * persisting data, in a format that can be reliably read back. Any changes to
+ * the format should be backwards compatible.
*/
String toStableString();
}
import java.util.ArrayList;
import java.util.List;
+/**
+ * A class that models one or more match conditions, which may be combined with
+ * AND or OR (but not a mixture)
+ *
+ * @author gmcarstairs
+ */
public class FeatureMatcherSet implements FeatureMatcherSetI
{
private static final String OR = "OR";
}
@Override
- public FeatureMatcherSetI and(FeatureMatcherI m)
+ public void and(FeatureMatcherI m)
{
if (!andConditions && matchConditions.size() > 1)
{
}
matchConditions.add(m);
andConditions = true;
-
- return this;
}
@Override
- public FeatureMatcherSetI or(FeatureMatcherI m)
+ public void or(FeatureMatcherI m)
{
if (andConditions && matchConditions.size() > 1)
{
}
matchConditions.add(m);
andConditions = false;
-
- return this;
}
@Override
boolean matches(SequenceFeature feature);
/**
- * Answers a new object that matches the logical AND of this and m
+ * Adds (ANDs) match condition m to this object's matcher set
*
* @param m
- * @return
* @throws IllegalStateException
* if an attempt is made to AND to existing OR-ed conditions
*/
- FeatureMatcherSetI and(FeatureMatcherI m);
+ void and(FeatureMatcherI m);
/**
* Answers true if any second condition is AND-ed with this one, false if it
boolean isAnded();
/**
- * Answers a new object that matches the logical OR of this and m
+ * Adds (ORs) the given condition to this object's match conditions
*
* @param m
- * @return
* @throws IllegalStateException
* if an attempt is made to OR to existing AND-ed conditions
*/
- FeatureMatcherSetI or(FeatureMatcherI m);
+ void or(FeatureMatcherI m);
/**
* Answers an iterator over the combined match conditions
/**
* Answers a string representation of this object suitable for use when
- * persisting data, in a format that should not change so can be reliably read
- * back.
+ * persisting data, in a format that can be reliably read back. Any changes to
+ * the format should be backwards compatible.
*/
String toStableString();
}
* OR failed attribute and score conditions with matched label condition
*/
fms = new FeatureMatcherSet();
- fms.or(fm2).or(byScoreFail);
+ fms.or(fm2);
+ fms.or(byScoreFail);
assertFalse(fms.matches(sf));
fms.or(byLabelPass);
assertTrue(fms.matches(sf));