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
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();
{
return coordsys;
}
+
+ @Override
+ public int getTier()
+ {
+ return tier;
+ }
}
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>();
--- /dev/null
+/**
+ *
+ */
+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);
+ }
+
+}