return result;
}
- /* (non-Javadoc)
+
+ /*
+ * (non-Javadoc)
+ *
* @see jalview.datamodel.AlignmentI#findIndex(jalview.datamodel.SequenceI)
*/
public int findIndex(SequenceI s)
return -1;
}
- /* (non-Javadoc)
+
+ /*
+ * (non-Javadoc)
+ *
* @see jalview.datamodel.AlignmentI#findIndex(jalview.datamodel.SearchResults)
*/
public int findIndex(SearchResults results)
{
- int i=0;
-
- while (i<sequences.size())
+ int i = 0;
+
+ while (i < sequences.size())
{
if (results.involvesSequence(getSequenceAt(i)))
{
return removed;
}
+ public void append(AlignmentI toappend)
+ {
+ // TODO test this method for a future 2.5 release
+ // currently tested for use in jalview.gui.SequenceFetcher
+ boolean samegap = toappend.getGapCharacter()==getGapCharacter();
+ char oldc = toappend.getGapCharacter();
+ boolean hashidden = toappend.getHiddenSequences()!=null && toappend.getHiddenSequences().hiddenSequences!=null;
+ // get all sequences including any hidden ones
+ Vector sqs = (hashidden) ? toappend.getHiddenSequences().getFullAlignment().getSequences() : toappend.getSequences();
+ if (sqs != null)
+ {
+ Enumeration sq = sqs.elements();
+ while (sq.hasMoreElements())
+ {
+ SequenceI addedsq=(SequenceI) sq.nextElement();
+ if (!samegap)
+ {
+ char[] oldseq = addedsq.getSequence();
+ for (int c=0;c<oldseq.length;c++)
+ {
+ if (oldseq[c]==oldc)
+ {
+ oldseq[c] = gapCharacter;
+ }
+ }
+ }
+ addSequence(addedsq);
+ }
+ }
+ AlignmentAnnotation[] alan = toappend.getAlignmentAnnotation();
+ for (int a = 0; alan != null && a < alan.length; a++)
+ {
+ addAnnotation(alan[a]);
+ }
+ AlignedCodonFrame[] acod = toappend.getCodonFrames();
+ for (int a = 0; acod != null && a < acod.length; a++)
+ {
+ this.addCodonFrame(acod[a]);
+ }
+ Vector sg = toappend.getGroups();
+ if (sg != null)
+ {
+ Enumeration el = sg.elements();
+ while (el.hasMoreElements())
+ {
+ addGroup((SequenceGroup) el.nextElement());
+ }
+ }
+ if (toappend.getHiddenSequences()!=null)
+ {
+ HiddenSequences hs = toappend.getHiddenSequences();
+ if (hiddenSequences==null)
+ {
+ hiddenSequences = new HiddenSequences(this);
+ }
+ if (hs.hiddenSequences!=null)
+ {
+ for (int s=0;s<hs.hiddenSequences.length; s++)
+ {
+ // hide the newly appended sequence in the alignment
+ if (hs.hiddenSequences[s]!=null)
+ {
+ hiddenSequences.hideSequence(hs.hiddenSequences[s]);
+ }
+ }
+ }
+ }
+ if (toappend.getProperties()!=null)
+ {
+ // we really can't do very much here - just try to concatenate strings where property collisions occur.
+ Enumeration key = toappend.getProperties().keys();
+ while (key.hasMoreElements())
+ {
+ Object k = key.nextElement();
+ Object ourval = this.getProperty(k);
+ Object toapprop = toappend.getProperty(k);
+ if (ourval!=null)
+ {
+ if (ourval.getClass().equals(toapprop.getClass()) && !ourval.equals(toapprop))
+ {
+ if (ourval instanceof String)
+ {
+ // append strings
+ this.setProperty(k, ((String) ourval)+"; "+((String) toapprop));
+ } else {
+ if (ourval instanceof Vector)
+ {
+ // append vectors
+ Enumeration theirv = ((Vector) toapprop).elements();
+ while (theirv.hasMoreElements())
+ {
+ ((Vector)ourval).addElement(theirv);
+ }
+ }
+ }
+ }
+ } else {
+ // just add new property directly
+ setProperty(k, toapprop);
+ }
+
+ }
+ }
+ }
+
}
return;
}
AlignmentI aresult = null;
+ Object source = database.getSelectedItem();
+ Enumeration en = new StringTokenizer(textArea.getText(), ";");
try
{
guiWindow.setProgressBar("Fetching Sequences from "
+ database.getSelectedItem(), Thread.currentThread()
.hashCode());
- aresult = sfetch.getSourceProxy(
- (String) sources.get(database.getSelectedItem()))
- .getSequenceRecords(textArea.getText());
+ DbSourceProxy proxy = sfetch.getSourceProxy(
+ (String) sources.get(source));
+ if (proxy.getAccessionSeparator()==null)
+ {
+ while (en.hasMoreElements())
+ {
+ String item = (String) en.nextElement();
+ try {
+ if (aresult!=null)
+ {
+ try {
+ // give the server a chance to breathe
+ Thread.sleep(5);
+ } catch (Exception e)
+ {
+ //
+ }
+
+ }
+ AlignmentI indres = proxy.getSequenceRecords(item);
+ if (indres!=null)
+ {
+ if (aresult == null)
+ {
+ aresult = indres;
+ } else {
+ aresult.append(indres);
+ }
+ }
+ } catch (Exception e)
+ {
+ jalview.bin.Cache.log.info("Error retrieving "+item+" from "+source,e);
+ }
+ }
+ } else {
+ StringBuffer multiacc = new StringBuffer();
+ while (en.hasMoreElements())
+ {
+ multiacc.append(en.nextElement());
+ if (en.hasMoreElements())
+ {
+ multiacc.append(proxy.getAccessionSeparator());
+ }
+ }
+ aresult = proxy
+ .getSequenceRecords(multiacc.toString());
+ }
} catch (Exception e)
{