X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fseqfetcher%2FASequenceFetcher.java;h=8f3f3b83bd2b1369fbc56b88c152bfe71842cf1a;hb=a1984b1c8c273ed33c7ce9283039f4027dcae2de;hp=9e438d335dab9e1a79dcb16d46be501079d69427;hpb=d015dda1e582c4654acd7fb7761fb0c0a2dc3573;p=jalview.git diff --git a/src/jalview/ws/seqfetcher/ASequenceFetcher.java b/src/jalview/ws/seqfetcher/ASequenceFetcher.java index 9e438d3..8f3f3b8 100644 --- a/src/jalview/ws/seqfetcher/ASequenceFetcher.java +++ b/src/jalview/ws/seqfetcher/ASequenceFetcher.java @@ -20,6 +20,7 @@ */ package jalview.ws.seqfetcher; +import jalview.api.FeatureSettingsModelI; import jalview.bin.Cache; import jalview.datamodel.AlignmentI; import jalview.datamodel.DBRefEntry; @@ -54,7 +55,7 @@ public class ASequenceFetcher /** * Constructor */ - public ASequenceFetcher() + protected ASequenceFetcher() { super(); @@ -97,8 +98,8 @@ public class ASequenceFetcher { return null; } - String[] sf = fetchableDbs.keySet().toArray( - new String[fetchableDbs.size()]); + String[] sf = fetchableDbs.keySet() + .toArray(new String[fetchableDbs.size()]); return sf; } @@ -111,8 +112,7 @@ public class ASequenceFetcher return true; } } - Cache.log.warn("isFetchable doesn't know about '" + source - + "'"); + Cache.warn("isFetchable doesn't know about '" + source + "'"); return false; } @@ -124,20 +124,21 @@ public class ASequenceFetcher * if true, only fetch from nucleotide data sources, else peptide * @return */ - public SequenceI[] getSequences(DBRefEntry[] refs, boolean dna) + public SequenceI[] getSequences(List refs, boolean dna) { - Vector rseqs = new Vector(); - Hashtable> queries = new Hashtable>(); - for (int r = 0; r < refs.length; r++) + Vector rseqs = new Vector<>(); + Hashtable> queries = new Hashtable<>(); + for (DBRefEntry ref : refs) { - if (!queries.containsKey(refs[r].getSource())) + String canonical = DBRefUtils.getCanonicalName(ref.getSource()); + if (!queries.containsKey(canonical)) { - queries.put(refs[r].getSource(), new ArrayList()); + queries.put(canonical, new ArrayList()); } - List qset = queries.get(refs[r].getSource()); - if (!qset.contains(refs[r].getAccessionId())) + List qset = queries.get(canonical); + if (!qset.contains(ref.getAccessionId())) { - qset.add(refs[r].getAccessionId()); + qset.add(ref.getAccessionId()); } } Enumeration e = queries.keys(); @@ -154,21 +155,21 @@ public class ASequenceFetcher continue; } - Stack queriesLeft = new Stack(); + Stack queriesLeft = new Stack<>(); queriesLeft.addAll(query); - for (DbSourceProxy fetcher : getSourceProxy(db)) + List proxies = getSourceProxy(db); + for (DbSourceProxy fetcher : proxies) { - List queriesMade = new ArrayList(); - HashSet queriesFound = new HashSet(); + List queriesMade = new ArrayList<>(); + HashSet queriesFound = new HashSet<>(); try { if (fetcher.isDnaCoding() != dna) { continue; // wrong sort of data } - boolean doMultiple = fetcher.getAccessionSeparator() != null; - // No separator - no Multiple Queries + boolean doMultiple = fetcher.getMaximumQueryCount() > 1; while (!queriesLeft.isEmpty()) { StringBuffer qsb = new StringBuffer(); @@ -187,12 +188,11 @@ public class ASequenceFetcher try { // create a fetcher and go to it - seqset = fetcher.getSequenceRecords(qsb.toString()); // , - // queriesFailed); + seqset = fetcher.getSequenceRecords(qsb.toString()); } catch (Exception ex) { - System.err.println("Failed to retrieve the following from " - + db); + System.err.println( + "Failed to retrieve the following from " + db); System.err.println(qsb); ex.printStackTrace(System.err); } @@ -205,15 +205,14 @@ public class ASequenceFetcher for (int is = 0; is < seqs.length; is++) { rseqs.addElement(seqs[is]); - DBRefEntry[] frefs = DBRefUtils.searchRefs(seqs[is] - .getDBRef(), new DBRefEntry(db, null, null)); - if (frefs != null) + // BH 2015.01.25 check about version/accessid being null here + List frefs = DBRefUtils.searchRefs( + seqs[is].getDBRefs(), + new DBRefEntry(db, null, null), DBRefUtils.SEARCH_MODE_FULL); + for (DBRefEntry dbr : frefs) { - for (DBRefEntry dbr : frefs) - { - queriesFound.add(dbr.getAccessionId()); - queriesMade.remove(dbr.getAccessionId()); - } + queriesFound.add(dbr.getAccessionId()); + queriesMade.remove(dbr.getAccessionId()); } seqs[is] = null; } @@ -222,8 +221,8 @@ public class ASequenceFetcher { if (fetcher.getRawRecords() != null) { - System.out.println("# Retrieved from " + db + ":" - + qsb.toString()); + System.out.println( + "# Retrieved from " + db + ":" + qsb.toString()); StringBuffer rrb = fetcher.getRawRecords(); /* * for (int rr = 0; rr dblist = fetchableDbs.get(db); if (dblist == null) { - return new ArrayList(); + return new ArrayList<>(); } /* * sort so that primary sources precede secondary */ - List dbs = new ArrayList(dblist.values()); + List dbs = new ArrayList<>(dblist.values()); Collections.sort(dbs, proxyComparator); return dbs; } @@ -342,10 +341,8 @@ public class ASequenceFetcher } catch (Exception e) { // Serious problems if this happens. - throw new Error( - MessageManager - .getString("error.dbrefsource_implementation_exception"), - e); + throw new Error(MessageManager + .getString("error.dbrefsource_implementation_exception"), e); } addDbRefSourceImpl(proxy); } @@ -362,14 +359,14 @@ public class ASequenceFetcher { if (fetchableDbs == null) { - fetchableDbs = new Hashtable>(); + fetchableDbs = new Hashtable<>(); } - Map slist = fetchableDbs.get(proxy - .getDbSource()); + Map slist = fetchableDbs + .get(proxy.getDbSource()); if (slist == null) { fetchableDbs.put(proxy.getDbSource(), - slist = new Hashtable()); + slist = new Hashtable<>()); } slist.put(proxy.getDbName(), proxy); } @@ -378,25 +375,25 @@ public class ASequenceFetcher /** * select sources which are implemented by instances of the given class * - * @param class that implements DbSourceProxy + * @param class + * that implements DbSourceProxy * @return null or vector of source names for fetchers */ public String[] getDbInstances(Class class1) { if (!DbSourceProxy.class.isAssignableFrom(class1)) { - throw new Error( - MessageManager - .formatMessage( - "error.implementation_error_dbinstance_must_implement_interface", - new String[] { class1.toString() })); + throw new Error(MessageManager.formatMessage( + "error.implementation_error_dbinstance_must_implement_interface", + new String[] + { class1.toString() })); } if (fetchableDbs == null) { return null; } String[] sources = null; - Vector src = new Vector(); + Vector src = new Vector<>(); Enumeration dbs = fetchableDbs.keys(); while (dbs.hasMoreElements()) { @@ -418,7 +415,7 @@ public class ASequenceFetcher public DbSourceProxy[] getDbSourceProxyInstances(Class class1) { - List prlist = new ArrayList(); + List prlist = new ArrayList<>(); for (String fetchable : getSupportedDb()) { for (DbSourceProxy pr : getSourceProxy(fetchable)) @@ -436,4 +433,28 @@ public class ASequenceFetcher return prlist.toArray(new DbSourceProxy[0]); } + /** + * Returns a preferred feature colouring scheme for the given source, or null + * if none is defined. + * + * @param source + * @return + */ + public FeatureSettingsModelI getFeatureColourScheme(String source) + { + /* + * return the first non-null colour scheme for any proxy for + * this database source + */ + for (DbSourceProxy proxy : getSourceProxy(source)) + { + FeatureSettingsModelI preferredColours = proxy + .getFeatureColourScheme(); + if (preferredColours != null) + { + return preferredColours; + } + } + return null; + } }