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