import jalview.gui.IProgressIndicator;\r
import jalview.gui.OOMWarning;\r
import jalview.ws.dbsources.das.api.jalviewSourceI;\r
+import jalview.ws.seqfetcher.DbSourceProxy;\r
\r
import java.lang.reflect.Array;\r
+import java.util.ArrayList;\r
import java.util.Enumeration;\r
import java.util.Hashtable;\r
import java.util.List;\r
// The key will be the seq name or accession id of the seq\r
Hashtable seqRefs;\r
\r
- String[] dbSources;\r
+ DbSourceProxy[] dbSources;\r
\r
SequenceFetcher sfetcher;\r
\r
* @param sources\r
* array of database source strings to query references from\r
*/\r
- public DBRefFetcher(SequenceI[] seqs, AlignFrame af, String[] sources)\r
+ public DBRefFetcher(SequenceI[] seqs, AlignFrame af, DbSourceProxy[] sources)\r
{\r
this.af = af;\r
alseqs = new SequenceI[seqs.length];\r
// af.featureSettings_actionPerformed(null);\r
String[] defdb = null, otherdb = sfetcher\r
.getDbInstances(jalview.ws.dbsources.das.datamodel.DasSequenceSource.class);\r
- Vector selsources = new Vector(), dasselsrc = (af.featureSettings != null) ? af.featureSettings\r
+ List<DbSourceProxy> selsources = new ArrayList<DbSourceProxy>();\r
+ Vector dasselsrc = (af.featureSettings != null) ? af.featureSettings\r
.getSelectedSources() : new jalview.gui.DasSourceBrowser()\r
.getSelectedSources();\r
- Enumeration en = dasselsrc.elements();\r
+ Enumeration<jalviewSourceI> en = dasselsrc.elements();\r
while (en.hasMoreElements())\r
{\r
- jalviewSourceI src = (jalviewSourceI) en.nextElement();\r
- selsources.addElement(src.getTitle());\r
- }\r
- int osel = 0;\r
- for (int o = 0; otherdb != null && o < otherdb.length; o++)\r
- {\r
- if (!selsources.contains(otherdb[o]))\r
+ jalviewSourceI src = en.nextElement();\r
+ List<DbSourceProxy> sp=src.getSequenceSourceProxies();\r
+ selsources.addAll(sp);\r
+ if (sp.size()>1)\r
{\r
- otherdb[o] = null;\r
- }\r
- else\r
- {\r
- osel++;\r
+ Cache.log.debug("Added many Db Sources for :"+src.getTitle());\r
}\r
}\r
// select appropriate databases based on alignFrame context.\r
{\r
defdb = DBRefSource.PROTEINDBS;\r
}\r
- // append the selected sequence sources to the default dbs\r
- dbSources = new String[defdb.length + osel];\r
- System.arraycopy(defdb, 0, dbSources, 0, defdb.length);\r
- for (int o = 0, op = defdb.length; otherdb != null\r
- && o < otherdb.length; o++)\r
- {\r
- if (otherdb[o] != null)\r
- {\r
- dbSources[op++] = otherdb[o];\r
- }\r
+ List<DbSourceProxy> srces=new ArrayList<DbSourceProxy>();\r
+ for (String ddb:defdb) {\r
+ srces.addAll(sfetcher.getSourceProxy(ddb));\r
}\r
+ \r
+ // append the selected sequence sources to the default dbs\r
+ srces.addAll(selsources);\r
+ dbSources = srces.toArray(new DbSourceProxy[0]);\r
}\r
else\r
{\r
{\r
if (dbSources == null)\r
{\r
- dbSources = new String[]\r
- {};\r
+ dbSources = new DbSourceProxy[0];\r
}\r
// append additional sources\r
- String[] otherdb = sfetcher\r
- .getDbInstances(jalview.ws.dbsources.das.datamodel.DasSequenceSource.class);\r
+ DbSourceProxy[] otherdb=sfetcher\r
+ .getDbSourceProxyInstances(jalview.ws.dbsources.das.datamodel.DasSequenceSource.class);\r
if (otherdb != null && otherdb.length > 0)\r
{\r
- String[] newsrc = new String[dbSources.length + otherdb.length];\r
+ DbSourceProxy[] newsrc = new DbSourceProxy[dbSources.length + otherdb.length];\r
System.arraycopy(dbSources, 0, newsrc, 0, dbSources.length);\r
System.arraycopy(otherdb, 0, newsrc, dbSources.length, otherdb.length);\r
dbSources = newsrc;\r
while (sdataset.size() > 0 && db < dbSources.length)\r
{\r
int maxqlen = 1; // default number of queries made to at one time\r
- System.err.println("Verifying against " + dbSources[db]);\r
+ System.err.println("Verifying against " + dbSources[db].getDbName());\r
boolean dn = false;\r
- List<jalview.ws.seqfetcher.DbSourceProxy> srcs = sfetcher\r
- .getSourceProxy(dbSources[db]);\r
- if (srcs == null)\r
- {\r
- System.err.println("No proxy for " + dbSources[db]);\r
- db++;\r
- continue;\r
- }\r
\r
// iterate through db for each remaining un-verified sequence\r
SequenceI[] currSeqs = new SequenceI[sdataset.size()];\r
\r
int seqIndex = 0;\r
\r
- for (jalview.ws.seqfetcher.DbSourceProxy dbsource : srcs)\r
+ jalview.ws.seqfetcher.DbSourceProxy dbsource = dbSources[db];\r
{\r
// for moment, we dumbly iterate over all retrieval sources for a particular database\r
// TODO: introduce multithread multisource queries and logic to remove a query from other sources if any source for a database returns a record\r
}\r
if (retrieved != null)\r
{\r
- transferReferences(sdataset, dbSources[db], retrieved);\r
+ transferReferences(sdataset, dbsource.getDbSource(), retrieved);\r
}\r
}\r
else\r
SequenceI sequence = dataset[seqIndex];\r
DBRefEntry[] uprefs = jalview.util.DBRefUtils.selectRefs(\r
sequence.getDBRef(), new String[]\r
- { dbSources[db] }); // jalview.datamodel.DBRefSource.UNIPROT\r
+ { dbsource.getDbSource() }); // jalview.datamodel.DBRefSource.UNIPROT\r
// });\r
// check for existing dbrefs to use\r
if (uprefs != null && uprefs.length > 0)\r