JAL-1793 update spike branch to latest
[jalview.git] / src / jalview / util / matcher / Condition.java
index 3047802..8816a7f 100644 (file)
@@ -8,19 +8,55 @@ import jalview.util.MessageManager;
  */
 public enum Condition
 {
-  Contains(false, true), NotContains(false, true), Matches(false, true),
-  NotMatches(false, true), Present(false, false), NotPresent(false, false),
-  EQ(true, true), NE(true, true), LT(true, true), LE(true, true),
-  GT(true, true), GE(true, true);
-  
+  Contains(false, true, "Contains"),
+  NotContains(false, true, "NotContains"), Matches(false, true, "Matches"),
+  NotMatches(false, true, "NotMatches"), Present(false, false, "Present"),
+  NotPresent(false, false, "NotPresent"), EQ(true, true, "EQ"),
+  NE(true, true, "NE"), LT(true, true, "LT"), LE(true, true, "LE"),
+  GT(true, true, "GT"), GE(true, true, "GE");
+
   private boolean numeric;
 
   private boolean needsAPattern;
 
-  Condition(boolean isNumeric, boolean needsPattern)
+  /*
+   * value used to save a Condition to the 
+   * Jalview project file or restore it from project; 
+   * it should not be changed even if enum names change in future
+   */
+  private String stableName;
+
+  /**
+   * Answers the enum value whose 'stable name' matches the argument (not case
+   * sensitive), or null if no match
+   * 
+   * @param stableName
+   * @return
+   */
+  public static Condition fromString(String stableName)
+  {
+    for (Condition c : values())
+    {
+      if (c.stableName.equalsIgnoreCase(stableName))
+      {
+        return c;
+      }
+    }
+    return null;
+  }
+
+  /**
+   * Constructor
+   * 
+   * @param isNumeric
+   * @param needsPattern
+   * @param stablename
+   */
+  Condition(boolean isNumeric, boolean needsPattern, String stablename)
   {
     numeric = isNumeric;
     needsAPattern = needsPattern;
+    stableName = stablename;
   }
 
   /**
@@ -45,6 +81,11 @@ public enum Condition
     return needsAPattern;
   }
 
+  public String getStableName()
+  {
+    return stableName;
+  }
+
   /**
    * Answers a display name for the match condition, suitable for showing in
    * drop-down menus. The value may be internationalized using the resource key