JAL-2282 Renamed internal use of sequence id / db accession for
[jalview.git] / src / jalview / util / UrlLink.java
index e14ff63..0d92759 100644 (file)
@@ -20,8 +20,8 @@
  */
 package jalview.util;
 
+import static jalview.util.UrlConstants.DB_ACCESSION;
 import static jalview.util.UrlConstants.SEQUENCE_ID;
-import static jalview.util.UrlConstants.SEQUENCE_NAME;
 
 import jalview.datamodel.DBRefEntry;
 import jalview.datamodel.SequenceI;
@@ -46,7 +46,7 @@ public class UrlLink
 
   private boolean dynamic = false;
 
-  private boolean uses_seq_id = false;
+  private boolean uses_db_accession = false;
 
   private String invalidMessage = null;
 
@@ -60,30 +60,30 @@ public class UrlLink
   public UrlLink(String link)
   {
     int sep = link.indexOf("|");
-    int psqid = link.indexOf("$" + SEQUENCE_ID);
-    int nsqid = link.indexOf("$" + SEQUENCE_NAME);
+    int psqid = link.indexOf("$" + DB_ACCESSION);
+    int nsqid = link.indexOf("$" + SEQUENCE_ID);
     if (psqid > -1)
     {
       dynamic = true;
-      uses_seq_id = true;
+      uses_db_accession = true;
 
       sep = parseTargetAndLabel(sep, psqid, link);
 
-      parseUrl(link, SEQUENCE_ID, psqid, sep);
+      parseUrl(link, DB_ACCESSION, psqid, sep);
     }
     else if (nsqid > -1)
     {
       dynamic = true;
       sep = parseTargetAndLabel(sep, nsqid, link);
 
-      parseUrl(link, SEQUENCE_NAME, nsqid, sep);
+      parseUrl(link, SEQUENCE_ID, nsqid, sep);
     }
     else
     {
       target = link.substring(0, sep);
       sep = link.lastIndexOf("|");
       label = link.substring(0, sep);
-      url_prefix = link.substring(sep + 1);
+      url_prefix = link.substring(sep + 1).trim();
       regexReplace = null; // implies we trim any prefix if necessary //
       // regexReplace=".*\\|?(.*)";
       url_suffix = null;
@@ -268,7 +268,7 @@ public class UrlLink
   @Override
   public String toString()
   {
-    String var = (uses_seq_id ? SEQUENCE_ID : SEQUENCE_NAME);
+    String var = (uses_db_accession ? DB_ACCESSION : SEQUENCE_ID);
 
     return label
             + "|"
@@ -331,7 +331,7 @@ public class UrlLink
    */
   protected void parseUrl(String link, String varName, int sqidPos, int sep)
   {
-    url_prefix = link.substring(sep + 1, sqidPos);
+    url_prefix = link.substring(sep + 1, sqidPos).trim();
 
     // delimiter at start of regex: e.g. $SEQUENCE_ID=/
     String startDelimiter = "$" + varName + "=/";
@@ -384,10 +384,12 @@ public class UrlLink
   }
 
   /**
+   * Create a set of URL links for a sequence
    * 
-   * @param urlLink
    * @param seq
+   *          The sequence to create links for
    * @param linkset
+   *          Map of links: key = id | link, value = [target, label, id, link]
    */
   public void createLinksFromSeq(final SequenceI seq,
           Map<String, List<String>> linkset)
@@ -406,8 +408,9 @@ public class UrlLink
    * Create a static URL link
    * 
    * @param linkset
+   *          Map of links: key = id | link, value = [target, label, id, link]
    */
-  public void createStaticLink(Map<String, List<String>> linkset)
+  protected void createStaticLink(Map<String, List<String>> linkset)
   {
     if (!linkset.containsKey(label + "|" + getUrl_prefix()))
     {
@@ -418,12 +421,14 @@ public class UrlLink
   }
 
   /**
-   * Create a dynamic URL link
+   * Create dynamic URL links
    * 
    * @param seq
+   *          The sequence to create links for
    * @param linkset
+   *          Map of links: key = id | link, value = [target, label, id, link]
    */
-  public void createDynamicLinks(final SequenceI seq,
+  protected void createDynamicLinks(final SequenceI seq,
           Map<String, List<String>> linkset)
   {
     // collect id string too
@@ -434,7 +439,7 @@ public class UrlLink
       descr = null;
     }
 
-    if (usesSeqId()) // link is ID
+    if (usesDBAccession()) // link is ID
     {
       // collect matching db-refs
       DBRefEntry[] dbr = DBRefUtils.selectRefs(seq.getDBRefs(),
@@ -446,14 +451,14 @@ public class UrlLink
         for (int r = 0; r < dbr.length; r++)
         {
           // create Bare ID link for this URL
-          createBareURLLink(dbr[r].getAccessionId(), linkset, true);
+          createBareURLLink(dbr[r].getAccessionId(), true, linkset);
         }
       }
     }
-    else if (!usesSeqId() && id != null) // link is name
+    else if (!usesDBAccession() && id != null) // link is name
     {
       // create Bare ID link for this URL
-      createBareURLLink(id, linkset, false);
+      createBareURLLink(id, false, linkset);
     }
 
     // Create urls from description but only for URL links which are regex
@@ -461,15 +466,16 @@ public class UrlLink
     if (descr != null && getRegexReplace() != null)
     {
       // create link for this URL from description where regex matches
-      createBareURLLink(descr, linkset, false);
+      createBareURLLink(descr, false, linkset);
     }
   }
 
   /*
    * Create a bare URL Link
+   * Returns map where key = id | link, and value = [target, label, id, link]
    */
-  protected void createBareURLLink(String id,
-          Map<String, List<String>> linkset, Boolean combineLabel)
+  protected void createBareURLLink(String id, Boolean combineLabel,
+          Map<String, List<String>> linkset)
   {
     String[] urls = makeUrls(id, true);
     if (urls != null)
@@ -481,6 +487,7 @@ public class UrlLink
           String thisLabel = label;
           if (combineLabel)
           {
+            // incorporate label with idstring
             thisLabel = label + "|" + urls[u];
           }
 
@@ -526,7 +533,7 @@ public class UrlLink
      * "PF3|http://us.expasy.org/cgi-bin/niceprot.pl?$SEQUENCE_ID=/PFAM:(.+)/=$"
      * , "NOTFER|http://notfer.org/$SEQUENCE_ID=/(?<!\\s)(.+)/=$",
      */
-    "NESTED|http://nested/$" + SEQUENCE_ID
+    "NESTED|http://nested/$" + DB_ACCESSION
             + "=/^(?:Label:)?(?:(?:gi\\|(\\d+))|([^:]+))/=$/nested" };
     String[] idstrings = new String[] {
     /*
@@ -574,9 +581,9 @@ public class UrlLink
     return dynamic;
   }
 
-  public boolean usesSeqId()
+  public boolean usesDBAccession()
   {
-    return uses_seq_id;
+    return uses_db_accession;
   }
 
   public void setLabel(String newlabel)