From: jprocter Date: Sun, 20 Jan 2013 14:29:22 +0000 (+0000) Subject: Merge branch 'Dbfetch_hotfix-JAL-1238' into develop X-Git-Tag: Jalview_2_9~253 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=e1d776602ceedd69cae590bcf85836d7b32c5993;hp=48eed205662848798c4ff2d21d3e184d135b9e83;p=jalview.git Merge branch 'Dbfetch_hotfix-JAL-1238' into develop --- diff --git a/src/jalview/ws/dbsources/EmblCdsSouce.java b/src/jalview/ws/dbsources/EmblCdsSouce.java index 78f2477..0940f40 100644 --- a/src/jalview/ws/dbsources/EmblCdsSouce.java +++ b/src/jalview/ws/dbsources/EmblCdsSouce.java @@ -83,4 +83,10 @@ public class EmblCdsSouce extends EmblXmlSource implements DbSourceProxy return "EMBL (CDS)"; } + @Override + public int getTier() + { + return 0; + } + } diff --git a/src/jalview/ws/dbsources/EmblSource.java b/src/jalview/ws/dbsources/EmblSource.java index 4495be1..c7be59a 100644 --- a/src/jalview/ws/dbsources/EmblSource.java +++ b/src/jalview/ws/dbsources/EmblSource.java @@ -114,4 +114,10 @@ public class EmblSource extends EmblXmlSource implements DbSourceProxy { return "EMBL"; // getDbSource(); } + + @Override + public int getTier() + { + return 0; + } } diff --git a/src/jalview/ws/dbsources/GeneDbSource.java b/src/jalview/ws/dbsources/GeneDbSource.java index 125a295..81c8ea3 100644 --- a/src/jalview/ws/dbsources/GeneDbSource.java +++ b/src/jalview/ws/dbsources/GeneDbSource.java @@ -118,4 +118,9 @@ public class GeneDbSource extends EmblXmlSource implements DbSourceProxy { return "GeneDB"; // getDbSource(); } + @Override + public int getTier() + { + return 0; + } } diff --git a/src/jalview/ws/dbsources/Pdb.java b/src/jalview/ws/dbsources/Pdb.java index 219008d..631a79f 100644 --- a/src/jalview/ws/dbsources/Pdb.java +++ b/src/jalview/ws/dbsources/Pdb.java @@ -220,4 +220,9 @@ public class Pdb extends EbiFileRetrievedProxy implements DbSourceProxy return "PDB"; // getDbSource(); } + @Override + public int getTier() + { + return 0; + } } diff --git a/src/jalview/ws/dbsources/PfamFull.java b/src/jalview/ws/dbsources/PfamFull.java index 75d4559..077b929 100644 --- a/src/jalview/ws/dbsources/PfamFull.java +++ b/src/jalview/ws/dbsources/PfamFull.java @@ -65,4 +65,9 @@ public class PfamFull extends Pfam implements DbSourceProxy return null; } + @Override + public int getTier() + { + return 0; + } } diff --git a/src/jalview/ws/dbsources/PfamSeed.java b/src/jalview/ws/dbsources/PfamSeed.java index cab4999..cb00a1d 100644 --- a/src/jalview/ws/dbsources/PfamSeed.java +++ b/src/jalview/ws/dbsources/PfamSeed.java @@ -62,4 +62,9 @@ public class PfamSeed extends Pfam implements DbSourceProxy return "PF03760"; } + @Override + public int getTier() + { + return 0; + } } diff --git a/src/jalview/ws/dbsources/RfamFull.java b/src/jalview/ws/dbsources/RfamFull.java index 3703e41..e20527a 100644 --- a/src/jalview/ws/dbsources/RfamFull.java +++ b/src/jalview/ws/dbsources/RfamFull.java @@ -70,4 +70,9 @@ public class RfamFull extends Rfam implements DbSourceProxy return null; } + @Override + public int getTier() + { + return 0; + } } diff --git a/src/jalview/ws/dbsources/RfamSeed.java b/src/jalview/ws/dbsources/RfamSeed.java index eb3c2c3..75fa62b 100644 --- a/src/jalview/ws/dbsources/RfamSeed.java +++ b/src/jalview/ws/dbsources/RfamSeed.java @@ -69,4 +69,9 @@ public class RfamSeed extends Rfam implements DbSourceProxy return null; } + @Override + public int getTier() + { + return 0; + } } diff --git a/src/jalview/ws/dbsources/Uniprot.java b/src/jalview/ws/dbsources/Uniprot.java index 48f8649..1b967c4 100644 --- a/src/jalview/ws/dbsources/Uniprot.java +++ b/src/jalview/ws/dbsources/Uniprot.java @@ -294,4 +294,10 @@ public class Uniprot extends DbSourceProxyImpl implements DbSourceProxy { return "Uniprot"; // getDbSource(); } + + @Override + public int getTier() + { + return 0; + } } diff --git a/src/jalview/ws/dbsources/das/api/jalviewSourceI.java b/src/jalview/ws/dbsources/das/api/jalviewSourceI.java index 1511e6b..308bc21 100644 --- a/src/jalview/ws/dbsources/das/api/jalviewSourceI.java +++ b/src/jalview/ws/dbsources/das/api/jalviewSourceI.java @@ -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(); + } diff --git a/src/jalview/ws/dbsources/das/datamodel/DasSequenceSource.java b/src/jalview/ws/dbsources/das/datamodel/DasSequenceSource.java index 95ff7d0..9650b8c 100644 --- a/src/jalview/ws/dbsources/das/datamodel/DasSequenceSource.java +++ b/src/jalview/ws/dbsources/das/datamodel/DasSequenceSource.java @@ -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; + } } diff --git a/src/jalview/ws/dbsources/das/datamodel/JalviewSource.java b/src/jalview/ws/dbsources/das/datamodel/JalviewSource.java index eb9d807..f68a005 100644 --- a/src/jalview/ws/dbsources/das/datamodel/JalviewSource.java +++ b/src/jalview/ws/dbsources/das/datamodel/JalviewSource.java @@ -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; + } } diff --git a/src/jalview/ws/seqfetcher/ASequenceFetcher.java b/src/jalview/ws/seqfetcher/ASequenceFetcher.java index 45b866e..e475915 100644 --- a/src/jalview/ws/seqfetcher/ASequenceFetcher.java +++ b/src/jalview/ws/seqfetcher/ASequenceFetcher.java @@ -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(); diff --git a/src/jalview/ws/seqfetcher/DbSourceProxy.java b/src/jalview/ws/seqfetcher/DbSourceProxy.java index cc9997f..e4b76b9 100644 --- a/src/jalview/ws/seqfetcher/DbSourceProxy.java +++ b/src/jalview/ws/seqfetcher/DbSourceProxy.java @@ -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 index 0000000..2f826b3 --- /dev/null +++ b/test/jalview/ws/seqfetcher/DbRefFetcherTest.java @@ -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 srces = new ArrayList(); + for (String ddb : defdb) + { + SequenceFetcher sfetcher= new SequenceFetcher(); + List 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); + } + +}