From 047030f6f574b9a3208fab789388f77b658f6877 Mon Sep 17 00:00:00 2001 From: tjc <tjc@ee4ac58c-ac51-4696-9907-e4b3aa274f04> Date: Mon, 3 Sep 2007 13:40:25 +0000 Subject: [PATCH] add FeatureLoc comparator git-svn-id: svn+ssh://svn.internal.sanger.ac.uk/repos/svn/pathsoft/artemis/trunk@6341 ee4ac58c-ac51-4696-9907-e4b3aa274f04 --- .../sanger/artemis/util/DatabaseDocument.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/uk/ac/sanger/artemis/util/DatabaseDocument.java b/uk/ac/sanger/artemis/util/DatabaseDocument.java index 7c6f81776..13da9002f 100644 --- a/uk/ac/sanger/artemis/util/DatabaseDocument.java +++ b/uk/ac/sanger/artemis/util/DatabaseDocument.java @@ -61,6 +61,8 @@ import java.sql.*; import java.text.SimpleDateFormat; import java.io.*; import java.net.ConnectException; +import java.util.Collections; +import java.util.Comparator; import java.util.HashSet; import java.util.Hashtable; import java.util.HashMap; @@ -1854,6 +1856,7 @@ public class DatabaseDocument extends Document } } + Collections.sort(cdsFeatureLocs, new LocationComarator()); return cdsFeatureLocs; } @@ -2641,4 +2644,37 @@ public class DatabaseDocument extends Document { return singleSchema; } + + /** + * Ensure exon featurelocs are in the correct order + */ + class LocationComarator implements Comparator + { + + public int compare(Object o1, Object o2) + { + int loc1 = ((FeatureLoc)o1).getFmin().intValue(); + int loc2 = ((FeatureLoc)o2).getFmin().intValue(); + + if(loc2 == loc1) + return 0; + int strand = ((FeatureLoc)o1).getStrand().intValue(); + + if(strand < 0) + { + if(loc2 > loc1) + return 1; + else + return -1; + } + else + { + if(loc2 > loc1) + return -1; + else + return 1; + } + } + + } } -- GitLab