*/
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);
}
};
if (usesDBAccession()) // link is ID
{
// collect matching db-refs
- DBRefEntry[] dbr = DBRefUtils.selectRefs(seq.getDBRefs(),
+ List<DBRefEntry> dbr = DBRefUtils.selectRefs(seq.getDBRefs(),
new String[]
{ target });
// if there are any dbrefs which match up with the link
if (dbr != null)
{
- for (int r = 0; r < dbr.length; r++)
+ for (int r = 0, nd = dbr.size(); r < nd; r++)
{
// create Bare ID link for this URL
- createBareURLLink(dbr[r].getAccessionId(), true, linkset);
+ createBareURLLink(dbr.get(r).getAccessionId(), true, linkset);
}
}
}