import jalview.gui.JvOptionPane;
import java.util.ArrayList;
+import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
final static String DELIM = "$";
final static String REGEX_NESTED = "=/^(?:Label:)?(?:(?:gi\\|(\\d+))|([^:]+))/=";
-
+
final static String REGEX_RUBBISH = "=/[0-9]++/=";
/**
assertEquals(REGEX_RUBBISH.substring(2, REGEX_RUBBISH.length() - 2),
ul.getRegexReplace());
assertFalse(ul.isValid());
- assertEquals(
- "Invalid Regular Expression : '"
- + REGEX_RUBBISH.substring(2, REGEX_RUBBISH.length() - 2)
- + "'\n",
- ul.getInvalidMessage());
+ assertEquals("Invalid Regular Expression : '"
+ + REGEX_RUBBISH.substring(2, REGEX_RUBBISH.length() - 2)
+ + "'\n", ul.getInvalidMessage());
}
/**
UrlLink ul = new UrlLink(DB + SEP + URL_PREFIX + DELIM + SEQUENCE_ID
+ DELIM + URL_SUFFIX);
- Map<String, List<String>> linkset = new LinkedHashMap<String, List<String>>();
+ Map<String, List<String>> linkset = new LinkedHashMap<>();
ul.createLinksFromSeq(null, linkset);
String key = DB + SEP + URL_PREFIX;
{
UrlLink ul = new UrlLink(DB + SEP + URL_PREFIX + URL_SUFFIX);
- Map<String, List<String>> linkset = new LinkedHashMap<String, List<String>>();
+ Map<String, List<String>> linkset = new LinkedHashMap<>();
ul.createLinksFromSeq(null, linkset);
String key = DB + SEP + URL_PREFIX + URL_SUFFIX;
{
// create list of links and list of DBRefs
- List<String> links = new ArrayList<String>();
- List<DBRefEntry> refs = new ArrayList<DBRefEntry>();
+ List<String> links = new ArrayList<>();
+ List<DBRefEntry> refs = new ArrayList<>();
// links as might be added into Preferences | Connections dialog
- links.add("EMBL-EBI Search | http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$"
- + SEQUENCE_ID + "$");
+ links.add(
+ "EMBL-EBI Search | http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$"
+ + SEQUENCE_ID + "$");
links.add("UNIPROT | http://www.uniprot.org/uniprot/$" + DB_ACCESSION
+ "$");
links.add("INTERPRO | http://www.ebi.ac.uk/interpro/entry/$"
UrlLink ul = new UrlLink(DB + SEP + URL_PREFIX + DELIM + SEQUENCE_ID
+ DELIM + URL_SUFFIX);
- Map<String, List<String>> linkset = new LinkedHashMap<String, List<String>>();
+ Map<String, List<String>> linkset = new LinkedHashMap<>();
ul.createLinksFromSeq(seq0, linkset);
String key = seq0.getName() + SEP + URL_PREFIX + seq0.getName()
assertEquals(DB, linkset.get(key).get(0));
assertEquals(DB, linkset.get(key).get(1));
assertEquals(seq0.getName(), linkset.get(key).get(2));
- assertEquals(URL_PREFIX + seq0.getName() + URL_SUFFIX, linkset.get(key)
- .get(3));
+ assertEquals(URL_PREFIX + seq0.getName() + URL_SUFFIX,
+ linkset.get(key).get(3));
// Test where link takes a db annotation id and only has one dbref
ul = new UrlLink(links.get(1));
- linkset = new LinkedHashMap<String, List<String>>();
+ linkset = new LinkedHashMap<>();
ul.createLinksFromSeq(seq0, linkset);
key = "P83527|http://www.uniprot.org/uniprot/P83527";
assertEquals(linkset.size(), 1);
assertTrue(linkset.containsKey(key));
assertEquals(DBRefSource.UNIPROT, linkset.get(key).get(0));
- assertEquals(DBRefSource.UNIPROT + SEP + "P83527", linkset.get(key)
- .get(1));
+ assertEquals(DBRefSource.UNIPROT + SEP + "P83527",
+ linkset.get(key).get(1));
assertEquals("P83527", linkset.get(key).get(2));
- assertEquals("http://www.uniprot.org/uniprot/P83527", linkset.get(key)
- .get(3));
+ assertEquals("http://www.uniprot.org/uniprot/P83527",
+ linkset.get(key).get(3));
// Test where link takes a db annotation id and has multiple dbrefs
ul = new UrlLink(links.get(2));
- linkset = new LinkedHashMap<String, List<String>>();
+ linkset = new LinkedHashMap<>();
ul.createLinksFromSeq(seq0, linkset);
assertEquals(3, linkset.size());
assertEquals("INTERPRO", linkset.get(key).get(0));
assertEquals("INTERPRO" + SEP + "IPR001041", linkset.get(key).get(1));
assertEquals("IPR001041", linkset.get(key).get(2));
- assertEquals("http://www.ebi.ac.uk/interpro/entry/IPR001041", linkset
- .get(key).get(3));
+ assertEquals("http://www.ebi.ac.uk/interpro/entry/IPR001041",
+ linkset.get(key).get(3));
key = "IPR006058|http://www.ebi.ac.uk/interpro/entry/IPR006058";
assertTrue(linkset.containsKey(key));
assertEquals("INTERPRO", linkset.get(key).get(0));
assertEquals("INTERPRO" + SEP + "IPR006058", linkset.get(key).get(1));
assertEquals("IPR006058", linkset.get(key).get(2));
- assertEquals("http://www.ebi.ac.uk/interpro/entry/IPR006058", linkset
- .get(key).get(3));
+ assertEquals("http://www.ebi.ac.uk/interpro/entry/IPR006058",
+ linkset.get(key).get(3));
key = "IPR012675|http://www.ebi.ac.uk/interpro/entry/IPR012675";
assertTrue(linkset.containsKey(key));
assertEquals("INTERPRO", linkset.get(key).get(0));
assertEquals("INTERPRO" + SEP + "IPR012675", linkset.get(key).get(1));
assertEquals("IPR012675", linkset.get(key).get(2));
- assertEquals("http://www.ebi.ac.uk/interpro/entry/IPR012675", linkset
- .get(key).get(3));
+ assertEquals("http://www.ebi.ac.uk/interpro/entry/IPR012675",
+ linkset.get(key).get(3));
// Test where there are no matching dbrefs for the link
ul = new UrlLink(DB + SEP + URL_PREFIX + DELIM + DB_ACCESSION + DELIM
+ URL_SUFFIX);
- linkset = new LinkedHashMap<String, List<String>>();
+ linkset = new LinkedHashMap<>();
ul.createLinksFromSeq(seq0, linkset);
assertTrue(linkset.isEmpty());
}
}
+ @Test(groups = { "Functional" })
+ public void testLinkComparator()
+ {
+ Comparator<String> c = UrlLink.LINK_COMPARATOR;
+ assertEquals(0, c.compare(null, null));
+ assertEquals(0, c.compare(null, "x"));
+ assertEquals(0, c.compare("y", null));
+
+ /*
+ * SEQUENCE_ID templates should come before DB_ACCESSION templates
+ */
+ 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);
+
+ String interpro = "Interpro|https://www.ebi.ac.uk/interpro/entry/$DB_ACCESSION$";
+ String prosite = "ProSite|https://prosite.expasy.org/PS00197";
+ assertTrue(c.compare(interpro, prosite) < 0);
+ assertTrue(c.compare(prosite, interpro) > 0);
+ }
}