JAL-3181 simplified code and test
authorgmungoc <g.m.carstairs@dundee.ac.uk>
Fri, 4 Jan 2019 08:19:36 +0000 (08:19 +0000)
committergmungoc <g.m.carstairs@dundee.ac.uk>
Fri, 4 Jan 2019 08:19:36 +0000 (08:19 +0000)
src/jalview/util/UrlLink.java
test/jalview/util/UrlLinkTest.java

index dda9e0e..18ee9b6 100644 (file)
@@ -46,11 +46,17 @@ import java.util.Vector;
  */
 public class UrlLink
 {
+  private static final String SEQUENCEID_PLACEHOLDER = DELIM + SEQUENCE_ID
+          + DELIM;
+
+  private static final String ACCESSION_PLACEHOLDER = DELIM + DB_ACCESSION
+          + DELIM;
+
   /**
    * A comparator that puts SEQUENCE_ID template links before DB_ACCESSION
-   * links, and otherwise orders by link name (not case sensitive). It expects
-   * to compare strings formatted as "Name|URLTemplate" where the template may
-   * include $SEQUENCE_ID$ or $DB_ACCESSION$ or neither.
+   * links, and otherwise orders by link name + url (not case sensitive). It
+   * expects to compare strings formatted as "Name|URLTemplate" where the
+   * template may include $SEQUENCE_ID$ or $DB_ACCESSION$ or neither.
    */
   public static final Comparator<String> LINK_COMPARATOR = new Comparator<String>()
   {
@@ -61,29 +67,17 @@ public class UrlLink
       {
         return 0; // for failsafe only
       }
-      String[] tokens1 = link1.split("\\|");
-      String[] tokens2 = link2.split("\\|");
-      if (tokens1.length < 2 || tokens2.length < 2)
-      {
-        // for failsafe only
-        return String.CASE_INSENSITIVE_ORDER.compare(link1, link2);
-      }
-      String name1 = tokens1[0];
-      String name2 = tokens2[0];
-      String pattern1 = tokens1[1];
-      String pattern2 = tokens2[1];
-      if (pattern1.contains(UrlConstants.SEQUENCE_ID)
-              && pattern2.contains(UrlConstants.DB_ACCESSION))
+      if (link1.contains(SEQUENCEID_PLACEHOLDER)
+              && link2.contains(ACCESSION_PLACEHOLDER))
       {
         return -1;
       }
-      if (pattern2.contains(UrlConstants.SEQUENCE_ID)
-              && pattern1.contains(UrlConstants.DB_ACCESSION))
+      if (link2.contains(SEQUENCEID_PLACEHOLDER)
+              && link1.contains(ACCESSION_PLACEHOLDER))
       {
         return 1;
       }
-      return String.CASE_INSENSITIVE_ORDER.compare(name1, name2);
-
+      return String.CASE_INSENSITIVE_ORDER.compare(link1, link2);
     }
   };
 
index 81fe3d2..c7d37b0 100644 (file)
@@ -450,11 +450,9 @@ public class UrlLinkTest
 
     /*
      * SEQUENCE_ID templates should come before DB_ACCESSION templates
-     * (note we are 'pretending' EMBL-EBI is a DB link so the test shows that
-     * these are not ordered by link name)
      */
-    String seqIdUrl = "Ensembl|https://www.ensembl.org/Multi/Search/Results?q=$SEQUENCE_ID$";
-    String dbRefUrl = "EBI|https://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$DB_ACCESSION$";
+    String dbRefUrl = "Cath|http://www.cathdb.info/version/v4_2_0/superfamily/$DB_ACCESSION$";
+    String seqIdUrl = "EBI|https://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$SEQUENCE_ID$";
     assertTrue(c.compare(seqIdUrl, dbRefUrl) < 0);
     assertTrue(c.compare(dbRefUrl, seqIdUrl) > 0);