Merge branch 'documentation/JAL-3407_2.11.1_release' into releases/Release_2_11_1_Branch
[jalview.git] / src / jalview / datamodel / features / FeatureMatcherI.java
1 package jalview.datamodel.features;
2
3 import jalview.datamodel.SequenceFeature;
4 import jalview.util.matcher.MatcherI;
5
6 /**
7  * An interface for an object that can apply a match condition to a
8  * SequenceFeature object
9  * 
10  * @author gmcarstairs
11  */
12 public interface FeatureMatcherI
13 {
14   /**
15    * Answers true if the value provided for this matcher's key passes this
16    * matcher's match condition
17    * 
18    * @param feature
19    * @return
20    */
21   boolean matches(SequenceFeature feature);
22
23   /**
24    * Answers the attribute key this matcher operates on (or null if match is by
25    * Label or Score)
26    * 
27    * @return
28    */
29   String[] getAttribute();
30
31   /**
32    * Answers true if match is against feature label (description), else false
33    * 
34    * @return
35    */
36   boolean isByLabel();
37
38   /**
39    * Answers true if match is against feature score, else false
40    * 
41    * @return
42    */
43   boolean isByScore();
44
45   /**
46    * Answers true if match is against a feature attribute (text or range)
47    * 
48    * @return
49    */
50   boolean isByAttribute();
51
52   /**
53    * Answers the match condition that is applied
54    * 
55    * @return
56    */
57   MatcherI getMatcher();
58
59   /**
60    * Answers a string representation of this object suitable for use when
61    * persisting data, in a format that can be reliably read back. Any changes to
62    * the format should be backwards compatible.
63    */
64   String toStableString();
65 }