Merge branch 'Dbfetch_hotfix-JAL-1238' into develop
authorjprocter <jprocter@compbio.dundee.ac.uk>
Sun, 20 Jan 2013 14:29:22 +0000 (14:29 +0000)
committerjprocter <jprocter@compbio.dundee.ac.uk>
Sun, 20 Jan 2013 14:29:22 +0000 (14:29 +0000)
15 files changed:
src/jalview/ws/dbsources/EmblCdsSouce.java
src/jalview/ws/dbsources/EmblSource.java
src/jalview/ws/dbsources/GeneDbSource.java
src/jalview/ws/dbsources/Pdb.java
src/jalview/ws/dbsources/PfamFull.java
src/jalview/ws/dbsources/PfamSeed.java
src/jalview/ws/dbsources/RfamFull.java
src/jalview/ws/dbsources/RfamSeed.java
src/jalview/ws/dbsources/Uniprot.java
src/jalview/ws/dbsources/das/api/jalviewSourceI.java
src/jalview/ws/dbsources/das/datamodel/DasSequenceSource.java
src/jalview/ws/dbsources/das/datamodel/JalviewSource.java
src/jalview/ws/seqfetcher/ASequenceFetcher.java
src/jalview/ws/seqfetcher/DbSourceProxy.java
test/jalview/ws/seqfetcher/DbRefFetcherTest.java [new file with mode: 0644]

index 78f2477..0940f40 100644 (file)
@@ -83,4 +83,10 @@ public class EmblCdsSouce extends EmblXmlSource implements DbSourceProxy
     return "EMBL (CDS)";
   }
 
+  @Override
+  public int getTier()
+  {
+    return 0;
+  }
+
 }
index 4495be1..c7be59a 100644 (file)
@@ -114,4 +114,10 @@ public class EmblSource extends EmblXmlSource implements DbSourceProxy
   {
     return "EMBL"; // getDbSource();
   }
+
+  @Override
+  public int getTier()
+  {
+    return 0;
+  }
 }
index 125a295..81c8ea3 100644 (file)
@@ -118,4 +118,9 @@ public class GeneDbSource extends EmblXmlSource implements DbSourceProxy
   {
     return "GeneDB"; // getDbSource();
   }
+  @Override
+  public int getTier()
+  {
+    return 0;
+  }
 }
index 219008d..631a79f 100644 (file)
@@ -220,4 +220,9 @@ public class Pdb extends EbiFileRetrievedProxy implements DbSourceProxy
     return "PDB"; // getDbSource();
   }
 
+  @Override
+  public int getTier()
+  {
+    return 0;
+  }
 }
index 75d4559..077b929 100644 (file)
@@ -65,4 +65,9 @@ public class PfamFull extends Pfam implements DbSourceProxy
     return null;
   }
 
+   @Override
+  public int getTier()
+  {
+    return 0;
+  }
 }
index cab4999..cb00a1d 100644 (file)
@@ -62,4 +62,9 @@ public class PfamSeed extends Pfam implements DbSourceProxy
     return "PF03760";
   }
 
+  @Override
+  public int getTier()
+  {
+    return 0;
+  }
 }
index 3703e41..e20527a 100644 (file)
@@ -70,4 +70,9 @@ public class RfamFull extends Rfam implements DbSourceProxy
     return null;
   }
 
+  @Override
+  public int getTier()
+  {
+    return 0;
+  }
 }
index eb3c2c3..75fa62b 100644 (file)
@@ -69,4 +69,9 @@ public class RfamSeed extends Rfam implements DbSourceProxy
     return null;
   }
 
+  @Override
+  public int getTier()
+  {
+    return 0;
+  }
 }
index 48f8649..1b967c4 100644 (file)
@@ -294,4 +294,10 @@ public class Uniprot extends DbSourceProxyImpl implements DbSourceProxy
   {
     return "Uniprot"; // getDbSource();
   }
+
+  @Override
+  public int getTier()
+  {
+    return 0;
+  }
 }
index 1511e6b..308bc21 100644 (file)
@@ -74,4 +74,10 @@ public interface jalviewSourceI
    */
   boolean isNewerThan(jalviewSourceI jalviewSourceI);
 
+  /**
+   * test if the source is a reference source for the authority
+   * @return
+   */
+  boolean isReferenceSource();
+
 }
index 95ff7d0..9650b8c 100644 (file)
@@ -70,6 +70,11 @@ public class DasSequenceSource extends DbSourceProxyImpl implements
   protected MultipleConnectionPropertyProviderI connprops = null;
 
   /**
+   * DAS sources are tier 1 - if we have a direct DB connection then we should prefer it
+   */
+  private int tier=1;
+
+  /**
    * create a new DbSource proxy for a DAS 1 source
    * 
    * @param dbnbame
@@ -94,6 +99,7 @@ public class DasSequenceSource extends DbSourceProxyImpl implements
       throw new Exception("Source " + source.getTitle()
               + " does not support the sequence command.");
     }
+    this.tier = 1+((jsrc.isLocal() || jsrc.isReferenceSource()) ? 0 : 1);
     this.source = source;
     this.dbname = dbname;
     this.dbrefname = dbrefname.toUpperCase();
@@ -334,4 +340,10 @@ public class DasSequenceSource extends DbSourceProxyImpl implements
   {
     return coordsys;
   }
+
+  @Override
+  public int getTier()
+  {
+    return tier;
+  }
 }
index eb9d807..f68a005 100644 (file)
@@ -366,4 +366,11 @@ public class JalviewSource implements jalviewSourceI
     return isLaterThan(getVersion().getCreated(), other.getVersion()
             .getCreated());
   }
+
+  @Override
+  public boolean isReferenceSource()
+  {
+    // TODO check source object for indication that we are the primary for a DAS coordinate system
+    return false;
+  }
 }
index 45b866e..e475915 100644 (file)
@@ -272,9 +272,10 @@ public class ASequenceFetcher
       DbSourceProxy[] l = dblist.values().toArray(new DbSourceProxy[0]);
       int i = 0;
       String[] nm = new String[l.length];
+      // make sure standard dbs appear first, followed by reference das sources, followed by anything else.
       for (DbSourceProxy s : l)
       {
-        nm[i++] = s.getDbName().toLowerCase();
+        nm[i++] = ""+s.getTier()+s.getDbName().toLowerCase();
       }
       jalview.util.QuickSort.sort(nm, l);
       dbs = new ArrayList<DbSourceProxy>();
index cc9997f..e4b76b9 100644 (file)
@@ -134,4 +134,11 @@ public interface DbSourceProxy
    * @return true if the source has this property
    */
   public boolean isA(Object dbsourceproperty);
+
+  /**
+   * Tier for this data source
+   *  
+   * @return 0 - primary datasource, 1 - das primary source, 2 - secondary
+   */
+  public int getTier();
 }
diff --git a/test/jalview/ws/seqfetcher/DbRefFetcherTest.java b/test/jalview/ws/seqfetcher/DbRefFetcherTest.java
new file mode 100644 (file)
index 0000000..2f826b3
--- /dev/null
@@ -0,0 +1,78 @@
+/**
+ * 
+ */
+package jalview.ws.seqfetcher;
+
+import static org.junit.Assert.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import jalview.datamodel.DBRefSource;
+import jalview.ws.DBRefFetcher;
+import jalview.ws.SequenceFetcher;
+import jalview.ws.dbsources.das.api.jalviewSourceI;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * @author jimp
+ *
+ */
+public class DbRefFetcherTest
+{
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @BeforeClass
+  public static void setUpBeforeClass() throws Exception
+  {
+  }
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @AfterClass
+  public static void tearDownAfterClass() throws Exception
+  {
+  }
+
+  @Test
+  public void testStandardProtDbs()
+  {
+    String[] defdb = DBRefSource.PROTEINDBS;
+  List<DbSourceProxy> srces = new ArrayList<DbSourceProxy>();
+  for (String ddb : defdb)
+  {
+    SequenceFetcher sfetcher= new SequenceFetcher();
+    List<DbSourceProxy> srcesfordb = sfetcher.getSourceProxy(ddb);
+    
+    if (srcesfordb != null)
+    {
+      srces.addAll(srcesfordb);
+    }
+  }
+  DbSourceProxy uniprot=null;
+  int i=0;
+  // append the selected sequence sources to the default dbs
+  for (DbSourceProxy s:srces)
+  {
+    if (s.getDbSource().equalsIgnoreCase(DBRefSource.UNIPROT))
+    {
+      i++;
+    }
+    
+    if (s instanceof jalview.ws.dbsources.Uniprot)
+    {
+      uniprot = s;
+      break;
+    }
+  }
+          
+  assertTrue("Failed to find Uniprot source as first source amongst "+srces.size()+" sources (source was at position "+i+")", uniprot!=null && i<2);
+  }
+
+}