apply gpl development license
[jalview.git] / src / jalview / ws / seqfetcher / ASequenceFetcher.java
index 8a8cf44..7d2097a 100644 (file)
@@ -1,6 +1,6 @@
 /*\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
@@ -297,4 +297,37 @@ public class ASequenceFetcher
     return false;\r
   }\r
 \r
+  /**\r
+   * select sources which are implemented by instances of the given class\r
+   * @param class that implements DbSourceProxy\r
+   * @return null or vector of source names for fetchers\r
+   */\r
+  public String[] getDbInstances(Class class1)\r
+  {\r
+    if (!jalview.ws.seqfetcher.DbSourceProxy.class.isAssignableFrom(class1))\r
+    {\r
+      throw new Error("Implmentation Error - getDbInstances must be given a class that implements jalview.ws.seqfetcher.DbSourceProxy (was given '"+class1+"')");\r
+    }\r
+    if (FETCHABLEDBS==null)\r
+    {\r
+      return null;\r
+    }\r
+    String[] sources = null;\r
+    Vector src = new Vector();\r
+    Enumeration dbs = FETCHABLEDBS.keys();\r
+    while (dbs.hasMoreElements())\r
+    {\r
+      String dbn = (String) dbs.nextElement();\r
+      DbSourceProxy dbp = (DbSourceProxy) FETCHABLEDBS.get(dbn);\r
+      if (class1.isAssignableFrom(dbp.getClass()))\r
+      {\r
+        src.addElement(dbn);\r
+      }\r
+    }\r
+    if (src.size()>0)\r
+    {\r
+      src.copyInto(sources = new String[src.size()]);\r
+    }\r
+    return sources;\r
+  }\r
 }\r