From 3a907ff7336b1816dfa2367a8b57f0e842b4e807 Mon Sep 17 00:00:00 2001
From: tjc <tjc@ee4ac58c-ac51-4696-9907-e4b3aa274f04>
Date: Thu, 18 Sep 2008 08:16:42 +0000
Subject: [PATCH] load CvTerms in a separate thread when opening standalone
 gene editor

git-svn-id: svn+ssh://svn.internal.sanger.ac.uk/repos/svn/pathsoft/artemis/trunk@8857 ee4ac58c-ac51-4696-9907-e4b3aa274f04
---
 .../sanger/artemis/util/DatabaseDocument.java | 38 +++++++++++++++++--
 1 file changed, 34 insertions(+), 4 deletions(-)

diff --git a/uk/ac/sanger/artemis/util/DatabaseDocument.java b/uk/ac/sanger/artemis/util/DatabaseDocument.java
index f9dfc1044..4d2bfe969 100644
--- a/uk/ac/sanger/artemis/util/DatabaseDocument.java
+++ b/uk/ac/sanger/artemis/util/DatabaseDocument.java
@@ -50,6 +50,7 @@ import org.gmod.schema.sequence.FeatureCvTerm;
 import org.gmod.schema.sequence.FeatureCvTermProp;
 import org.gmod.schema.sequence.FeatureCvTermDbXRef;
 import org.gmod.schema.sequence.FeatureCvTermPub;
+import org.gmod.schema.cv.Cv;
 import org.gmod.schema.cv.CvTerm;
 import org.gmod.schema.general.Db;
 import org.gmod.schema.general.DbXRef;
@@ -949,8 +950,12 @@ public class DatabaseDocument extends Document
                                     final boolean readChildren) 
           throws SQLException, ReadFormatException, ConnectException
   {
+    CvTermThread cvThread = null;
     if(DatabaseDocument.cvterms == null)
-      getCvterms(dao);
+    {
+      cvThread = new CvTermThread(dao);
+      cvThread.start();
+    }
     
     final Hashtable id_store = new Hashtable();
 
@@ -1030,8 +1035,21 @@ public class DatabaseDocument extends Document
     }
 
     logger4j.debug( new String(buff.getBytes()) );
-    
 
+    // now wait for cvterm to be loaded
+    if(cvThread != null)
+    {
+      while(cvThread.isAlive())
+        try
+        {
+          Thread.sleep(10);
+        }
+        catch(InterruptedException e)
+        {
+          // TODO Auto-generated catch block
+          e.printStackTrace();
+        }
+    }
     
     return buff;
   }
@@ -1243,7 +1261,9 @@ public class DatabaseDocument extends Document
 
     this_buff.append("ID=" + name + ";");
     this_buff.append("feature_id=" + featureId.toString() + ";");
-
+    
+    if(feat.getName() != null)
+      this_buff.append("Name=" + feat.getName() + ";");
    
     if(parent_id != null && !parent_id.equals("0"))
     {
@@ -1799,7 +1819,10 @@ public class DatabaseDocument extends Document
   public Vector getCvTermsByCvName(final String cvName)
   {
     if(cvterms == null)
+    {
+      logger4j.debug("getCvTermsByCvName LOADING CVTERMS");
       getCvterms(getDAOOnly());
+    }
     
     return getCvterms("", cvName);
   }
@@ -1890,7 +1913,14 @@ public class DatabaseDocument extends Document
       DatabaseDocument doc = (DatabaseDocument)feature.getDocumentEntry().getDocument();
       try
       {
-        cvterms = getCvterms(doc.getDAO());
+        Cv cv = new Cv();
+        cv.setName(cv_name);
+        List synonymCvTerms = doc.getDAO().getCvTermByNameInCv(null, cv);
+        String synonymNames[] = new String[synonymCvTerms.size()];
+        for(int i=0; i<synonymCvTerms.size(); i++)
+          synonymNames[i] = ((CvTerm) synonymCvTerms.get(i)).getName();
+
+        return synonymNames;
       }
       catch(ConnectException e){}
       catch(SQLException e){}   
-- 
GitLab