JAL-2295 make RangeComparator a top level class for reuse
authorgmungoc <g.m.carstairs@dundee.ac.uk>
Tue, 8 Nov 2016 12:32:07 +0000 (12:32 +0000)
committergmungoc <g.m.carstairs@dundee.ac.uk>
Tue, 8 Nov 2016 12:32:07 +0000 (12:32 +0000)
src/jalview/analysis/AlignmentUtils.java
src/jalview/ext/ensembl/EnsemblSeqProxy.java
src/jalview/util/RangeComparator.java [new file with mode: 0644]

index 34fe221..fbec4be 100644 (file)
@@ -42,6 +42,7 @@ import jalview.util.Comparison;
 import jalview.util.DBRefUtils;
 import jalview.util.MapList;
 import jalview.util.MappingUtils;
+import jalview.util.RangeComparator;
 import jalview.util.StringUtils;
 
 import java.io.UnsupportedEncodingException;
@@ -2264,14 +2265,7 @@ public class AlignmentUtils
      * ranges are assembled in order. Other cases should not use this method,
      * but instead construct an explicit mapping for CDS (e.g. EMBL parsing).
      */
-    Collections.sort(result, new Comparator<int[]>()
-    {
-      @Override
-      public int compare(int[] o1, int[] o2)
-      {
-        return Integer.compare(o1[0], o2[0]);
-      }
-    });
+    Collections.sort(result, new RangeComparator(true));
     return result;
   }
 
index 7aa7178..d32933a 100644 (file)
@@ -38,6 +38,7 @@ import jalview.io.gff.SequenceOntologyI;
 import jalview.util.Comparison;
 import jalview.util.DBRefUtils;
 import jalview.util.MapList;
+import jalview.util.RangeComparator;
 
 import java.io.IOException;
 import java.net.MalformedURLException;
@@ -110,26 +111,6 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient
   }
 
   /**
-   * A comparator to sort ranges into ascending start position order
-   */
-  private class RangeSorter implements Comparator<int[]>
-  {
-    boolean forwards;
-
-    RangeSorter(boolean forward)
-    {
-      forwards = forward;
-    }
-
-    @Override
-    public int compare(int[] o1, int[] o2)
-    {
-      return (forwards ? 1 : -1) * Integer.compare(o1[0], o2[0]);
-    }
-
-  }
-
-  /**
    * Default constructor (to use rest.ensembl.org)
    */
   public EnsemblSeqProxy()
@@ -626,7 +607,7 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient
      * a final sort is needed since Ensembl returns CDS sorted within source
      * (havana / ensembl_havana)
      */
-    Collections.sort(regions, new RangeSorter(direction == 1));
+    Collections.sort(regions, new RangeComparator(direction == 1));
 
     List<int[]> to = Arrays.asList(new int[] { start,
         start + mappedLength - 1 });
diff --git a/src/jalview/util/RangeComparator.java b/src/jalview/util/RangeComparator.java
new file mode 100644 (file)
index 0000000..f911a9b
--- /dev/null
@@ -0,0 +1,25 @@
+package jalview.util;
+
+import java.util.Comparator;
+
+/**
+ * A comparator to order [from, to] ranges into ascending or descending order of
+ * their start position
+ */
+public class RangeComparator implements Comparator<int[]>
+{
+  boolean forwards;
+
+  public RangeComparator(boolean forward)
+  {
+    forwards = forward;
+  }
+
+  @Override
+  public int compare(int[] o1, int[] o2)
+  {
+    int compared = Integer.compare(o1[0], o2[0]);
+    return forwards ? compared : -compared;
+  }
+
+}
\ No newline at end of file