/*\r
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.4)\r
- * Copyright (C) 2008 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+ * Jalview - A Sequence Alignment Editor and Viewer (Development Version 2.4.1)\r
+ * Copyright (C) 2009 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
Vector refs = new Vector();\r
for (int s = 0; s < seqs.length; s++)\r
{\r
- SequenceI dss = seqs[s];\r
- while (dss.getDatasetSequence() != null)\r
+ if (seqs[s] != null)\r
{\r
- dss = dss.getDatasetSequence();\r
- }\r
- DBRefEntry[] rfs = findXDbRefs(dna, dss.getDBRef());\r
- for (int r = 0; rfs != null && r < rfs.length; r++)\r
- {\r
- if (!refs.contains(rfs[r].getSource()))\r
+\r
+ SequenceI dss = seqs[s];\r
+ while (dss.getDatasetSequence() != null)\r
{\r
- refs.addElement(rfs[r].getSource());\r
+ dss = dss.getDatasetSequence();\r
}\r
- }\r
- if (dataset != null)\r
- {\r
- // search for references to this sequence's direct references.\r
- DBRefEntry[] lrfs = CrossRef.findXDbRefs(!dna, seqs[s].getDBRef());\r
- Vector rseqs = new Vector();\r
- CrossRef.searchDatasetXrefs(seqs[s], !dna, lrfs, dataset, rseqs,\r
- null); // don't need to specify codon frame for mapping here\r
- Enumeration lr = rseqs.elements();\r
- while (lr.hasMoreElements())\r
+ DBRefEntry[] rfs = findXDbRefs(dna, dss.getDBRef());\r
+ for (int r = 0; rfs != null && r < rfs.length; r++)\r
{\r
- SequenceI rs = (SequenceI) lr.nextElement();\r
- DBRefEntry[] xrs = findXDbRefs(dna, rs.getDBRef());\r
- for (int r = 0; rfs != null && r < rfs.length; r++)\r
+ if (!refs.contains(rfs[r].getSource()))\r
{\r
- if (!refs.contains(rfs[r].getSource()))\r
+ refs.addElement(rfs[r].getSource());\r
+ }\r
+ }\r
+ if (dataset != null)\r
+ {\r
+ // search for references to this sequence's direct references.\r
+ DBRefEntry[] lrfs = CrossRef\r
+ .findXDbRefs(!dna, seqs[s].getDBRef());\r
+ Vector rseqs = new Vector();\r
+ CrossRef.searchDatasetXrefs(seqs[s], !dna, lrfs, dataset, rseqs,\r
+ null); // don't need to specify codon frame for mapping here\r
+ Enumeration lr = rseqs.elements();\r
+ while (lr.hasMoreElements())\r
+ {\r
+ SequenceI rs = (SequenceI) lr.nextElement();\r
+ DBRefEntry[] xrs = findXDbRefs(dna, rs.getDBRef());\r
+ for (int r = 0; rfs != null && r < rfs.length; r++)\r
{\r
- refs.addElement(rfs[r].getSource());\r
+ if (!refs.contains(rfs[r].getSource()))\r
+ {\r
+ refs.addElement(rfs[r].getSource());\r
+ }\r
}\r
}\r
}\r
// xrefs on this sequence.\r
if (dataset != null)\r
{\r
- found |= searchDataset(dss, xrfs[r], dataset, rseqs, cf);\r
+ found |= searchDataset(dss, xrfs[r], dataset, rseqs, cf); // ,false,!dna);\r
if (found)\r
xrfs[r] = null; // we've recovered seqs for this one.\r
}\r
try\r
{\r
retrieved = sftch.getSequences(xrfs); // problem here is we don't\r
- // know which of xrfs\r
- // resulted in which\r
- // retrieved element\r
+ // know which of xrfs\r
+ // resulted in which\r
+ // retrieved element\r
} catch (Exception e)\r
{\r
System.err\r
}\r
\r
// look for direct or indirect references in common\r
- DBRefEntry[] poss = null, cands = null;\r
+ DBRefEntry[] poss = nxt.getDBRef(), cands = null;\r
if (direct)\r
{\r
- cands = jalview.util.DBRefUtils.searchRefs(poss = nxt\r
- .getDBRef(), xrf);\r
+ cands = jalview.util.DBRefUtils.searchRefs(poss , xrf);\r
}\r
else\r
{\r
- cands = jalview.util.DBRefUtils.searchRefs(poss = CrossRef\r
- .findXDbRefs(dna, nxt.getDBRef()), xrf);\r
+ poss = CrossRef\r
+ .findXDbRefs(dna, poss); // \r
+ cands = jalview.util.DBRefUtils.searchRefs(poss, xrf);\r
}\r
if (cands != null)\r
{\r