From 2cdef87796c1b6f575ad04d8170d7a7513655575 Mon Sep 17 00:00:00 2001 From: gmungoc Date: Tue, 8 Nov 2016 12:32:07 +0000 Subject: [PATCH] JAL-2295 make RangeComparator a top level class for reuse --- src/jalview/analysis/AlignmentUtils.java | 10 ++-------- src/jalview/ext/ensembl/EnsemblSeqProxy.java | 23 ++--------------------- src/jalview/util/RangeComparator.java | 25 +++++++++++++++++++++++++ 3 files changed, 29 insertions(+), 29 deletions(-) create mode 100644 src/jalview/util/RangeComparator.java diff --git a/src/jalview/analysis/AlignmentUtils.java b/src/jalview/analysis/AlignmentUtils.java index 34fe221..fbec4be 100644 --- a/src/jalview/analysis/AlignmentUtils.java +++ b/src/jalview/analysis/AlignmentUtils.java @@ -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() - { - @Override - public int compare(int[] o1, int[] o2) - { - return Integer.compare(o1[0], o2[0]); - } - }); + Collections.sort(result, new RangeComparator(true)); return result; } diff --git a/src/jalview/ext/ensembl/EnsemblSeqProxy.java b/src/jalview/ext/ensembl/EnsemblSeqProxy.java index 7aa7178..d32933a 100644 --- a/src/jalview/ext/ensembl/EnsemblSeqProxy.java +++ b/src/jalview/ext/ensembl/EnsemblSeqProxy.java @@ -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 - { - 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 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 index 0000000..f911a9b --- /dev/null +++ b/src/jalview/util/RangeComparator.java @@ -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 +{ + 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 -- 1.7.10.2