- AlignmentI aresult=null;
- try {
- guiWindow.setProgressBar("Fetching Sequences from "+database.getSelectedItem(), Thread.currentThread().hashCode());
- aresult = sfetch.getSourceProxy((String)sources.get(database.getSelectedItem()))
- .getSequenceRecords(textArea.getText());
-
- }
- catch (Exception e)
- {
- showErrorMessage("Error retrieving " + textArea.getText()
- + " from " + database.getSelectedItem());
- //error +="Couldn't retrieve sequences from "+database.getSelectedItem();
- System.err.println("Retrieval failed for source ='"+database.getSelectedItem()+"' and query\n'"+textArea.getText()+"'\n");
- e.printStackTrace();
- }
- catch (OutOfMemoryError e)
- {
- showErrorMessage("Out of Memory when retrieving " + textArea.getText()
- + " from " + database.getSelectedItem()+"\nPlease see the Jalview FAQ for instructions for increasing the memory available to Jalview.\n");
- e.printStackTrace();
- }
- catch (Error e)
- {
- showErrorMessage("Serious Error retrieving " + textArea.getText()
- + " from " + database.getSelectedItem());
- e.printStackTrace();
- }
- guiWindow.setProgressBar(null, Thread.currentThread().hashCode());
- if (aresult!=null)
- {
- parseResult(aresult, null, null);
- }
- resetDialog();
- }
- /*
- result = new StringBuffer();
- if (database.getSelectedItem().equals("Uniprot"))
- {
- getUniprotFile(textArea.getText());
- }
- else if (database.getSelectedItem().equals("EMBL")
- || database.getSelectedItem().equals("EMBLCDS"))
- {
- String DBRefSource = database.getSelectedItem().equals("EMBLCDS")
- ? jalview.datamodel.DBRefSource.EMBLCDS
- : jalview.datamodel.DBRefSource.EMBL;
-
- StringTokenizer st = new StringTokenizer(textArea.getText(), ";");
- SequenceI[] seqs = null;
- while(st.hasMoreTokens())
- {
- EBIFetchClient dbFetch = new EBIFetchClient();
- String qry = database.getSelectedItem().toString().toLowerCase(
- ) + ":" + st.nextToken();
- File reply = dbFetch.fetchDataAsFile(
- qry,
- "emblxml",null);
-
- jalview.datamodel.xdb.embl.EmblFile efile=null;
- if (reply != null && reply.exists())
- {
- efile = jalview.datamodel.xdb.embl.EmblFile.getEmblFile(reply);
- }
- if (efile!=null) {
- for (Iterator i=efile.getEntries().iterator(); i.hasNext(); ) {
- EmblEntry entry = (EmblEntry) i.next();
- SequenceI[] seqparts = entry.getSequences(false,true, DBRefSource);
- if (seqparts!=null) {
- SequenceI[] newseqs = null;
- int si=0;
- if (seqs==null) {
- newseqs = new SequenceI[seqparts.length];
- } else {
- newseqs = new SequenceI[seqs.length+seqparts.length];
-
- for (;si<seqs.length; si++) {
- newseqs[si] = seqs[si];
- seqs[si] = null;
- }
- }
- for (int j=0;j<seqparts.length; si++, j++) {
- newseqs[si] = seqparts[j].deriveSequence(); // place DBReferences on dataset and refer
- }
- seqs=newseqs;
+ // TODO: Refactor to GUI independent code and write tests.
+ // indicate if successive sources should be merged into one alignment.
+ boolean addToLast = false;
+ List<String> aresultq = new ArrayList<String>();
+ List<String> presultTitle = new ArrayList<String>();
+ List<AlignmentI> presult = new ArrayList<AlignmentI>();
+ List<AlignmentI> aresult = new ArrayList<AlignmentI>();
+ Iterator<DbSourceProxy> proxies = database.getSelectedSources()
+ .iterator();
+ String[] qries;
+ List<String> nextFetch = Arrays.asList(qries = textArea.getText()
+ .split(";"));
+ Iterator<String> en = Arrays.asList(new String[0]).iterator();
+ int nqueries = qries.length;
+
+ FeatureSettingsModelI preferredFeatureColours = null;
+ while (proxies.hasNext() && (en.hasNext() || nextFetch.size() > 0))
+ {
+ if (!en.hasNext() && nextFetch.size() > 0)
+ {
+ en = nextFetch.iterator();
+ nqueries = nextFetch.size();
+ // save the remaining queries in the original array
+ qries = nextFetch.toArray(new String[nqueries]);
+ nextFetch = new ArrayList<String>();
+ }