X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fseqfetcher%2FASequenceFetcher.java;h=2a27ccedd4142254485168d945ac60a4f0d9c684;hb=4f77328104498504339216829abf5ea87e2791ec;hp=e205e767e3a75914fc22e67eabfd9ac3f930c66e;hpb=2b8c0785318a3528e1876e8e2dd48b7d831eae69;p=jalview.git diff --git a/src/jalview/ws/seqfetcher/ASequenceFetcher.java b/src/jalview/ws/seqfetcher/ASequenceFetcher.java index e205e76..2a27cce 100644 --- a/src/jalview/ws/seqfetcher/ASequenceFetcher.java +++ b/src/jalview/ws/seqfetcher/ASequenceFetcher.java @@ -36,7 +36,6 @@ import java.util.HashSet; import java.util.Hashtable; import java.util.List; import java.util.Map; -import java.util.Map.Entry; import java.util.Stack; import java.util.Vector; @@ -46,7 +45,7 @@ public class ASequenceFetcher /* * set of databases we can retrieve entries from */ - protected Hashtable> fetchableDbs; + protected Hashtable> fetchableDbs; /* * comparator to sort by tier (0/1/2) and name @@ -58,6 +57,8 @@ public class ASequenceFetcher */ protected ASequenceFetcher() { + super(); + /* * comparator to sort proxies by tier and name */ @@ -304,7 +305,7 @@ public class ASequenceFetcher public List getSourceProxy(String db) { db = DBRefUtils.getCanonicalName(db); - Map dblist = fetchableDbs.get(db); + Map dblist = fetchableDbs.get(db); if (dblist == null) { return new ArrayList<>(); @@ -313,75 +314,27 @@ public class ASequenceFetcher /* * sort so that primary sources precede secondary */ - List dbs = new ArrayList<>(); - for (Entry entry : dblist.entrySet()) - { - DbSourceProxyRoot proxy = entry.getValue(); - if (proxy instanceof DbRoot) - { - proxy = setProxy((DbRoot) proxy, dblist); - } - dbs.add((DbSourceProxy) proxy); - } + List dbs = new ArrayList<>(dblist.values()); Collections.sort(dbs, proxyComparator); return dbs; } - class DbRoot implements DbSourceProxyRoot - { - - private String sourceName; - - private String className; - - DbRoot(String sourceName, String className) - { - this.sourceName = sourceName; - this.className = className; - } - - @Override - public String getDbSource() - { - return sourceName; - } - - /** - * lazy class creation - * - * @return the actual proxy object - */ - public DbSourceProxy getProxy() - { - try - { - System.err.println("ASeqFetch " + className); - return (DbSourceProxy) Class.forName(className).newInstance(); - } catch (Exception e) - { - // Serious problems if this happens. - throw new Error(MessageManager.getString( - "error.dbrefsource_implementation_exception"), e); - } - } - - } - /** * constructs an instance of the proxy and registers it as a valid dbrefsource * - * @param dbSourceProxyClass + * @param dbSourceProxy * reference for class implementing * jalview.ws.seqfetcher.DbSourceProxy */ protected void addDBRefSourceImpl( - Class dbSourceProxyClass) + Class dbSourceProxy) throws IllegalArgumentException { DbSourceProxy proxy = null; try { - proxy = dbSourceProxyClass.getConstructor().newInstance(); + DbSourceProxy proxyObj = dbSourceProxy.getConstructor().newInstance(); + proxy = proxyObj; } catch (IllegalArgumentException e) { throw e; @@ -394,18 +347,13 @@ public class ASequenceFetcher addDbRefSourceImpl(proxy); } - public void addDBRefSourceImpl(String sourceName, String className) - { - addDbRefSourceImpl(new DbRoot(sourceName, className)); - } - /** * add the properly initialised DbSourceProxy object 'proxy' to the list of * sequence fetchers * * @param proxy */ - void addDbRefSourceImpl(DbSourceProxyRoot proxy) + protected void addDbRefSourceImpl(DbSourceProxy proxy) { if (proxy != null) { @@ -413,31 +361,25 @@ public class ASequenceFetcher { fetchableDbs = new Hashtable<>(); } - String key = proxy.getDbSource(); - Map slist = fetchableDbs.get(key); + Map slist = fetchableDbs + .get(proxy.getDbSource()); if (slist == null) { - fetchableDbs.put(key, slist = new Hashtable<>()); - } - if (proxy instanceof DbRoot) - { - slist.put("", proxy); - } - else - { - slist.put(((DbSourceProxy) proxy).getDbName(), proxy); + fetchableDbs.put(proxy.getDbSource(), + slist = new Hashtable<>()); } + slist.put(proxy.getDbName(), proxy); } } /** * select sources which are implemented by instances of the given class * - * @param class1 + * @param class * that implements DbSourceProxy * @return null or vector of source names for fetchers */ - public String[] getDbInstances(Class class1) + public String[] getDbInstances(Class class1) { if (!DbSourceProxy.class.isAssignableFrom(class1)) { @@ -450,25 +392,20 @@ public class ASequenceFetcher { return null; } + String[] sources = null; Vector src = new Vector<>(); - for (String dbSource : fetchableDbs.keySet()) + Enumeration dbs = fetchableDbs.keys(); + while (dbs.hasMoreElements()) { - Map dblist = fetchableDbs.get(dbSource); - for (Entry entry : dblist.entrySet()) + String dbn = dbs.nextElement(); + for (DbSourceProxy dbp : fetchableDbs.get(dbn).values()) { - DbSourceProxyRoot proxy = entry.getValue(); - if (proxy instanceof DbRoot) + if (class1.isAssignableFrom(dbp.getClass())) { - proxy = setProxy((DbRoot) proxy, dblist); - } - Class c = proxy.getClass(); - if (class1 == c || class1.isAssignableFrom(c)) - { - src.addElement(dbSource); + src.addElement(dbn); } } } - String[] sources = null; if (src.size() > 0) { src.copyInto(sources = new String[src.size()]); @@ -476,24 +413,10 @@ public class ASequenceFetcher return sources; } - private DbSourceProxyRoot setProxy(DbRoot root, - Map dblist) - { - DbSourceProxy proxy = root.getProxy(); - // Time to create the actual proxy - dblist.remove(""); - dblist.put(proxy.getDbName(), proxy); - return proxy; - } - - public DbSourceProxy[] getDbSourceProxyInstances(Class class1) + public DbSourceProxy[] getDbSourceProxyInstances(Class class1) { - if (fetchableDbs == null) - { - return null; - } List prlist = new ArrayList<>(); - for (String fetchable : fetchableDbs.keySet()) + for (String fetchable : getSupportedDb()) { for (DbSourceProxy pr : getSourceProxy(fetchable)) {