Jalview-JS/JAL-3253-applet also comments relating to JAL-3268
[jalview.git] / src / jalview / ext / ensembl / EnsemblSequenceFetcher.java
index 2f642b5..21f9f7e 100644 (file)
  */
 package jalview.ext.ensembl;
 
+import jalview.analysis.AlignmentUtils;
 import jalview.bin.Cache;
 import jalview.datamodel.DBRefSource;
+import jalview.util.Platform;
 import jalview.ws.seqfetcher.DbSourceProxyImpl;
 
 import com.stevesoft.pat.Regex;
@@ -34,26 +36,34 @@ import com.stevesoft.pat.Regex;
 abstract class EnsemblSequenceFetcher extends DbSourceProxyImpl
 {
   // domain properties lookup keys:
-  protected static final String ENSEMBL_DOMAIN = "ENSEMBL_DOMAIN";
-  protected static final String ENSEMBL_GENOMES_DOMAIN = "ENSEMBL_GENOMES_DOMAIN";
+  protected static final String ENSEMBL_BASEURL = "ENSEMBL_BASEURL";
+
+  protected static final String ENSEMBL_GENOMES_BASEURL = "ENSEMBL_GENOMES_BASEURL";
 
   // domain properties default values:
-  protected static final String DEFAULT_ENSEMBL_DOMAIN = "http://rest.ensembl.org";
-  protected static final String DEFAULT_ENSEMBL_GENOMES_DOMAIN = "http://rest.ensemblgenomes.org";
+  protected static final String DEFAULT_ENSEMBL_BASEURL = "https://rest.ensembl.org";
 
-  /*
-   * accepts ENSG/T/E/P with 11 digits
-   * or ENSMUSP or similar for other species
-   * or CCDSnnnnn.nn with at least 3 digits
-   */
-  private static final Regex ACCESSION_REGEX = new Regex(
-          "(ENS([A-Z]{3}|)[GTEP]{1}[0-9]{11}$)" + "|"
-                  + "(CCDS[0-9.]{3,}$)");
+  // ensemblgenomes REST service merged to ensembl 9th April 2019
+  protected static final String DEFAULT_ENSEMBL_GENOMES_BASEURL = DEFAULT_ENSEMBL_BASEURL;
+
+  private static Regex ACCESSION_REGEX;
 
   protected final String ensemblGenomesDomain;
 
   protected final String ensemblDomain;
 
+  protected static final String OBJECT_TYPE_TRANSLATION = "Translation";
+
+  protected static final String OBJECT_TYPE_TRANSCRIPT = "Transcript";
+
+  protected static final String OBJECT_TYPE_GENE = "Gene";
+
+  protected static final String PARENT = "Parent";
+
+  protected static final String JSON_ID = AlignmentUtils.VARIANT_ID; // "id";
+
+  protected static final String OBJECT_TYPE = "object_type";
+
   /*
    * possible values for the 'feature' parameter of the /overlap REST service
    * @see http://rest.ensembl.org/documentation/info/overlap_id
@@ -76,9 +86,10 @@ abstract class EnsemblSequenceFetcher extends DbSourceProxyImpl
      * the default domain names may be overridden in .jalview_properties;
      * this allows an easy change from http to https in future if needed
      */
-    ensemblDomain = Cache.getDefault(ENSEMBL_DOMAIN, DEFAULT_ENSEMBL_DOMAIN);
-    ensemblGenomesDomain = Cache.getDefault(ENSEMBL_GENOMES_DOMAIN,
-            DEFAULT_ENSEMBL_GENOMES_DOMAIN);
+    ensemblDomain = Cache.getDefault(ENSEMBL_BASEURL,
+            DEFAULT_ENSEMBL_BASEURL).trim();
+    ensemblGenomesDomain = Cache.getDefault(ENSEMBL_GENOMES_BASEURL,
+            DEFAULT_ENSEMBL_GENOMES_BASEURL).trim();
     domain = ensemblDomain;
   }
 
@@ -86,10 +97,6 @@ abstract class EnsemblSequenceFetcher extends DbSourceProxyImpl
   public String getDbSource()
   {
     // NB ensure Uniprot xrefs are canonicalised from "Ensembl" to "ENSEMBL"
-    if (ensemblGenomesDomain.equals(getDomain()))
-    {
-      return DBRefSource.ENSEMBLGENOMES;
-    }
     return DBRefSource.ENSEMBL;
   }
 
@@ -108,6 +115,17 @@ abstract class EnsemblSequenceFetcher extends DbSourceProxyImpl
   @Override
   public Regex getAccessionValidator()
   {
+    if (ACCESSION_REGEX == null)
+    {
+      /*
+       * accepts ENSG/T/E/P with 11 digits
+       * or ENSMUSP or similar for other species
+       * or CCDSnnnnn.nn with at least 3 digits
+       */
+      ACCESSION_REGEX = Platform
+              .newRegex("(ENS([A-Z]{3}|)[GTEP]{1}[0-9]{11}$)" + "|"
+                      + "(CCDS[0-9.]{3,}$)", null);
+    }
     return ACCESSION_REGEX;
   }
 
@@ -153,6 +171,6 @@ abstract class EnsemblSequenceFetcher extends DbSourceProxyImpl
 
   protected void setDomain(String d)
   {
-    domain = d;
+    domain = d == null ? null : d.trim();
   }
 }