package jalview.datamodel.features; import jalview.datamodel.SequenceFeature; /** * An interface to describe a set of one or more feature matchers, where all * matchers are combined with either AND or OR * * @author gmcarstairs * */ public interface FeatureMatcherSetI { /** * Answers true if the feature provided passes this matcher's match condition * * @param feature * @return */ boolean matches(SequenceFeature feature); /** * Adds (ANDs) match condition m to this object's matcher set * * @param m * @throws IllegalStateException * if an attempt is made to AND to existing OR-ed conditions */ void and(FeatureMatcherI m); /** * Answers true if any second condition is AND-ed with this one, false if it * is OR-ed * * @return */ boolean isAnded(); /** * Adds (ORs) the given condition to this object's match conditions * * @param m * @throws IllegalStateException * if an attempt is made to OR to existing AND-ed conditions */ void or(FeatureMatcherI m); /** * Answers an iterator over the combined match conditions * * @return */ Iterable getMatchers(); /** * Answers true if this object contains no conditions * * @return */ boolean isEmpty(); /** * Answers a string representation of this object suitable for use when * persisting data, in a format that can be reliably read back. Any changes to * the format should be backwards compatible. */ String toStableString(); }