/*\r
* Jalview - A Sequence Alignment Editor and Viewer\r
-* Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+* Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
*\r
* This program is free software; you can redistribute it and/or\r
* modify it under the terms of the GNU General Public License\r
import java.net.URL;\r
\r
import org.biojava.dasobert.das.FeatureThread;\r
-import org.biojava.dasobert.dasregistry.Das1Source;\r
import org.biojava.dasobert.eventmodel.FeatureEvent;\r
import org.biojava.dasobert.eventmodel.FeatureListener;\r
import org.biojava.dasobert.dasregistry.DasSource;\r
\r
long startTime;\r
int threadsRunning = 0;\r
+ boolean allBatchesComplete = false;\r
\r
\r
/**\r
// null\r
// );\r
\r
- // System.out.println(nickname+" "+f.getType()+" "+f.begin+" "+f.end);\r
return f;\r
}\r
catch (Exception e) {\r
+ System.out.println("ERRR "+e);\r
e.printStackTrace();\r
+ System.out.println("############");\r
Cache.log.debug("Failed to parse "+dasfeature.toString(), e);\r
return null;\r
}\r
{\r
setThreadsRunning(+1);\r
\r
- int start=seq.getStart(), end = seq.getEnd();\r
-\r
- if(af.getViewport().getSelectionGroup()!=null)\r
+ // int start=seq.getStart(), end = seq.getEnd();\r
+ /* if(af.getViewport().getSelectionGroup()!=null)\r
{\r
SequenceI tmp = af.getViewport().getAlignment().findName(seq.getName());\r
start = tmp.findPosition(\r
end = tmp.findPosition(\r
af.getViewport().getSelectionGroup().getEndRes()\r
);\r
- }\r
+ }*/\r
\r
FeatureThread fetcher = new FeatureThread(id\r
// + ":" + start + "," + end,\r
synchronized void setThreadsRunning(int i)\r
{\r
threadsRunning += i;\r
- if(threadsRunning<1)\r
+ if(threadsRunning<1 && allBatchesComplete)\r
+ {\r
af.setProgressBar("DAS Feature Fetching Complete", startTime);\r
+\r
+ if(af.featureSettings!=null)\r
+ af.featureSettings.setTableData();\r
+ }\r
}\r
\r
/**\r
\r
try\r
{\r
+ //We must limit the feature fetching to 20 to prevent\r
+ //Servers being overloaded with too many requests\r
+ int batchCount = 0;\r
+ int batchMaxSize = 10;\r
int seqIndex = 0;\r
while (seqIndex < sequences.length)\r
{\r
+ batchCount ++;\r
+ if(batchCount>=batchMaxSize)\r
+ {\r
+ waitTillBatchComplete();\r
+ batchCount = 0;\r
+ }\r
+\r
DBRefEntry [] uprefs = jalview.util.DBRefUtils.selectRefs(sequences[seqIndex].getDBRef(),\r
new String[] {\r
jalview.datamodel.DBRefSource.PDB,\r
{\r
\r
// Will have to pass any mapping information to the fetcher - the start/end for the DBRefEntry may not be the same as the sequence's start/end\r
- org.biojava.dasobert.dasregistry.DasCoordinateSystem cs[] = dasSource.getCoordinateSystem();\r
+ DasCoordinateSystem cs[] = dasSource.getCoordinateSystem();\r
for (int l=0; l<cs.length; l++)\r
{\r
if (jalview.util.DBRefUtils.isDasCoordinateSystem(cs[l].getName(), uprefs[j]))\r
{\r
ex.printStackTrace();\r
}\r
+ allBatchesComplete = true;\r
+ }\r
+\r
+ void waitTillBatchComplete()\r
+ {\r
+ while( threadsRunning > 0 )\r
+ {\r
+ try{\r
+ Thread.sleep(500);\r
+\r
+ }catch(Exception ex)\r
+ {\r
+ ex.printStackTrace();\r
+ }\r
+ }\r
+\r
}\r
\r
\r