<classpathentry kind="lib" path="lib/htsjdk-2.12.0.jar"/>
<classpathentry kind="lib" path="lib/groovy-all-2.4.12-indy.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
- <classpathentry kind="lib" path="lib/intervalstore-v0.4.jar"/>
+ <classpathentry kind="lib" path="lib/intervalstore-v1.0.jar"/>
<classpathentry kind="output" path="classes"/>
</classpath>
</target>
<target name="signApplet" description="internal target to sign applet" depends="-signappletnotsa,-signapplettsa" />
+<target name="pubapplet" description="Dummy target to keep legacy Jalview build system happy. We don't actually publish the applet anymore."/>
-<target name="pubapplet" description="installs the jalviewLite applet and dependent jars into an applet examples directory built under ${outputDir}" depends="makeApplet, signApplet">
+<target name="_pubapplet" description="installs the jalviewLite applet and dependent jars into an applet examples directory built under ${outputDir}" depends="makeApplet, signApplet">
<!-- bizarre bug causes JmolApplet to always get signed, even if excluded from above. so copy explicitly -->
<copy file="appletlib/${jmolJar}" tofile="${packageDir}/examples/u_${jmolJar}" overwrite="true" />
/*
* to make a new instance for each alignment view
*/
- getInstance: { AlignViewportI view, AnnotatedCollectionI coll, Map<SequenceI, SequenceCollectionI> map -> conserved() },
+ getInstance: { AlignViewportI view, AnnotatedCollectionI coll -> conserved() },
/*
* method only needed if colour scheme has to recalculate
/*
* to make a new instance for each alignment view
*/
- getInstance: { AlignViewportI view, AnnotatedCollectionI coll, Map<SequenceI, SequenceCollectionI> map -> candy() },
+ getInstance: { view, coll -> candy() },
/*
* method only needed if colour scheme has to recalculate
// this colour scheme is peptide-specific:
isApplicableTo: { coll -> !coll.isNucleotide() },
alignmentChanged: { coll, map -> },
- getInstance: { coll, map -> byWeight() },
+ getInstance: { view, coll -> byWeight() },
isSimple: { true },
findColour: {res, col, seq, consensus, pid ->
switch (res) {
/*
* to make a new instance for each alignment view
*/
- getInstance: { AnnotatedCollectionI coll, Map<SequenceI, SequenceCollectionI> map -> unconserved() },
+ getInstance: { view, coll -> unconserved() },
/*
* method only needed if colour scheme has to recalculate
label.occupancy = Occupancy
# delete Clustal - use FileFormat name instead
label.clustal = Clustal
-# label.colourScheme_<schemeName> as in JalviewColourScheme
+# label.colourScheme_<schemeName> as in JalviewColourScheme, spaces removed
label.colourScheme_clustal = Clustalx
label.colourScheme_blosum62 = BLOSUM62 Score
-label.colourScheme_%_identity = Percentage Identity
+label.colourScheme_%identity = Percentage Identity
label.colourScheme_zappo = Zappo
label.colourScheme_taylor = Taylor
label.colourScheme_hydrophobic = Hydrophobicity
-label.colourScheme_helix_propensity = Helix Propensity
-label.colourScheme_strand_propensity = Strand Propensity
-label.colourScheme_turn_propensity = Turn Propensity
-label.colourScheme_buried_index = Buried Index
+label.colourScheme_helixpropensity = Helix Propensity
+label.colourScheme_strandpropensity = Strand Propensity
+label.colourScheme_turnpropensity = Turn Propensity
+label.colourScheme_buriedindex = Buried Index
label.colourScheme_purine/pyrimidine = Purine/Pyrimidine
label.colourScheme_nucleotide = Nucleotide
-label.colourScheme_t-coffee_scores = T-Coffee Scores
-label.colourScheme_rna_helices = By RNA Helices
-label.colourScheme_sequence_id = Sequence ID Colour
+label.colourScheme_t-coffeescores = T-Coffee Scores
+label.colourScheme_rnahelices = By RNA Helices
+label.colourScheme_sequenceid = Sequence ID Colour
label.blc = BLC
label.fasta = Fasta
label.msf = MSF
# label.colourScheme_<schemeName> as in JalviewColourScheme
label.colourScheme_clustal = Clustalx
label.colourScheme_blosum62 = Puntuación del BLOSUM62
-label.colourScheme_%_identity = Porcentaje de identidad
+label.colourScheme_%identity = Porcentaje de identidad
label.colourScheme_zappo = Zappo
label.colourScheme_taylor = Taylor
label.colourScheme_hydrophobic = Hidrofobicidad
-label.colourScheme_helix_propensity = Tendencia de la hélice
-label.colourScheme_strand_propensity = Tendencia de la hebra
-label.colourScheme_turn_propensity = Tendencia de giro
-label.colourScheme_buried_index = Índice de encubrimiento
+label.colourScheme_helixpropensity = Tendencia de la hélice
+label.colourScheme_strandpropensity = Tendencia de la hebra
+label.colourScheme_turnpropensity = Tendencia de giro
+label.colourScheme_buriedindex = Índice de encubrimiento
label.colourScheme_purine/pyrimidine = Purina/Pirimidina
label.colourScheme_nucleotide = Nucleótido
-label.colourScheme_t-coffee_scores = Puntuación del T-Coffee
-label.colourScheme_rna_helices = Por hélices de RNA
-label.colourScheme_sequence_id = Color de ID de secuencia
+label.colourScheme_t-coffeescores = Puntuación del T-Coffee
+label.colourScheme_rnahelices = Por hélices de RNA
+label.colourScheme_sequenceid = Color de ID de secuencia
label.blc = BLC
label.fasta = Fasta
label.msf = MSF
loadAmbiguityCodes(AMBIGUITY_CODES_FILE);
loadCodes(RESOURCE_FILE);
}
- };
+ }
/**
* Returns the singleton instance of this class
try
{
InputStream is = getClass().getResourceAsStream(fileName);
+ if (is == null)
+ {
+ System.err.println("Resource file not found: " + fileName);
+ return;
+ }
BufferedReader dataIn = new BufferedReader(new InputStreamReader(is));
/*
} catch (IOException | NullPointerException e)
{
Cache.log.error(
- "Error reading genetic codes data file: "
+ "Error reading genetic codes data file " + fileName + ": "
+ e.getMessage());
}
+ if (codeTables.isEmpty())
+ {
+ System.err.println(
+ "No genetic code tables loaded, check format of file "
+ + fileName);
+ }
}
/**
try
{
InputStream is = getClass().getResourceAsStream(fileName);
+ if (is == null)
+ {
+ System.err.println("Resource file not found: " + fileName);
+ return;
+ }
BufferedReader dataIn = new BufferedReader(new InputStreamReader(is));
String line = "";
while (line != null)
if (line != null && !"DNA".equals(line.toUpperCase()))
{
String[] tokens = line.split("\\t");
+ if (tokens.length == 2)
+ {
ambiguityCodes.put(tokens[0].toUpperCase(),
tokens[1].toUpperCase());
+ }
+ else
+ {
+ System.err.println(
+ "Unexpected data in " + fileName + ": " + line);
+ }
}
}
} catch (IOException e)
* @see https://github.com/Ensembl/ensembl-rest/wiki/Change-log
* @see http://rest.ensembl.org/info/rest?content-type=application/json
*/
- private static final String LATEST_ENSEMBLGENOMES_REST_VERSION = "9.0";
+ private static final String LATEST_ENSEMBLGENOMES_REST_VERSION = "10.0";
- private static final String LATEST_ENSEMBL_REST_VERSION = "9.0";
+ private static final String LATEST_ENSEMBL_REST_VERSION = "10.0";
private static final String REST_CHANGE_LOG = "https://github.com/Ensembl/ensembl-rest/wiki/Change-log";
// domain properties default values:
protected static final String DEFAULT_ENSEMBL_BASEURL = "https://rest.ensembl.org";
- protected static final String DEFAULT_ENSEMBL_GENOMES_BASEURL = "https://rest.ensemblgenomes.org";
+ // ensemblgenomes REST service merged to ensembl 9th April 2019
+ protected static final String DEFAULT_ENSEMBL_GENOMES_BASEURL = DEFAULT_ENSEMBL_BASEURL;
/*
* accepts ENSG/T/E/P with 11 digits
@Override
public void setStatus(String text)
{
- statusBar.setText(text);
+ statusBar.setText(text == null || text.isEmpty() ? " " : text);
}
/*
protected void scaleAbove_actionPerformed(ActionEvent e)
{
viewport.setScaleAboveWrapped(scaleAbove.isSelected());
- // TODO: do we actually need to update overview for scale above change ?
+ alignPanel.updateLayout();
alignPanel.paintAlignment(true, false);
}
protected void scaleLeft_actionPerformed(ActionEvent e)
{
viewport.setScaleLeftWrapped(scaleLeft.isSelected());
+ alignPanel.updateLayout();
alignPanel.paintAlignment(true, false);
}
protected void scaleRight_actionPerformed(ActionEvent e)
{
viewport.setScaleRightWrapped(scaleRight.isSelected());
+ alignPanel.updateLayout();
alignPanel.paintAlignment(true, false);
}
*/
final String name = scheme.getSchemeName();
String label = MessageManager.getStringOrReturn(
- "label.colourScheme_", name.toLowerCase().replace(" ", "_"));
+ "label.colourScheme_", name);
final JRadioButtonMenuItem radioItem = new JRadioButtonMenuItem(
label);
radioItem.setName(name);
{
textarea.setDocument(textarea.getEditorKit().createDefaultDocument());
textarea.setText(text);
+ textarea.setCaretPosition(0);
}
@Override
import javax.swing.JRadioButtonMenuItem;
/**
- * DOCUMENT ME!
- *
- * @author $author$
- * @version $Revision: 1.118 $
+ * The popup menu that is displayed on right-click on a sequence id, or in the
+ * sequence alignment.
*/
public class PopupMenu extends JPopupMenu implements ColourChangeListener
{
JMenuItem hideInsertions = new JMenuItem();
/**
+ * Constructs a menu with sub-menu items for any hyperlinks for the sequence
+ * and/or features provided. Hyperlinks may include a lookup by sequence id,
+ * or database cross-references, depending on which links are enabled in user
+ * preferences.
+ *
+ * @param seq
+ * @param features
+ * @return
+ */
+ static JMenu buildLinkMenu(final SequenceI seq,
+ List<SequenceFeature> features)
+ {
+ JMenu linkMenu = new JMenu(MessageManager.getString("action.link"));
+
+ List<String> nlinks = null;
+ if (seq != null)
+ {
+ nlinks = Preferences.sequenceUrlLinks.getLinksForMenu();
+ UrlLink.sort(nlinks);
+ }
+ else
+ {
+ nlinks = new ArrayList<>();
+ }
+
+ if (features != null)
+ {
+ for (SequenceFeature sf : features)
+ {
+ if (sf.links != null)
+ {
+ for (String link : sf.links)
+ {
+ nlinks.add(link);
+ }
+ }
+ }
+ }
+
+ /*
+ * instantiate the hyperlinklink templates from sequence data;
+ * note the order of the templates is preserved in the map
+ */
+ Map<String, List<String>> linkset = new LinkedHashMap<>();
+ for (String link : nlinks)
+ {
+ UrlLink urlLink = null;
+ try
+ {
+ urlLink = new UrlLink(link);
+ } catch (Exception foo)
+ {
+ Cache.log.error("Exception for URLLink '" + link + "'", foo);
+ continue;
+ }
+
+ if (!urlLink.isValid())
+ {
+ Cache.log.error(urlLink.getInvalidMessage());
+ continue;
+ }
+
+ urlLink.createLinksFromSeq(seq, linkset);
+ }
+
+ /*
+ * construct menu items for the hyperlinks (still preserving
+ * the order of the sorted templates)
+ */
+ addUrlLinks(linkMenu, linkset.values());
+
+ return linkMenu;
+ }
+
+ /**
+ * A helper method that builds menu items from the given links, with action
+ * handlers to open the link URL, and adds them to the linkMenu. Each provided
+ * link should be a list whose second item is the menu text, and whose fourth
+ * item is the URL to open when the menu item is selected.
+ *
+ * @param linkMenu
+ * @param linkset
+ */
+ static private void addUrlLinks(JMenu linkMenu,
+ Collection<List<String>> linkset)
+ {
+ for (List<String> linkstrset : linkset)
+ {
+ final String url = linkstrset.get(3);
+ JMenuItem item = new JMenuItem(linkstrset.get(1));
+ item.setToolTipText(MessageManager
+ .formatMessage("label.open_url_param", new Object[]
+ { url }));
+ item.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ new Thread(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ showLink(url);
+ }
+ }).start();
+ }
+ });
+ linkMenu.add(item);
+ }
+ }
+
+ /**
+ * Opens the provided url in the default web browser, or shows an error
+ * message if this fails
+ *
+ * @param url
+ */
+ static void showLink(String url)
+ {
+ try
+ {
+ jalview.util.BrowserLauncher.openURL(url);
+ } catch (Exception ex)
+ {
+ JvOptionPane.showInternalMessageDialog(Desktop.desktop,
+ MessageManager.getString("label.web_browser_not_found_unix"),
+ MessageManager.getString("label.web_browser_not_found"),
+ JvOptionPane.WARNING_MESSAGE);
+
+ ex.printStackTrace();
+ }
+ }
+
+ /**
+ * add a late bound groupURL item to the given linkMenu
+ *
+ * @param linkMenu
+ * @param label
+ * - menu label string
+ * @param urlgenerator
+ * GroupURLLink used to generate URL
+ * @param urlstub
+ * Object array returned from the makeUrlStubs function.
+ */
+ static void addshowLink(JMenu linkMenu, String label,
+ final GroupUrlLink urlgenerator, final Object[] urlstub)
+ {
+ JMenuItem item = new JMenuItem(label);
+ item.setToolTipText(MessageManager
+ .formatMessage("label.open_url_seqs_param", new Object[]
+ { urlgenerator.getUrl_prefix(),
+ urlgenerator.getNumberInvolved(urlstub) }));
+ // TODO: put in info about what is being sent.
+ item.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ new Thread(new Runnable()
+ {
+
+ @Override
+ public void run()
+ {
+ try
+ {
+ showLink(urlgenerator.constructFrom(urlstub));
+ } catch (UrlStringTooLongException e2)
+ {
+ }
+ }
+
+ }).start();
+ }
+ });
+
+ linkMenu.add(item);
+ }
+
+ /**
* Creates a new PopupMenu object.
*
* @param ap
* When seq is not null, these are links for the sequence id, which may be to
* external web sites for the sequence accession, and/or links embedded in
* non-positional features. When seq is null, only links embedded in the
- * provided features are added.
+ * provided features are added. If no links are found, the menu is not added.
*
* @param seq
* @param features
*/
void addLinks(final SequenceI seq, List<SequenceFeature> features)
{
- JMenu linkMenu = new JMenu(MessageManager.getString("action.link"));
-
- List<String> nlinks = null;
- if (seq != null)
- {
- nlinks = Preferences.sequenceUrlLinks.getLinksForMenu();
- }
- else
- {
- nlinks = new ArrayList<>();
- }
-
- if (features != null)
- {
- for (SequenceFeature sf : features)
- {
- if (sf.links != null)
- {
- for (String link : sf.links)
- {
- nlinks.add(link);
- }
- }
- }
- }
-
- Map<String, List<String>> linkset = new LinkedHashMap<>();
-
- for (String link : nlinks)
- {
- UrlLink urlLink = null;
- try
- {
- urlLink = new UrlLink(link);
- } catch (Exception foo)
- {
- Cache.log.error("Exception for URLLink '" + link + "'", foo);
- continue;
- }
-
- if (!urlLink.isValid())
- {
- Cache.log.error(urlLink.getInvalidMessage());
- continue;
- }
-
- urlLink.createLinksFromSeq(seq, linkset);
- }
-
- addshowLinks(linkMenu, linkset.values());
+ JMenu linkMenu = buildLinkMenu(seq, features);
// only add link menu if it has entries
if (linkMenu.getItemCount() > 0)
}
}
- private void addshowLinks(JMenu linkMenu,
- Collection<List<String>> linkset)
- {
- for (List<String> linkstrset : linkset)
- {
- // split linkstr into label and url
- addshowLink(linkMenu, linkstrset.get(1), linkstrset.get(3));
- }
- }
-
- /**
- * add a show URL menu item to the given linkMenu
- *
- * @param linkMenu
- * @param label
- * - menu label string
- * @param url
- * - url to open
- */
- private void addshowLink(JMenu linkMenu, String label, final String url)
- {
- JMenuItem item = new JMenuItem(label);
- item.setToolTipText(MessageManager.formatMessage("label.open_url_param",
- new Object[]
- { url }));
- item.addActionListener(new ActionListener()
- {
- @Override
- public void actionPerformed(ActionEvent e)
- {
- new Thread(new Runnable()
- {
-
- @Override
- public void run()
- {
- showLink(url);
- }
-
- }).start();
- }
- });
-
- linkMenu.add(item);
- }
-
- /**
- * add a late bound groupURL item to the given linkMenu
- *
- * @param linkMenu
- * @param label
- * - menu label string
- * @param urlgenerator
- * GroupURLLink used to generate URL
- * @param urlstub
- * Object array returned from the makeUrlStubs function.
- */
- private void addshowLink(JMenu linkMenu, String label,
- final GroupUrlLink urlgenerator, final Object[] urlstub)
- {
- JMenuItem item = new JMenuItem(label);
- item.setToolTipText(MessageManager
- .formatMessage("label.open_url_seqs_param", new Object[]
- { urlgenerator.getUrl_prefix(),
- urlgenerator.getNumberInvolved(urlstub) }));
- // TODO: put in info about what is being sent.
- item.addActionListener(new ActionListener()
- {
- @Override
- public void actionPerformed(ActionEvent e)
- {
- new Thread(new Runnable()
- {
-
- @Override
- public void run()
- {
- try
- {
- showLink(urlgenerator.constructFrom(urlstub));
- } catch (UrlStringTooLongException e2)
- {
- }
- }
-
- }).start();
- }
- });
-
- linkMenu.add(item);
- }
-
/**
* DOCUMENT ME!
*
refresh();
}
- public void showLink(String url)
- {
- try
- {
- jalview.util.BrowserLauncher.openURL(url);
- } catch (Exception ex)
- {
- JvOptionPane.showInternalMessageDialog(Desktop.desktop,
- MessageManager.getString("label.web_browser_not_found_unix"),
- MessageManager.getString("label.web_browser_not_found"),
- JvOptionPane.WARNING_MESSAGE);
-
- ex.printStackTrace();
- }
- }
-
void hideSequences(boolean representGroup)
{
ap.av.hideSequences(sequence, representGroup);
ap.getSeqPanel().stopScrolling();
int xCords = Math.max(0, evt.getX()); // prevent negative X coordinates
+ ViewportRanges ranges = av.getRanges();
int res = (xCords / av.getCharWidth())
- + av.getRanges().getStartRes();
+ + ranges.getStartRes();
+ res = Math.min(res, ranges.getEndRes());
if (av.hasHiddenColumns())
{
res = av.getAlignment().getHiddenColumns()
.visibleToAbsoluteColumn(res);
}
- res = Math.min(res, av.getRanges().getEndRes());
res = Math.max(0, res);
if (!stretchingGroup)
}
else
{
- seqIndex = Math.min((y / charHeight) + av.getRanges().getStartSeq(),
+ ViewportRanges ranges = av.getRanges();
+ seqIndex = Math.min((y / charHeight) + ranges.getStartSeq(),
alignmentHeight - 1);
+ seqIndex = Math.min(seqIndex, ranges.getEndSeq());
}
return new MousePos(col, seqIndex, annIndex);
@Override
public void mouseExited(MouseEvent e)
{
+ lastMousePosition = null;
ap.alignFrame.setStatus(" ");
if (av.getWrapAlignment())
{
{
// cachedUrlList is in form <label>|<url>|<label>|<url>...
// parse cachedUrlList into labels (used as id) and url links
- HashMap<String, UrlLink> urls = new HashMap<String, UrlLink>();
+ HashMap<String, UrlLink> urls = new HashMap<>();
StringTokenizer st = new StringTokenizer(urlStrings, SEP);
while (st.hasMoreElements())
{
- String name = st.nextToken();
+ String name = st.nextToken().trim();
if (!isMiriamId(name))
{
{
url = url + SEP + st.nextToken();
}
+ url = url.trim();
urls.put(name, new UrlLink(name, url, name));
}
}
private HashMap<String, UrlLink> parseUrlList(Map<String, String> urlList)
{
- HashMap<String, UrlLink> urls = new HashMap<String, UrlLink>();
+ HashMap<String, UrlLink> urls = new HashMap<>();
if (urlList == null)
{
return urls;
@Override
public List<String> getLinksForMenu()
{
- List<String> links = new ArrayList<String>();
+ List<String> links = new ArrayList<>();
Iterator<Map.Entry<String, UrlLink>> it = selectedUrls.entrySet()
.iterator();
while (it.hasNext())
@Override
public List<UrlLinkDisplay> getLinksForTable()
{
- ArrayList<UrlLinkDisplay> displayLinks = new ArrayList<UrlLinkDisplay>();
+ ArrayList<UrlLinkDisplay> displayLinks = new ArrayList<>();
displayLinks = getLinksForTable(selectedUrls, true);
displayLinks.addAll(getLinksForTable(nonselectedUrls, false));
return displayLinks;
@Override
public void setUrlData(List<UrlLinkDisplay> links)
{
- HashMap<String, UrlLink> unselurls = new HashMap<String, UrlLink>();
- HashMap<String, UrlLink> selurls = new HashMap<String, UrlLink>();
+ HashMap<String, UrlLink> unselurls = new HashMap<>();
+ HashMap<String, UrlLink> selurls = new HashMap<>();
Iterator<UrlLinkDisplay> it = links.iterator();
while (it.hasNext())
import jalview.datamodel.SequenceI;
import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Vector;
+/**
+ * A helper class to parse URL Link strings taken from applet parameters or
+ * jalview properties file using the com.stevesoft.pat.Regex implementation.
+ * Jalview 2.4 extension allows regular expressions to be used to parse ID
+ * strings and replace the result in the URL. Regex's operate on the whole ID
+ * string given to the matchURL method, if no regex is supplied, then only text
+ * following the first pipe symbol will be substituted. Usage documentation
+ * todo.
+ */
public class UrlLink
{
+ private static final String SEQUENCEID_PLACEHOLDER = DELIM + SEQUENCE_ID
+ + DELIM;
+
+ private static final String ACCESSION_PLACEHOLDER = DELIM + DB_ACCESSION
+ + DELIM;
+
/**
- * helper class to parse URL Link strings taken from applet parameters or
- * jalview properties file using the com.stevesoft.pat.Regex implementation.
- * Jalview 2.4 extension allows regular expressions to be used to parse ID
- * strings and replace the result in the URL. Regex's operate on the whole ID
- * string given to the matchURL method, if no regex is supplied, then only
- * text following the first pipe symbol will be substituted. Usage
- * documentation todo.
+ * A comparator that puts SEQUENCE_ID template links before DB_ACCESSION
+ * 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>()
+ {
+ @Override
+ public int compare(String link1, String link2)
+ {
+ if (link1 == null || link2 == null)
+ {
+ return 0; // for failsafe only
+ }
+ if (link1.contains(SEQUENCEID_PLACEHOLDER)
+ && link2.contains(ACCESSION_PLACEHOLDER))
+ {
+ return -1;
+ }
+ if (link2.contains(SEQUENCEID_PLACEHOLDER)
+ && link1.contains(ACCESSION_PLACEHOLDER))
+ {
+ return 1;
+ }
+ return String.CASE_INSENSITIVE_ORDER.compare(link1, link2);
+ }
+ };
private static final String EQUALS = "=";
+ rg.stringMatched(s) + "'");
}
// try to collate subgroup matches
- Vector<String> subs = new Vector<String>();
+ Vector<String> subs = new Vector<>();
// have to loop through submatches, collating them at top level
// match
int s = 0; // 1;
}
}
}
+
+ /**
+ * Sorts links (formatted as LinkName|LinkPattern) suitable for display in a
+ * menu
+ * <ul>
+ * <li>SEQUENCE_ID links precede DB_ACCESSION links (i.e. canonical lookup
+ * before cross-references)</li>
+ * <li>otherwise by Link name (case insensitive)</li>
+ * </ul>
+ *
+ * @param nlinks
+ */
+ public static void sort(List<String> nlinks)
+ {
+ Collections.sort(nlinks, LINK_COMPARATOR);
+ }
}
*/
package jalview.bin;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertTrue;
+
import jalview.gui.JvOptionPane;
import java.io.BufferedReader;
return classpath;
}
- private Worker jalviewDesktopRunner(boolean withAwt, String cmd,
+ private Worker getJalviewDesktopRunner(boolean withAwt, String cmd,
int timeout)
{
// Note: JAL-3065 - don't include quotes for lib/* because the arguments are
try
{
ls2_proc = Runtime.getRuntime().exec(_cmd + cmd);
- } catch (IOException e1)
+ } catch (Throwable e1)
{
e1.printStackTrace();
}
worker.join(timeout);
} catch (InterruptedException e)
{
- // e.printStackTrace();
+ System.err.println("Thread interrupted");
}
worker.setOutputReader(outputReader);
worker.setErrorReader(errorReader);
public void setUpForHeadlessCommandLineInputOperations()
throws IOException
{
- String cmds = "nodisplay -open examples/uniref50.fa -sortbytree -props FILE -colour zappo "
- + "-jabaws http://www.compbio.dundee.ac.uk/jabaws -nosortbytree -dasserver nickname=www.test.com "
+ String cmds = "nodisplay -open examples/uniref50.fa -sortbytree -props test/jalview/io/testProps.jvprops -colour zappo "
+ + "-jabaws http://www.compbio.dundee.ac.uk/jabaws -nosortbytree "
+ "-features examples/testdata/plantfdx.features -annotations examples/testdata/plantfdx.annotations -tree examples/testdata/uniref50_test_tree";
- Worker worker = jalviewDesktopRunner(true, cmds, SETUP_TIMEOUT);
+ Worker worker = getJalviewDesktopRunner(true, cmds, SETUP_TIMEOUT);
String ln = null;
while ((ln = worker.getOutputReader().readLine()) != null)
{
System.out.println(ln);
successfulCMDs.add(ln);
}
+ while ((ln = worker.getErrorReader().readLine()) != null)
+ {
+ System.err.println(ln);
+ }
}
@BeforeTest(alwaysRun = true)
public void setUpForCommandLineInputOperations() throws IOException
{
String cmds = "-open examples/uniref50.fa -noquestionnaire -nousagestats";
- Worker worker = jalviewDesktopRunner(false, cmds, SETUP_TIMEOUT);
+ Worker worker = getJalviewDesktopRunner(false, cmds, SETUP_TIMEOUT);
String ln = null;
int count = 0;
while ((ln = worker.getErrorReader().readLine()) != null)
}
}
- @Test(groups = { "Functional" }, dataProvider = "allInputOpearationsData")
+ @Test(groups = { "Functional" }, dataProvider = "allInputOperationsData")
public void testAllInputOperations(String expectedString,
String failureMsg)
{
String cmd = harg + type + " " + fileName;
// System.out.println(">>>>>>>>>>>>>>>> Command : " + cmd);
File file = new File(fileName);
- Worker worker = jalviewDesktopRunner(withAWT, cmd, timeout);
-
- FileAssert.assertFile(file,
- "Didn't create an output" + type + " file.[" + harg + "]");
- // System.out.println( "File '" + file.getName() + "' has size " +
- // file.length());
- // FileAssert.assertMinLength(new File(fileName), expectedMinFileSize);
+ file.deleteOnExit();
+ Worker worker = getJalviewDesktopRunner(withAWT, cmd, timeout);
+ assertNotNull(worker, "worker is null");
+ String msg = "Didn't create an output" + type + " file.[" + harg + "]";
+ assertTrue(file.exists(), msg);
+ FileAssert.assertFile(file, msg);
FileAssert.assertMinLength(file, expectedMinFileSize);
if (worker != null && worker.exit == null)
{
+ " generation (try running test again to verify - timeout at "
+ timeout + "ms). [" + harg + "]");
}
- new File(fileName).delete();
+ file.delete();
}
- @DataProvider(name = "allInputOpearationsData")
+ @DataProvider(name = "allInputOperationsData")
public Object[][] getHeadlessModeInputParams()
{
return new Object[][] {
// headless mode input operations
{ "CMD [-color zappo] executed successfully!",
"Failed command : -color zappo" },
- { "CMD [-props FILE] executed successfully!",
+ { "CMD [-props test/jalview/io/testProps.jvprops] executed successfully!",
"Failed command : -props File" },
{ "CMD [-sortbytree] executed successfully!",
"Failed command : -sortbytree" },
"Failed command : -open examples/uniref50.fa" },
{ "CMD [-nosortbytree] executed successfully!",
"Failed command : -nosortbytree" },
- {
- "CMD [-features examples/testdata/plantfdx.features] executed successfully!",
+ { "CMD [-features examples/testdata/plantfdx.features] executed successfully!",
"Failed command : -features examples/testdata/plantfdx.features" },
{ "CMD [-annotations examples/testdata/plantfdx.annotations] executed successfully!",
"Failed command : -annotations examples/testdata/plantfdx.annotations" },
"Failed command : -nousagestats" },
{ "CMD [-noquestionnaire] executed successfully!",
"Failed command : -noquestionnaire" } };
-
}
@DataProvider(name = "headlessModeOutputOperationsData")
public static Object[][] getHeadlessModeOutputParams()
{
- return new Object[][] {
- { "nodisplay -open examples/uniref50.fa", " -eps",
- "test_uniref50_out.eps", true, MINFILESIZE_BIG, TEST_TIMEOUT },
+ return new Object[][] { { "nodisplay -open examples/uniref50.fa",
+ " -eps", "test/jalview/bin/test_uniref50_out.eps", true,
+ MINFILESIZE_BIG, TEST_TIMEOUT },
{ "nodisplay -open examples/uniref50.fa", " -eps",
- "test_uniref50_out.eps", false, MINFILESIZE_BIG, TEST_TIMEOUT },
+ "test/jalview/bin/test_uniref50_out.eps", false,
+ MINFILESIZE_BIG, TEST_TIMEOUT },
{ "nogui -open examples/uniref50.fa", " -eps",
- "test_uniref50_out.eps", true, MINFILESIZE_BIG, TEST_TIMEOUT },
+ "test/jalview/bin/test_uniref50_out.eps", true, MINFILESIZE_BIG,
+ TEST_TIMEOUT },
{ "nogui -open examples/uniref50.fa", " -eps",
- "test_uniref50_out.eps", false, MINFILESIZE_BIG, TEST_TIMEOUT },
+ "test/jalview/bin/test_uniref50_out.eps", false,
+ MINFILESIZE_BIG, TEST_TIMEOUT },
{ "headless -open examples/uniref50.fa", " -eps",
- "test_uniref50_out.eps", true, MINFILESIZE_BIG, TEST_TIMEOUT },
+ "test/jalview/bin/test_uniref50_out.eps", true, MINFILESIZE_BIG,
+ TEST_TIMEOUT },
{ "headless -open examples/uniref50.fa", " -svg",
- "test_uniref50_out.svg", false, MINFILESIZE_BIG, TEST_TIMEOUT },
+ "test/jalview/bin/test_uniref50_out.svg", false,
+ MINFILESIZE_BIG, TEST_TIMEOUT },
{ "headless -open examples/uniref50.fa", " -png",
- "test_uniref50_out.png", true, MINFILESIZE_BIG, TEST_TIMEOUT },
+ "test/jalview/bin/test_uniref50_out.png", true, MINFILESIZE_BIG,
+ TEST_TIMEOUT },
{ "headless -open examples/uniref50.fa", " -html",
- "test_uniref50_out.html", true, MINFILESIZE_BIG, TEST_TIMEOUT },
+ "test/jalview/bin/test_uniref50_out.html", true,
+ MINFILESIZE_BIG, TEST_TIMEOUT },
{ "headless -open examples/uniref50.fa", " -fasta",
"test_uniref50_out.mfa", true, MINFILESIZE_SMALL,
TEST_TIMEOUT },
* check i18n for display name
*/
String label = MessageManager.getStringOrReturn("label.colourScheme_",
- name.toLowerCase().replace(" ", "_"));
+ name);
assertEquals(item.getText(), label);
}
* check i18n for display name
*/
String label = MessageManager.getStringOrReturn("label.colourScheme_",
- name.toLowerCase().replace(" ", "_"));
+ name);
assertEquals(item.getText(), label);
}
}
/**
- * Test for adding feature links
+ * Test for adding sequence id, dbref and feature links
*/
@Test(groups = { "Functional" })
- public void testAddFeatureLinks()
+ public void testBuildLinkMenu()
{
- // sequences from the alignment
List<SequenceI> seqs = parentPanel.getAlignment().getSequences();
-
- // create list of links and list of DBRefs
- 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("UNIPROT | http://www.uniprot.org/uniprot/$" + DB_ACCESSION
- + "$");
- links.add("INTERPRO | http://www.ebi.ac.uk/interpro/entry/$"
- + DB_ACCESSION + "$");
- // Gene3D entry tests for case (in)sensitivity
- links.add("Gene3D | http://gene3d.biochem.ucl.ac.uk/Gene3D/search?sterm=$"
- + DB_ACCESSION + "$&mode=protein");
-
- // make seq0 dbrefs
- refs.add(new DBRefEntry(DBRefSource.UNIPROT, "1", "P83527"));
- refs.add(new DBRefEntry("INTERPRO", "1", "IPR001041"));
- refs.add(new DBRefEntry("INTERPRO", "1", "IPR006058"));
- refs.add(new DBRefEntry("INTERPRO", "1", "IPR012675"));
-
- // make seq1 dbrefs
- refs.add(new DBRefEntry(DBRefSource.UNIPROT, "1", "Q9ZTS2"));
- refs.add(new DBRefEntry("GENE3D", "1", "3.10.20.30"));
-
- // add all the dbrefs to the sequences: Uniprot 1 each, Interpro all 3 to
- // seq0, Gene3D to seq1
- SequenceI seq = seqs.get(0);
- seq.addDBRef(refs.get(0));
-
- seq.addDBRef(refs.get(1));
- seq.addDBRef(refs.get(2));
- seq.addDBRef(refs.get(3));
+ final SequenceI seq0 = seqs.get(0);
+ final SequenceI seq1 = seqs.get(1);
+ final List<SequenceFeature> noFeatures = Collections
+ .<SequenceFeature> emptyList();
+ final String linkText = MessageManager.getString("action.link");
+
+ seq0.addDBRef(new DBRefEntry(DBRefSource.UNIPROT, "1", "P83527"));
+ seq0.addDBRef(new DBRefEntry("INTERPRO", "1", "IPR001041"));
+ seq0.addDBRef(new DBRefEntry("INTERPRO", "1", "IPR012675"));
+ seq0.addDBRef(new DBRefEntry("INTERPRO", "1", "IPR006058"));
+ seq1.addDBRef(new DBRefEntry(DBRefSource.UNIPROT, "1", "Q9ZTS2"));
+ seq1.addDBRef(new DBRefEntry("GENE3D", "1", "3.10.20.30"));
- seqs.get(1).addDBRef(refs.get(4));
- seqs.get(1).addDBRef(refs.get(5));
-
- // get the Popup Menu for first sequence
- List<SequenceFeature> noFeatures = Collections.<SequenceFeature> emptyList();
- testee = new PopupMenu(parentPanel, seq, noFeatures);
- Component[] seqItems = testee.sequenceMenu.getMenuComponents();
- JMenu linkMenu = (JMenu) seqItems[6];
+ /*
+ * check the Link Menu for the first sequence
+ */
+ JMenu linkMenu = PopupMenu.buildLinkMenu(seq0, noFeatures);
+ assertEquals(linkText, linkMenu.getText());
Component[] linkItems = linkMenu.getMenuComponents();
- // check the number of links are the expected number
+ /*
+ * menu items are ordered: SEQUENCE_ID search first, then dbrefs in order
+ * of database name (and within that by order of dbref addition)
+ */
assertEquals(5, linkItems.length);
-
- // first entry is EMBL-EBI which just uses sequence id not accession id?
assertEquals("EMBL-EBI Search", ((JMenuItem) linkItems[0]).getText());
+ assertEquals("INTERPRO|IPR001041",
+ ((JMenuItem) linkItems[1]).getText());
+ assertEquals("INTERPRO|IPR012675",
+ ((JMenuItem) linkItems[2]).getText());
+ assertEquals("INTERPRO|IPR006058",
+ ((JMenuItem) linkItems[3]).getText());
+ assertEquals("UNIPROT|P83527", ((JMenuItem) linkItems[4]).getText());
- // sequence id for each link should match corresponding DB accession id
- for (int i = 1; i < 4; i++)
- {
- String msg = seq.getName() + " link[" + i + "]";
- assertEquals(msg, refs.get(i - 1).getSource(),
- ((JMenuItem) linkItems[i])
- .getText().split("\\|")[0]);
- assertEquals(msg, refs.get(i - 1).getAccessionId(),
- ((JMenuItem) linkItems[i])
- .getText().split("\\|")[1]);
- }
-
- // get the Popup Menu for second sequence
- seq = seqs.get(1);
- testee = new PopupMenu(parentPanel, seq, noFeatures);
- seqItems = testee.sequenceMenu.getMenuComponents();
- linkMenu = (JMenu) seqItems[6];
+ /*
+ * check the Link Menu for the second sequence
+ * note dbref GENE3D is matched to link Gene3D, the latter is displayed
+ */
+ linkMenu = PopupMenu.buildLinkMenu(seq1, noFeatures);
+ assertEquals(linkText, linkMenu.getText());
linkItems = linkMenu.getMenuComponents();
-
- // check the number of links are the expected number
assertEquals(3, linkItems.length);
-
- // first entry is EMBL-EBI which just uses sequence id not accession id?
assertEquals("EMBL-EBI Search", ((JMenuItem) linkItems[0]).getText());
+ assertEquals("Gene3D|3.10.20.30", ((JMenuItem) linkItems[1]).getText());
+ assertEquals("UNIPROT|Q9ZTS2", ((JMenuItem) linkItems[2]).getText());
- // sequence id for each link should match corresponding DB accession id
- for (int i = 1; i < 3; i++)
- {
- String msg = seq.getName() + " link[" + i + "]";
- assertEquals(msg, refs.get(i + 3).getSource(),
- ((JMenuItem) linkItems[i])
- .getText().split("\\|")[0].toUpperCase());
- assertEquals(msg, refs.get(i + 3).getAccessionId(),
- ((JMenuItem) linkItems[i]).getText().split("\\|")[1]);
- }
-
- // if there are no valid links the Links submenu is disabled
- List<String> nomatchlinks = new ArrayList<>();
- nomatchlinks.add("NOMATCH | http://www.uniprot.org/uniprot/$"
- + DB_ACCESSION + "$");
-
- testee = new PopupMenu(parentPanel, seq, noFeatures);
- seqItems = testee.sequenceMenu.getMenuComponents();
- linkMenu = (JMenu) seqItems[6];
- assertFalse(linkMenu.isEnabled());
+ /*
+ * if there are no valid links the Links submenu is still shown, but
+ * reduced to the EMBL-EBI lookup only (inserted by
+ * CustomUrlProvider.choosePrimaryUrl())
+ */
+ String unmatched = "NOMATCH|http://www.uniprot.org/uniprot/$"
+ + DB_ACCESSION + "$";
+ UrlProviderFactoryI factory = new DesktopUrlProviderFactory(null,
+ unmatched, "");
+ Preferences.sequenceUrlLinks = factory.createUrlProvider();
+ linkMenu = PopupMenu.buildLinkMenu(seq1, noFeatures);
+ assertEquals(linkText, linkMenu.getText());
+ linkItems = linkMenu.getMenuComponents();
+ assertEquals(1, linkItems.length);
+ assertEquals("EMBL-EBI Search", ((JMenuItem) linkItems[0]).getText());
}
- /**
- * Test for adding feature links
- */
@Test(groups = { "Functional" })
public void testHideInsertions()
{
package jalview.gui;
+import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
+import jalview.bin.Cache;
+import jalview.bin.Jalview;
import jalview.datamodel.Alignment;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
+import jalview.io.DataSourceType;
+import jalview.io.FileLoader;
+import jalview.viewmodel.ViewportRanges;
import java.awt.event.MouseEvent;
SequenceI seq1 = new Sequence("Seq1", "MATRESS");
SequenceI seq2 = new Sequence("Seq2", "MADNESS");
AlignmentI al = new Alignment(new SequenceI[] { seq1, seq2 });
-
+
AlignFrame alignFrame = new AlignFrame(al, al.getWidth(),
al.getHeight());
- ScalePanel scalePanel = new ScalePanel(
- alignFrame.getViewport(), alignFrame.alignPanel
- );
-
- MouseEvent mouse = new MouseEvent(
- scalePanel, 0, 1, 0, 4, 0, 1, false
- );
+ ScalePanel scalePanel = alignFrame.alignPanel.getScalePanel();
+
+ MouseEvent mouse = new MouseEvent(scalePanel, 0, 1, 0, 4, 0, 1, false);
scalePanel.mousePressed(mouse);
scalePanel.mouseDragged(mouse);
int startCol = sg.getStartRes();
assertTrue(startCol >= 0);
+ }
+ /**
+ * Test for JAL-3212
+ */
+ @Test(groups = "Functional")
+ public void testSelectColumns_withHidden()
+ {
+ String seq1 = ">Seq1\nANTOFAGASTAVALPARAISOMONTEVIDEOANTANANARIVO";
+ AlignFrame alignFrame = new FileLoader().LoadFileWaitTillLoaded(seq1,
+ DataSourceType.PASTE);
+ ScalePanel scalePanel = alignFrame.alignPanel.getScalePanel();
+ /*
+ * hide columns 1-20 (of 43); then 'drag' to select columns 30-31;
+ * 31 is 51 in absolute columns but bug JAL-3212 reduces it to
+ * endRes which is 22
+ */
+ AlignViewport viewport = alignFrame.getViewport();
+ ViewportRanges ranges = viewport.getRanges();
+ assertEquals(ranges.getStartRes(), 0);
+ assertEquals(ranges.getEndRes(), 42);
+ viewport.hideColumns(0, 19);
+ alignFrame.alignPanel.updateLayout();
+ assertEquals(ranges.getStartRes(), 0);
+ assertEquals(ranges.getEndRes(), 22);
+
+ int cw = viewport.getCharWidth();
+ int xPos = 9 * cw + 2;
+ MouseEvent mouse = new MouseEvent(scalePanel, 0, 1, 0, xPos, 0, 1,
+ false);
+ scalePanel.mousePressed(mouse);
+ scalePanel.mouseDragged(mouse);
+ xPos += cw;
+ mouse = new MouseEvent(scalePanel, 0, 1, 0, xPos, 0, 1, false);
+ scalePanel.mouseReleased(mouse);
+
+ SequenceGroup sg = scalePanel.av.getSelectionGroup();
+ assertEquals(sg.getStartRes(), 29);
+ assertEquals(sg.getEndRes(), 30);
+ }
+
+ @BeforeClass(alwaysRun = true)
+ public static void setUpBeforeClass() throws Exception
+ {
+ /*
+ * use read-only test properties file
+ */
+ Cache.loadProperties("test/jalview/io/testProps.jvprops");
+ Jalview.main(new String[] { "-nonews" });
}
}
av.setScaleAboveWrapped(false);
av.setScaleLeftWrapped(false);
av.setScaleRightWrapped(false);
- alignFrame.alignPanel.paintAlignment(false, false);
- waitForSwing(); // for Swing thread
+
+ alignFrame.alignPanel.updateLayout();
final int charHeight = av.getCharHeight();
final int charWidth = av.getCharWidth();
av.setScaleAboveWrapped(true);
av.setScaleLeftWrapped(false);
av.setScaleRightWrapped(false);
- alignFrame.alignPanel.paintAlignment(false, false);
- waitForSwing();
+ alignFrame.alignPanel.updateLayout();
final int charHeight = av.getCharHeight();
final int charWidth = av.getCharWidth();
av.setScaleAboveWrapped(false);
av.setScaleLeftWrapped(false);
av.setScaleRightWrapped(false);
- alignFrame.alignPanel.paintAlignment(false, false);
- waitForSwing();
+ alignFrame.alignPanel.updateLayout();
final int charHeight = av.getCharHeight();
final int charWidth = av.getCharWidth();
av.setScaleAboveWrapped(false);
av.setScaleLeftWrapped(false);
av.setScaleRightWrapped(false);
- alignFrame.alignPanel.paintAlignment(false, false);
- // need to wait for repaint to finish!
- waitForSwing();
+ alignFrame.alignPanel.updateLayout();
SeqPanel testee = alignFrame.alignPanel.getSeqPanel();
int x = 0;
final int charWidth = av.getCharWidth();
* x over scale left (before drawn columns) results in -1
*/
av.setScaleLeftWrapped(true);
- alignFrame.alignPanel.paintAlignment(false, false);
- waitForSwing();
+ alignFrame.alignPanel.updateLayout();
SeqCanvas seqCanvas = testee.seqCanvas;
int labelWidth = (int) PA.getValue(seqCanvas, "labelWidthWest");
assertTrue(labelWidth > 0);
* x over scale right (beyond drawn columns) results in -1
*/
av.setScaleRightWrapped(true);
- alignFrame.alignPanel.paintAlignment(false, false);
- waitForSwing();
+ alignFrame.alignPanel.updateLayout();
labelWidth = (int) PA.getValue(seqCanvas, "labelWidthEast");
assertTrue(labelWidth > 0);
int residuesWide2 = av.getRanges().getViewportWidth();
import jalview.gui.JvOptionPane;
import java.awt.Button;
+import java.awt.Toolkit;
import java.awt.event.InputEvent;
import java.awt.event.MouseEvent;
@Test(groups = "Functional")
public void testIsControlDown_mac()
{
+ String toolkit = Toolkit.getDefaultToolkit().getClass().getName();
+ if ("sun.awt.X11.XToolkit".equals(toolkit))
+ {
+ /*
+ * this toolkit on the build server fails these tests,
+ * because it returns 2, not 4, for getMenuShortcutKeyMask
+ */
+ return;
+ }
+
int clickCount = 1;
boolean isPopupTrigger = false;
int buttonNo = MouseEvent.BUTTON1;
import jalview.gui.JvOptionPane;
import java.util.ArrayList;
+import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
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=$"
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()
// 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";
// 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());
// 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);
+ }
}
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="b1a16838a449">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="b1a16839a449">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[castor-1.1-cycle-xml.jar]]></string>
+ <string><![CDATA[vamsas-client.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[castor-1.1-cycle-xml.jar]]></string>
+ <string><![CDATA[vamsas-client.jar]]></string>
</property>
<property name="fileSize">
- <long>1035998</long>
+ <long>682375</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="b1a16839a449">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="495aeddb8b3d">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[vamsas-client.jar]]></string>
+ <string><![CDATA[JGoogleAnalytics_0.3.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[vamsas-client.jar]]></string>
+ <string><![CDATA[JGoogleAnalytics_0.3.jar]]></string>
</property>
<property name="fileSize">
- <long>682375</long>
+ <long>8300</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="495aeddb8b3d">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="4996716cba8e">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[JGoogleAnalytics_0.3.jar]]></string>
+ <string><![CDATA[jabaws-min-client-2.2.0.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[JGoogleAnalytics_0.3.jar]]></string>
+ <string><![CDATA[jabaws-min-client-2.2.0.jar]]></string>
</property>
<property name="fileSize">
- <long>8300</long>
+ <long>601804</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="4996716cba8e">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="8fbb17529b9c">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[jabaws-min-client-2.2.0.jar]]></string>
+ <string><![CDATA[httpcore-4.0.1.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[min-jabaws-client-2.2.0.jar]]></string>
+ <string><![CDATA[httpcore-4.0.1.jar]]></string>
</property>
<property name="fileSize">
- <long>601804</long>
+ <long>172888</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="8fbb17529b9c">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="8fbb17519b9c">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[httpcore-4.0.1.jar]]></string>
+ <string><![CDATA[httpclient-4.0.3.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[httpcore-4.0.1.jar]]></string>
+ <string><![CDATA[httpclient-4.0.3.jar]]></string>
</property>
<property name="fileSize">
- <long>172888</long>
+ <long>292893</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="8fbb17519b9c">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="8fbb17539b9c">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[httpclient-4.0.3.jar]]></string>
+ <string><![CDATA[httpmime-4.0.3.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[httpclient-4.0.3.jar]]></string>
+ <string><![CDATA[httpmime-4.0.3.jar]]></string>
</property>
<property name="fileSize">
- <long>292893</long>
+ <long>25447</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="8fbb17539b9c">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="8fbb17529b9d">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[httpmime-4.0.3.jar]]></string>
+ <string><![CDATA[apache-mime4j-0.6.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[httpmime-4.0.3.jar]]></string>
+ <string><![CDATA[apache-mime4j-0.6.jar]]></string>
</property>
<property name="fileSize">
- <long>25447</long>
+ <long>345048</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="8fbb17529b9d">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="aa3a521fb6bc">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[apache-mime4j-0.6.jar]]></string>
+ <string><![CDATA[miglayout-4.0-swing.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[apache-mime4j-0.6.jar]]></string>
+ <string><![CDATA[miglayout-4.0-swing.jar]]></string>
</property>
<property name="fileSize">
- <long>345048</long>
+ <long>77291</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="aa3a521fb6bc">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="aa3a5220b6bc1">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[miglayout-4.0-swing.jar]]></string>
+ <string><![CDATA[commons-codec-1.3.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[miglayout-4.0-swing.jar]]></string>
+ <string><![CDATA[commons-codec-1.3.jar]]></string>
</property>
<property name="fileSize">
- <long>77291</long>
+ <long>46725</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="aa3a5220b6bc1">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="aa3a5220b6bc">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[commons-codec-1.3.jar]]></string>
+ <string><![CDATA[jswingreader-0.3.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[commons-codec-1.3.jar]]></string>
+ <string><![CDATA[jswingreader-0.3.jar]]></string>
</property>
<property name="fileSize">
- <long>46725</long>
+ <long>86618</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="aa3a5220b6bc">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="df3a5220b6bc">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[jswingreader-0.3.jar]]></string>
+ <string><![CDATA[VARNAv3-93.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[jswingreader-0.3.jar]]></string>
+ <string><![CDATA[VARNAv3-93.jar]]></string>
</property>
<property name="fileSize">
- <long>86618</long>
+ <long>695802</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="df3a5220b6bc">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="f44ca393ab9f">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[VARNAv3-93.jar]]></string>
+ <string><![CDATA[groovy-all-2.4.12-indy.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[VARNAv3-93.jar]]></string>
+ <string><![CDATA[groovy-all-2.4.12-indy.jar]]></string>
</property>
<property name="fileSize">
- <long>695802</long>
+ <long>6149494</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="f44ca391ab9f">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="1f46cffffab93">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[spring-web-3.0.5.RELEASE.jar]]></string>
+ <string><![CDATA[jfreesvg-2.1.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[spring-web-3.0.5.RELEASE.jar]]></string>
+ <string><![CDATA[jfreesvg-2.1.jar]]></string>
</property>
<property name="fileSize">
- <long>395587</long>
+ <long>49768</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="f44ca392ab9f">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="1f46efeefab93">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[jdas-1.0.4.jar]]></string>
+ <string><![CDATA[json_simple-1.1.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[jdas-1.0.4.jar]]></string>
+ <string><![CDATA[json_simple-1.1.jar]]></string>
</property>
<property name="fileSize">
- <long>249906</long>
+ <long>16046</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="f44ca393ab9f">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="841f46efeefab93">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[groovy-all-2.4.12-indy.jar]]></string>
+ <string><![CDATA[libquaqua64-8.0.jnilib.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[groovy-all-2.4.12-indy.jar]]></string>
+ <string><![CDATA[libquaqua64-8.0.jnilib.jar]]></string>
</property>
<property name="fileSize">
- <long>6149494</long>
+ <long>16046</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="f46c2f42ab93">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="9a1f46efeefab93">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[spring-core-3.0.5.RELEASE.jar]]></string>
+ <string><![CDATA[libquaqua-8.0.jnilib.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[spring-core-3.0.5.RELEASE.jar]]></string>
+ <string><![CDATA[libquaqua-8.0.jnilib.jar]]></string>
</property>
<property name="fileSize">
- <long>382442</long>
+ <long>16046</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</property>
</object>
</method>
+
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="1f46cffffab93">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="9a1f46efeef911a">
+ <property name="belongsToUninstallPhase">
+ <boolean>false</boolean>
+ </property>
+ <property name="rollbackEnabledCancel">
+ <boolean>true</boolean>
+ </property>
+ <property name="rollbackEnabledError">
+ <boolean>true</boolean>
+ </property>
+ <property name="ruleExpression">
+ <string><![CDATA[]]></string>
+ </property>
+ <property name="unixPermissions">
+ <string><![CDATA[664]]></string>
+ </property>
+ <property name="sourceName">
+ <string><![CDATA[VAqua5-patch.jar]]></string>
+ </property>
+ <property name="overrideUnixPermissions">
+ <boolean>false</boolean>
+ </property>
+ <property name="sourcePath">
+ <string><![CDATA[/homes/cruisecontrol/jalview/lib/]]></string>
+ </property>
+ <property name="shouldUninstall">
+ <boolean>true</boolean>
+ </property>
+ <property name="rollbackEnabledCancel">
+ <boolean>true</boolean>
+ </property>
+ <property name="rollbackEnabledError">
+ <boolean>true</boolean>
+ </property>
+ <property name="destinationName">
+ <string><![CDATA[VAqua5-patch.jar]]></string>
+ </property>
+ <property name="fileSize">
+ <long>1370564</long>
+ </property>
+ <property name="macBinary">
+ <boolean>false</boolean>
+ </property>
+ <property name="targetCheckKind">
+ <int>0</int>
+ </property>
+ <property name="ruleExpression">
+ <string><![CDATA[]]></string>
+ </property>
+ </object>
+ </method>
+ <method name="addElement">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="1936efeefab93">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[jfreesvg-2.1.jar]]></string>
+ <string><![CDATA[quaqua-filechooser-only-8.0.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[jfreesvg-2.1.jar]]></string>
+ <string><![CDATA[quaqua-filechooser-only-8.0.jar]]></string>
</property>
<property name="fileSize">
- <long>49768</long>
+ <long>660179</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="1f46efeefab93">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="10936efeefab93">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[json_simple-1.1.jar]]></string>
+ <string><![CDATA[jersey-client-1.19.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[json_simple-1.1.jar]]></string>
+ <string><![CDATA[jersey-client-1.19.jar]]></string>
</property>
<property name="fileSize">
- <long>16046</long>
+ <long>134021</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="841f46efeefab93">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="11936efeefab93">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[libqaqua64.jnilib]]></string>
+ <string><![CDATA[jersey-core-1.19.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[libqaqua64.jnilib]]></string>
+ <string><![CDATA[jersey-core-1.19.jar]]></string>
</property>
<property name="fileSize">
- <long>16046</long>
+ <long>436689</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="9a1f46efeefab93">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="12936efeefab93">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[libquaqua.jnilib]]></string>
+ <string><![CDATA[jersey-json-1.19.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[libquaqua.jnilib]]></string>
+ <string><![CDATA[jersey-json-1.19.jar]]></string>
</property>
<property name="fileSize">
- <long>16046</long>
+ <long>165345</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="9a1f46efeef911a">
- <property name="belongsToUninstallPhase">
- <boolean>false</boolean>
- </property>
- <property name="rollbackEnabledCancel">
- <boolean>true</boolean>
- </property>
- <property name="rollbackEnabledError">
- <boolean>true</boolean>
- </property>
- <property name="ruleExpression">
- <string><![CDATA[]]></string>
- </property>
- <property name="unixPermissions">
- <string><![CDATA[664]]></string>
- </property>
- <property name="sourceName">
- <string><![CDATA[VAqua5-patch.jar]]></string>
- </property>
- <property name="overrideUnixPermissions">
- <boolean>false</boolean>
- </property>
- <property name="sourcePath">
- <string><![CDATA[/homes/cruisecontrol/jalview/lib/]]></string>
- </property>
- <property name="shouldUninstall">
- <boolean>true</boolean>
- </property>
- <property name="rollbackEnabledCancel">
- <boolean>true</boolean>
- </property>
- <property name="rollbackEnabledError">
- <boolean>true</boolean>
- </property>
- <property name="destinationName">
- <string><![CDATA[VAqua5-patch.jar]]></string>
- </property>
- <property name="fileSize">
- <long>1370564</long>
- </property>
- <property name="macBinary">
- <boolean>false</boolean>
- </property>
- <property name="targetCheckKind">
- <int>0</int>
- </property>
- <property name="ruleExpression">
- <string><![CDATA[]]></string>
- </property>
- </object>
- </method>
- <method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="1936efeefab93">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="13936efeefab93">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[quaqua-filechooser-only-8.0.jar]]></string>
+ <string><![CDATA[java-json.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[quaqua-filechooser-only-8.0.jar]]></string>
+ <string><![CDATA[java-json.jar]]></string>
</property>
<property name="fileSize">
- <long>660179</long>
+ <long>84697</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="10936efeefab93">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="14936efeefab93">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[jersey-client-1.19.jar]]></string>
+ <string><![CDATA[jsr311-api-1.1.1.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[jersey-client-1.19.jar]]></string>
+ <string><![CDATA[jsr311-api-1.1.1.jar]]></string>
</property>
<property name="fileSize">
- <long>134021</long>
+ <long>46367</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="11936efeefab93">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="15936efeefab93">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[jersey-core-1.19.jar]]></string>
+ <string><![CDATA[jetty-http-9.2.10.v20150310.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[jersey-core-1.19.jar]]></string>
+ <string><![CDATA[jetty-http-9.2.10.v20150310.jar]]></string>
</property>
<property name="fileSize">
- <long>436689</long>
+ <long>105748</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="12936efeefab93">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="16936efeefab93">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[jersey-json-1.19.jar]]></string>
+ <string><![CDATA[jetty-io-9.2.10.v20150310.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[jersey-json-1.19.jar]]></string>
+ <string><![CDATA[jetty-io-9.2.10.v20150310.jar]]></string>
</property>
<property name="fileSize">
- <long>165345</long>
+ <long>108132</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="13936efeefab93">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="17936efeefab93">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[java-json.jar]]></string>
+ <string><![CDATA[jetty-server-9.2.10.v20150310.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[java-json.jar]]></string>
+ <string><![CDATA[jetty-server-9.2.10.v20150310.jar]]></string>
</property>
<property name="fileSize">
- <long>84697</long>
+ <long>418917</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="14936efeefab93">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="18936efeefab93">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[jsr311-api-1.1.1.jar]]></string>
+ <string><![CDATA[jetty-util-9.2.10.v20150310.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[jsr311-api-1.1.1.jar]]></string>
+ <string><![CDATA[jetty-util-9.2.10.v20150310.jar]]></string>
</property>
<property name="fileSize">
- <long>46367</long>
+ <long>356253</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="15936efeefab93">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="1899e36efeefab93">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[jetty-http-9.2.10.v20150310.jar]]></string>
+ <string><![CDATA[jetty-servlet-9.2.10.v20150310.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[jetty-http-9.2.10.v20150310.jar]]></string>
+ <string><![CDATA[jetty-servlet-9.2.10.v20150310.jar]]></string>
</property>
<property name="fileSize">
- <long>105748</long>
+ <long>356253</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="16936efeefab93">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="1899d6efeefab93">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[jetty-io-9.2.10.v20150310.jar]]></string>
+ <string><![CDATA[jetty-security-9.2.10.v20150310.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[jetty-io-9.2.10.v20150310.jar]]></string>
+ <string><![CDATA[jetty-security-9.2.10.v20150310.jar]]></string>
</property>
<property name="fileSize">
- <long>108132</long>
+ <long>356253</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="17936efeefab93">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="1000ddddfab93">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[jetty-server-9.2.10.v20150310.jar]]></string>
+ <string><![CDATA[htsjdk-2.12.0.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[jetty-server-9.2.10.v20150310.jar]]></string>
+ <string><![CDATA[htsjdk-2.12.0.jar]]></string>
</property>
<property name="fileSize">
- <long>418917</long>
+ <long>16046</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="18936efeefab93">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="1000ddddfb93">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[jetty-util-9.2.10.v20150310.jar]]></string>
+ <string><![CDATA[intervalstore-v1.0.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[jetty-util-9.2.10.v20150310.jar]]></string>
+ <string><![CDATA[intervalstore-v1.0.jar]]></string>
+ </property>
+ <property name="fileSize">
+ <long>26303</long>
+ </property>
+ <property name="macBinary">
+ <boolean>false</boolean>
+ </property>
+ <property name="targetCheckKind">
+ <int>0</int>
+ </property>
+ <property name="ruleExpression">
+ <string><![CDATA[]]></string>
+ </property>
+ </object>
+ </method>
+ <method name="addElement">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="b10a3">
+ <property name="belongsToUninstallPhase">
+ <boolean>false</boolean>
+ </property>
+ <property name="rollbackEnabledCancel">
+ <boolean>true</boolean>
+ </property>
+ <property name="rollbackEnabledError">
+ <boolean>true</boolean>
+ </property>
+ <property name="ruleExpression">
+ <string><![CDATA[]]></string>
+ </property>
+ <property name="unixPermissions">
+ <string><![CDATA[664]]></string>
+ </property>
+ <property name="sourceName">
+ <string><![CDATA[biojava-core-4.1.0.jar]]></string>
+ </property>
+ <property name="overrideUnixPermissions">
+ <boolean>false</boolean>
+ </property>
+ <property name="sourcePath">
+ <string><![CDATA[/homes/cruisecontrol/jalview/lib/]]></string>
+ </property>
+ <property name="shouldUninstall">
+ <boolean>true</boolean>
+ </property>
+ <property name="rollbackEnabledCancel">
+ <boolean>true</boolean>
+ </property>
+ <property name="rollbackEnabledError">
+ <boolean>true</boolean>
+ </property>
+ <property name="destinationName">
+ <string><![CDATA[biojava-core-4.1.0.jar]]></string>
</property>
<property name="fileSize">
<long>356253</long>
</object>
</method>
<method name="addElement">
- <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="1000ddddfab93">
+ <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="b10a30">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>
</property>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[htsjdk-1.133.jar]]></string>
+ <string><![CDATA[biojava-ontology-4.1.0.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[htsjdk-1.133.jar]]></string>
+ <string><![CDATA[biojava-ontology-4.1.0.jar]]></string>
</property>
<property name="fileSize">
- <long>16046</long>
+ <long>356253</long>
</property>
<property name="macBinary">
<boolean>false</boolean>
</property>
</object>
</method>
+
<method name="addElement">
<object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="1000ddddfab939">
<property name="belongsToUninstallPhase">
</property>
</object>
<object refID="88d4aff3b0c6"/>
- <object refID="b1a16838a449"/>
<object refID="b1a16839a449"/>
<object refID="495aeddb8b3d"/>
<object refID="4996716cba8e"/>
<object refID="aa3a5220b6bc"/>
<object refID="df3a5220b6bc"/>
<object refID="aa3a5220b6bc1"/>
- <object refID="f44ca391ab9f"/>
- <object refID="f44ca392ab9f"/>
+
<object refID="f44ca393ab9f"/>
- <object refID="f46c2f42ab93"/>
+
<object refID="1f46cffffab93"/>
<object refID="1f46efeefab93"/>
<object refID="1936efeefab93"/>
<object refID="1000ddddfab93"/>
+ <object refID="1000ddddfb93"/>
<object refID="1000ddddfab939"/>
<object refID="10936efeefab93"/>
<object refID="11936efeefab93"/>
<object refID="16936efeefab93"/>
<object refID="17936efeefab93"/>
<object refID="18936efeefab93"/>
+ <object refID="b10a3"/>
+ <object refID="b10a30"/>
+ <object refID="1899e36efeefab93"/>
+ <object refID="1899d6efeefab93"/>
+
<object class="com.zerog.ia.installer.actions.InstallFile" objectID="f44fc5b2aba1">
<property name="belongsToUninstallPhase">
<boolean>false</boolean>