X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fanalysis%2FCrossRef.java;h=05814c2784e5a0da1be2c4a21907c41de8e9f269;hb=a7591fdadf3edeb556d1417967787a5bfdb1da32;hp=4a7a41bb6e290d919139a77e33d0579f693e1d3c;hpb=56a55873956da91d4301cbab320c69873f2329ab;p=jalview.git diff --git a/src/jalview/analysis/CrossRef.java b/src/jalview/analysis/CrossRef.java index 4a7a41b..05814c2 100644 --- a/src/jalview/analysis/CrossRef.java +++ b/src/jalview/analysis/CrossRef.java @@ -401,28 +401,7 @@ public class CrossRef // first filter in case we are retrieving crossrefs that have already been // retrieved. this happens for cases where a database record doesn't yield // protein products for CDS - DBRefEntry[] dbrSourceSet = sourceRefs.toArray(new DBRefEntry[0]); - for (SequenceI sq : dataset.getSequences()) - { - boolean dupeFound = false; - // !fromDna means we are looking only for nucleotide sequences, not - // protein - if (sq.isProtein() == fromDna) - { - for (DBRefEntry dbr : sq.getPrimaryDBRefs()) - { - for (DBRefEntry found : DBRefUtils.searchRefs(dbrSourceSet, dbr)) - { - sourceRefs.remove(found); - dupeFound = true; - } - } - } - if (dupeFound) - { - dbrSourceSet = sourceRefs.toArray(new DBRefEntry[0]); - } - } + removeAlreadyRetrievedSeqs(sourceRefs, fromDna); if (sourceRefs.size() == 0) { // no more work to do! We already had all requested sequence records in @@ -451,6 +430,43 @@ public class CrossRef : retrievedSequence.getDatasetSequence(); DBRefEntry[] dbr = retrievedSequence.getDBRefs(); if (dbr != null) + + /** + * Search dataset for sequences with a primary reference contained in + * sourceRefs. + * + * @param sourceRefs + * - list of references to filter. + * @param fromDna + * - type of sequence to search for matching primary reference. + */ + private void removeAlreadyRetrievedSeqs(List sourceRefs, + boolean fromDna) + { + DBRefEntry[] dbrSourceSet = sourceRefs.toArray(new DBRefEntry[0]); + for (SequenceI sq : dataset.getSequences()) + { + boolean dupeFound = false; + // !fromDna means we are looking only for nucleotide sequences, not + // protein + if (sq.isProtein() == fromDna) + { + for (DBRefEntry dbr : sq.getPrimaryDBRefs()) + { + for (DBRefEntry found : DBRefUtils.searchRefs(dbrSourceSet, dbr)) + { + sourceRefs.remove(found); + dupeFound = true; + } + } + } + if (dupeFound) + { + dbrSourceSet = sourceRefs.toArray(new DBRefEntry[0]); + } + } + } + { for (DBRefEntry dbref : dbr) {