Merge branch 'develop' into releases/Release_2_11_Branch
[jalview.git] / src / jalview / ext / ensembl / EnsemblLookup.java
index f6b3a47..c6b794a 100644 (file)
@@ -117,28 +117,66 @@ public class EnsemblLookup extends EnsemblRestClient
     return true;
   }
 
-  @Override
-  protected String getRequestMimeType(boolean multipleIds)
+  /**
+   * Returns the gene id related to the given identifier (which may be for a
+   * gene, transcript or protein), or null if none is found
+   * 
+   * @param identifier
+   * @return
+   */
+  public String getGeneId(String identifier)
   {
-    return "application/json";
+    return getGeneId(identifier, null);
   }
 
-  @Override
-  protected String getResponseMimeType()
+  /**
+   * Returns the gene id related to the given identifier (which may be for a
+   * gene, transcript or protein), or null if none is found
+   * 
+   * @param identifier
+   * @param objectType
+   * @return
+   */
+  public String getGeneId(String identifier, String objectType)
   {
-    return "application/json";
+    return parseGeneId(getResult(identifier, objectType));
   }
 
   /**
-   * Returns the gene id related to the given identifier (which may be for a
-   * gene, transcript or protein)
+   * Parses the JSON response and returns the gene identifier, or null if not
+   * found. If the returned object_type is Gene, returns the id, if Transcript
+   * returns the Parent. If it is Translation (peptide identifier), then the
+   * Parent is the transcript identifier, so we redo the search with this value.
    * 
-   * @param identifier
+   * @param br
    * @return
    */
-  public String getGeneId(String identifier)
+  protected String parseGeneId(JSONObject val)
   {
-    return parseGeneId(getResult(identifier, null));
+    if (val == null)
+    {
+      return null;
+    }
+    String geneId = null;
+    String type = val.get(OBJECT_TYPE).toString();
+    if (OBJECT_TYPE_GENE.equalsIgnoreCase(type))
+    {
+      // got the gene - just returns its id
+      geneId = val.get(JSON_ID).toString();
+    }
+    else if (OBJECT_TYPE_TRANSCRIPT.equalsIgnoreCase(type))
+    {
+      // got the transcript - return its (Gene) Parent
+      geneId = val.get(PARENT).toString();
+    }
+    else if (OBJECT_TYPE_TRANSLATION.equalsIgnoreCase(type))
+    {
+      // got the protein - get its Parent, restricted to type Transcript
+      String transcriptId = val.get(PARENT).toString();
+      geneId = getGeneId(transcriptId, OBJECT_TYPE_TRANSCRIPT);
+    }
+
+    return geneId;
   }
 
   /**
@@ -180,6 +218,7 @@ public class EnsemblLookup extends EnsemblRestClient
     try
     {
       URL url = getUrl(identifier, objectType);
+
       if (url != null)
       {
         br = getHttpResponse(url, ids);
@@ -206,46 +245,6 @@ public class EnsemblLookup extends EnsemblRestClient
   }
 
   /**
-   * Parses the JSON response and returns the gene identifier, or null if not
-   * found. If the returned object_type is Gene, returns the id, if Transcript
-   * returns the Parent. If it is Translation (peptide identifier), then the
-   * Parent is the transcript identifier, so we redo the search with this value,
-   * specifying that object_type should be Transcript.
-   * 
-   * @param jsonObject
-   * @return
-   */
-  protected String parseGeneId(JSONObject json)
-  {
-    if (json == null)
-    {
-      // e.g. lookup failed with 404 not found
-      return null;
-    }
-
-    String geneId = null;
-    String type = json.get(OBJECT_TYPE).toString();
-    if (OBJECT_TYPE_GENE.equalsIgnoreCase(type))
-    {
-      // got the gene - just returns its id
-      geneId = json.get(JSON_ID).toString();
-    }
-    else if (OBJECT_TYPE_TRANSCRIPT.equalsIgnoreCase(type))
-    {
-      // got the transcript - return its (Gene) Parent
-      geneId = json.get(PARENT).toString();
-    }
-    else if (OBJECT_TYPE_TRANSLATION.equalsIgnoreCase(type))
-    {
-      // got the protein - look up its Parent, restricted to type Transcript
-      String transcriptId = json.get(PARENT).toString();
-      geneId = parseGeneId(getResult(transcriptId, OBJECT_TYPE_TRANSCRIPT));
-    }
-
-    return geneId;
-  }
-
-  /**
    * Calls the /lookup/id rest service for the given id, and if successful,
    * parses and returns the gene's chromosomal coordinates
    *