Merge branch 'develop' into patch/JAL-3088_finalbracenotinrightplace
[jalview.git] / src / jalview / datamodel / features / FeatureMatcherSet.java
index 3d28def..eae3664 100644 (file)
@@ -1,11 +1,39 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
 package jalview.datamodel.features;
 
+import java.util.Locale;
+
 import jalview.datamodel.SequenceFeature;
 import jalview.util.MessageManager;
 
 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";
@@ -65,7 +93,7 @@ public class FeatureMatcherSet implements FeatureMatcherSetI
         if (spacePos == -1)
         {
           // trailing junk after a match condition
-          System.err.println(invalid);
+          jalview.bin.Console.errPrintln(invalid);
           return null;
         }
         String conjunction = leftToParse.substring(0, spacePos);
@@ -81,7 +109,7 @@ public class FeatureMatcherSet implements FeatureMatcherSetI
         else
         {
           // not an AND or an OR - invalid
-          System.err.println(invalid);
+          jalview.bin.Console.errPrintln(invalid);
           return null;
         }
       }
@@ -95,7 +123,7 @@ public class FeatureMatcherSet implements FeatureMatcherSetI
         int closePos = leftToParse.indexOf(CLOSE_BRACKET);
         if (closePos == -1)
         {
-          System.err.println(invalid);
+          jalview.bin.Console.errPrintln(invalid);
           return null;
         }
         nextCondition = leftToParse.substring(1, closePos);
@@ -109,7 +137,7 @@ public class FeatureMatcherSet implements FeatureMatcherSetI
       FeatureMatcher fm = FeatureMatcher.fromString(nextCondition);
       if (fm == null)
       {
-        System.err.println(invalid);
+        jalview.bin.Console.errPrintln(invalid);
         return null;
       }
       try
@@ -126,7 +154,7 @@ public class FeatureMatcherSet implements FeatureMatcherSetI
       } catch (IllegalStateException e)
       {
         // thrown if OR and AND are mixed
-        System.err.println(invalid);
+        jalview.bin.Console.errPrintln(invalid);
         return null;
       }
 
@@ -182,7 +210,7 @@ public class FeatureMatcherSet implements FeatureMatcherSetI
   }
 
   @Override
-  public FeatureMatcherSetI and(FeatureMatcherI m)
+  public void and(FeatureMatcherI m)
   {
     if (!andConditions && matchConditions.size() > 1)
     {
@@ -190,12 +218,10 @@ public class FeatureMatcherSet implements FeatureMatcherSetI
     }
     matchConditions.add(m);
     andConditions = true;
-
-    return this;
   }
 
   @Override
-  public FeatureMatcherSetI or(FeatureMatcherI m)
+  public void or(FeatureMatcherI m)
   {
     if (andConditions && matchConditions.size() > 1)
     {
@@ -203,8 +229,6 @@ public class FeatureMatcherSet implements FeatureMatcherSetI
     }
     matchConditions.add(m);
     andConditions = false;
-
-    return this;
   }
 
   @Override
@@ -235,7 +259,8 @@ public class FeatureMatcherSet implements FeatureMatcherSetI
       if (!first)
       {
         String joiner = andConditions ? AND_18N : OR_I18N;
-        sb.append(SPACE).append(joiner.toLowerCase()).append(SPACE);
+        sb.append(SPACE).append(joiner.toLowerCase(Locale.ROOT))
+                .append(SPACE);
       }
       first = false;
       if (multiple)