JAL-2523 basic sleep and retry (3 times) on 429 response code with
[jalview.git] / src / jalview / ext / ensembl / EnsemblSymbol.java
index 5b3baa1..e2e38b5 100644 (file)
@@ -1,3 +1,23 @@
+/*
+ * 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.
+ *  
+ * 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/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
 package jalview.ext.ensembl;
 
 import java.io.BufferedReader;
@@ -13,9 +33,28 @@ import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
 import org.json.simple.parser.ParseException;
 
+/**
+ * A client for the Ensembl xrefs/symbol REST service;
+ * 
+ * @see http://rest.ensembl.org/documentation/info/xref_external
+ * @author gmcarstairs
+ *
+ */
 public class EnsemblSymbol extends EnsemblXref
 {
   /**
+   * Constructor given the target domain to fetch data from
+   * 
+   * @param domain
+   * @param dbName
+   * @param dbVersion
+   */
+  public EnsemblSymbol(String domain, String dbName, String dbVersion)
+  {
+    super(domain, dbName, dbVersion);
+  }
+
+  /**
    * Returns the first "id" value in gene identifier format from the JSON
    * response, or null if none found
    * 
@@ -23,8 +62,7 @@ public class EnsemblSymbol extends EnsemblXref
    * @return
    * @throws IOException
    */
-  protected String parseResponse(BufferedReader br)
-          throws IOException
+  protected String parseSymbolResponse(BufferedReader br) throws IOException
   {
     JSONParser jp = new JSONParser();
     String result = null;
@@ -51,9 +89,8 @@ public class EnsemblSymbol extends EnsemblXref
 
   protected URL getUrl(String id, Species species)
   {
-    String url = ENSEMBL_REST + "/xrefs/symbol/" + species.toString() + "/"
-            + id
-            + "?content-type=application/json";
+    String url = getDomain() + "/xrefs/symbol/" + species.toString() + "/"
+            + id + "?content-type=application/json";
     try
     {
       return new URL(url);
@@ -75,26 +112,26 @@ public class EnsemblSymbol extends EnsemblXref
     List<String> result = new ArrayList<String>();
     List<String> ids = new ArrayList<String>();
     ids.add(identifier);
-  
+
     String[] queries = identifier.split(getAccessionSeparator());
     BufferedReader br = null;
     try
     {
       for (String query : queries)
       {
-        for (Species taxon : Species.values())
+        for (Species taxon : Species.getModelOrganisms())
         {
-          if (taxon.isModelOrganism())
+          URL url = getUrl(query, taxon);
+          if (url != null)
           {
-            URL url = getUrl(query, taxon);
-            if (url != null)
-            {
-              br = getHttpResponse(url, ids);
-            }
-            String geneId = parseResponse(br);
-            if (geneId != null)
+            br = getHttpResponse(url, ids);
+            if (br != null)
             {
-              result.add(geneId);
+              String geneId = parseSymbolResponse(br);
+              if (geneId != null)
+              {
+                result.add(geneId);
+              }
             }
           }
         }