JAL-1619 further refactoring
[jalview.git] / src / jalview / analysis / AlignmentSorter.java
index 881dc74..b7cfbbd 100755 (executable)
@@ -1,19 +1,22 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
- * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
- *
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
+ * Copyright (C) 2014 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
+ * 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/>.
+ * 
+ * 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.analysis;
 
@@ -75,7 +78,7 @@ public class AlignmentSorter
 
   /**
    * Sort by Percentage Identity w.r.t. s
-   *
+   * 
    * @param align
    *          AlignmentI
    * @param s
@@ -91,7 +94,7 @@ public class AlignmentSorter
 
   /**
    * Sort by Percentage Identity w.r.t. s
-   *
+   * 
    * @param align
    *          AlignmentI
    * @param s
@@ -124,7 +127,7 @@ public class AlignmentSorter
 
   /**
    * Reverse the order of the sort
-   *
+   * 
    * @param align
    *          DOCUMENT ME!
    * @param seqs
@@ -160,7 +163,7 @@ public class AlignmentSorter
 
   /**
    * Sets the Alignment object with the given sequences
-   *
+   * 
    * @param align
    *          Alignment object to be updated
    * @param tmp
@@ -173,7 +176,7 @@ public class AlignmentSorter
 
   /**
    * Sets the Alignment object with the given sequences
-   *
+   * 
    * @param align
    *          DOCUMENT ME!
    * @param seqs
@@ -206,7 +209,7 @@ public class AlignmentSorter
 
   /**
    * Sorts by ID. Numbers are sorted before letters.
-   *
+   * 
    * @param align
    *          The alignment object to sort
    */
@@ -239,7 +242,7 @@ public class AlignmentSorter
 
   /**
    * Sorts by sequence length
-   *
+   * 
    * @param align
    *          The alignment object to sort
    */
@@ -274,7 +277,7 @@ public class AlignmentSorter
    * Sorts the alignment by size of group. <br>
    * Maintains the order of sequences in each group by order in given alignment
    * object.
-   *
+   * 
    * @param align
    *          sorts the given alignment object by group
    */
@@ -344,10 +347,10 @@ public class AlignmentSorter
 
   /**
    * Converts Vector to array. java 1.18 does not have Vector.toArray()
-   *
+   * 
    * @param tmp
    *          Vector of SequenceI objects
-   *
+   * 
    * @return array of Sequence[]
    */
   private static SequenceI[] vectorToArray(Vector tmp)
@@ -365,12 +368,12 @@ public class AlignmentSorter
   /**
    * Select sequences in order from tmp that is present in mask, and any
    * remaining seqeunces in mask not in tmp
-   *
+   * 
    * @param tmp
    *          thread safe collection of sequences
    * @param mask
    *          thread safe collection of sequences
-   *
+   * 
    * @return intersect(tmp,mask)+intersect(complement(tmp),mask)
    */
   private static SequenceI[] vectorSubsetToArray(List<SequenceI> tmp,
@@ -409,7 +412,7 @@ public class AlignmentSorter
 
   /**
    * Sorts by a given AlignmentOrder object
-   *
+   * 
    * @param align
    *          Alignment to order
    * @param order
@@ -441,12 +444,12 @@ public class AlignmentSorter
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param align
    *          alignment to order
    * @param tree
    *          tree which has
-   *
+   * 
    * @return DOCUMENT ME!
    */
   private static Vector getOrderByTree(AlignmentI align, NJTree tree)
@@ -483,7 +486,7 @@ public class AlignmentSorter
 
   /**
    * Sorts the alignment by a given tree
-   *
+   * 
    * @param align
    *          alignment to order
    * @param tree
@@ -516,7 +519,7 @@ public class AlignmentSorter
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param align
    *          DOCUMENT ME!
    * @param seqs
@@ -543,14 +546,14 @@ public class AlignmentSorter
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param node
    *          DOCUMENT ME!
    * @param tmp
    *          DOCUMENT ME!
    * @param seqset
    *          DOCUMENT ME!
-   *
+   * 
    * @return DOCUMENT ME!
    */
   private static Vector _sortByTree(SequenceNode node, Vector tmp,
@@ -615,7 +618,7 @@ public class AlignmentSorter
   /**
    * Sort sequence in order of increasing score attribute for annotation with a
    * particular scoreLabel. Or reverse if same label was used previously
-   *
+   * 
    * @param scoreLabel
    *          exact label for sequence associated AlignmentAnnotation scores to
    *          use for sorting.
@@ -703,7 +706,7 @@ public class AlignmentSorter
   /**
    * sort the alignment using the features on each sequence found between start
    * and stop with the given featureLabel (and optional group qualifier)
-   *
+   * 
    * @param featureLabel
    *          (may not be null)
    * @param groupLabel
@@ -754,8 +757,7 @@ public class AlignmentSorter
     if (method != FEATURE_SCORE && method != FEATURE_LABEL
             && method != FEATURE_DENSITY)
     {
-      throw new Error(
-              "Implementation Error - sortByFeature method must be one of FEATURE_SCORE, FEATURE_LABEL or FEATURE_DENSITY.");
+      throw new Error(MessageManager.getString("error.implementation_error_sortbyfeature"));
     }
     boolean ignoreScore = method != FEATURE_SCORE;
     StringBuffer scoreLabel = new StringBuffer();
@@ -935,7 +937,7 @@ public class AlignmentSorter
     {
       if (method == FEATURE_LABEL)
       {
-        throw new Error("Not yet implemented.");
+        throw new Error(MessageManager.getString("error.not_yet_implemented"));
       }
     }
     if (lastSortByFeatureScore == null