diff --git a/uk/ac/sanger/artemis/util/DatabaseDocument.java b/uk/ac/sanger/artemis/util/DatabaseDocument.java index 7c6f8177691a544f9acfc904491d2915d88a4ac8..13da9002facaf9ff618bf6dfc460faa0bee7f333 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; + } + } + + } }