JAL-3181 simplified code and test
[jalview.git] / src / jalview / util / UrlLink.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);
     }
   };