*/
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>()
{
{
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);
}
};
/*
* 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);