JAL-2808 refine FeatureMatcher interface and matcher toString methods
[jalview.git] / src / jalview / datamodel / features / FeatureMatcher.java
index 1fc0e0f..b86468d 100644 (file)
@@ -1,6 +1,7 @@
 package jalview.datamodel.features;
 
 import jalview.datamodel.SequenceFeature;
+import jalview.util.MessageManager;
 import jalview.util.matcher.Condition;
 import jalview.util.matcher.Matcher;
 import jalview.util.matcher.MatcherI;
@@ -22,6 +23,12 @@ import jalview.util.matcher.MatcherI;
  */
 public class FeatureMatcher implements FeatureMatcherI
 {
+  /*
+   * a dummy matcher that comes in useful for the 'add a filter' gui row
+   */
+  public static final FeatureMatcherI NULL_MATCHER = FeatureMatcher
+          .byLabel(Condition.values()[0], "");
+
   private static final String COLON = ":";
 
   /*
@@ -103,7 +110,7 @@ public class FeatureMatcher implements FeatureMatcherI
   }
 
   @Override
-  public String[] getKey()
+  public String[] getAttribute()
   {
     return key;
   }
@@ -122,9 +129,21 @@ public class FeatureMatcher implements FeatureMatcherI
   public String toString()
   {
     StringBuilder sb = new StringBuilder();
-    sb.append(String.join(COLON, key)).append(" ")
-            .append(matcher.getCondition().toString());
+    if (byLabel)
+    {
+      sb.append(MessageManager.getString("label.label"));
+    }
+    else if (byScore)
+    {
+      sb.append(MessageManager.getString("label.score"));
+    }
+    else
+    {
+      sb.append(String.join(COLON, key));
+    }
+
     Condition condition = matcher.getCondition();
+    sb.append(" ").append(condition.toString().toLowerCase());
     if (condition.isNumeric())
     {
       sb.append(" ").append(matcher.getPattern());
@@ -136,4 +155,16 @@ public class FeatureMatcher implements FeatureMatcherI
 
     return sb.toString();
   }
+
+  @Override
+  public boolean isByLabel()
+  {
+    return byLabel;
+  }
+
+  @Override
+  public boolean isByScore()
+  {
+    return byScore;
+  }
 }