JAL-1807 explicit imports (jalview.ws.*)
[jalview.git] / src / jalview / ws / seqfetcher / ASequenceFetcher.java
index f449570..c28d8e2 100644 (file)
@@ -1,29 +1,34 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8)
- * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
  * Jalview is free software: you can redistribute it and/or
  * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
  *  
  * Jalview is distributed in the hope that it will be useful, but 
  * WITHOUT ANY WARRANTY; without even the implied warranty 
  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
  * PURPOSE.  See the GNU General Public License for more details.
  * 
- * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
 package jalview.ws.seqfetcher;
 
+import jalview.bin.Cache;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.DBRefEntry;
 import jalview.datamodel.SequenceI;
 import jalview.util.DBRefUtils;
+import jalview.util.MessageManager;
+import jalview.util.QuickSort;
 
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.Enumeration;
 import java.util.HashSet;
 import java.util.Hashtable;
@@ -55,7 +60,9 @@ public class ASequenceFetcher
   public String[] getSupportedDb()
   {
     if (FETCHABLEDBS == null)
+    {
       return null;
+    }
     String[] sf = new String[FETCHABLEDBS.size()];
     Enumeration e = FETCHABLEDBS.keys();
     int i = 0;
@@ -74,14 +81,16 @@ public class ASequenceFetcher
     {
       String db = (String) e.nextElement();
       if (source.compareToIgnoreCase(db) == 0)
+      {
         return true;
+      }
     }
-    jalview.bin.Cache.log.warn("isFetchable doesn't know about '" + source
+    Cache.log.warn("isFetchable doesn't know about '" + source
             + "'");
     return false;
   }
 
-  public SequenceI[] getSequences(jalview.datamodel.DBRefEntry[] refs)
+  public SequenceI[] getSequences(DBRefEntry[] refs)
   {
     SequenceI[] ret = null;
     Vector<SequenceI> rseqs = new Vector();
@@ -195,7 +204,9 @@ public class ASequenceFetcher
                    */
                   System.out.println(hdr);
                   if (rrb != null)
+                  {
                     System.out.println(rrb);
+                  }
                   System.out.println("# end of " + hdr);
                 }
 
@@ -273,11 +284,13 @@ public class ASequenceFetcher
       DbSourceProxy[] l = dblist.values().toArray(new DbSourceProxy[0]);
       int i = 0;
       String[] nm = new String[l.length];
+      // make sure standard dbs appear first, followed by reference das sources,
+      // followed by anything else.
       for (DbSourceProxy s : l)
       {
-        nm[i++] = s.getDbName().toLowerCase();
+        nm[i++] = "" + s.getTier() + s.getDbName().toLowerCase();
       }
-      jalview.util.QuickSort.sort(nm, l);
+      QuickSort.sort(nm, l);
       dbs = new ArrayList<DbSourceProxy>();
       for (i = l.length - 1; i >= 0; i--)
       {
@@ -298,31 +311,23 @@ public class ASequenceFetcher
    * @param dbSourceProxy
    *          reference for class implementing
    *          jalview.ws.seqfetcher.DbSourceProxy
-   * @throws java.lang.IllegalArgumentException
-   *           if class does not implement jalview.ws.seqfetcher.DbSourceProxy
    */
-  protected void addDBRefSourceImpl(Class dbSourceProxy)
+  protected void addDBRefSourceImpl(
+          Class<? extends DbSourceProxy> dbSourceProxy)
           throws java.lang.IllegalArgumentException
   {
     DbSourceProxy proxy = null;
     try
     {
-      Object proxyObj = dbSourceProxy.getConstructor(null)
-              .newInstance(null);
-      if (!DbSourceProxy.class.isInstance(proxyObj))
-      {
-        throw new IllegalArgumentException(
-                dbSourceProxy.toString()
-                        + " does not implement the jalview.ws.seqfetcher.DbSourceProxy");
-      }
-      proxy = (DbSourceProxy) proxyObj;
+      DbSourceProxy proxyObj = dbSourceProxy.getConstructor().newInstance();
+      proxy = proxyObj;
     } catch (IllegalArgumentException e)
     {
       throw e;
     } catch (Exception e)
     {
       // Serious problems if this happens.
-      throw new Error("DBRefSource Implementation Exception", e);
+      throw new Error(MessageManager.getString("error.dbrefsource_implementation_exception"), e);
     }
     addDbRefSourceImpl(proxy);
   }
@@ -388,11 +393,9 @@ public class ASequenceFetcher
    */
   public String[] getDbInstances(Class class1)
   {
-    if (!jalview.ws.seqfetcher.DbSourceProxy.class.isAssignableFrom(class1))
+    if (!DbSourceProxy.class.isAssignableFrom(class1))
     {
-      throw new Error(
-              "Implmentation Error - getDbInstances must be given a class that implements jalview.ws.seqfetcher.DbSourceProxy (was given '"
-                      + class1 + "')");
+      throw new Error(MessageManager.formatMessage("error.implementation_error_dbinstance_must_implement_interface", new String[]{class1.toString()}));
     }
     if (FETCHABLEDBS == null)
     {
@@ -423,6 +426,7 @@ public class ASequenceFetcher
   {
     ArrayList<DbSourceProxy> prlist = new ArrayList<DbSourceProxy>();
     for (String fetchable : getSupportedDb())
+    {
       for (DbSourceProxy pr : getSourceProxy(fetchable))
       {
         if (class1.isInstance(pr))
@@ -430,6 +434,7 @@ public class ASequenceFetcher
           prlist.add(pr);
         }
       }
+    }
     if (prlist.size() == 0)
     {
       return null;