X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2FEnfinEnvision2OneWay.java;h=7c9f5756c61f8d5fe26570f61fd455efe250cb3f;hb=831ad693b1320d74143011e1fe510496876e148a;hp=e0307d5475be970eef814f8fc96cb674f6f44c90;hpb=ecefdb4febd684adbc9f114e90f497eb0bbcd4b1;p=jalview.git diff --git a/src/jalview/ws/EnfinEnvision2OneWay.java b/src/jalview/ws/EnfinEnvision2OneWay.java index e0307d5..7c9f575 100644 --- a/src/jalview/ws/EnfinEnvision2OneWay.java +++ b/src/jalview/ws/EnfinEnvision2OneWay.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.5) - * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7) + * Copyright (C) 2011 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle * * This file is part of Jalview. * @@ -33,12 +33,21 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; +import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.io.UnsupportedEncodingException; import java.net.URL; +import java.net.URLEncoder; +import java.nio.charset.Charset; +import java.nio.charset.CharsetEncoder; import java.util.Hashtable; import java.util.Map; import java.util.Vector; +import java.util.regex.Pattern; import javax.swing.JMenu; import javax.swing.JMenuItem; @@ -48,10 +57,15 @@ import javax.swing.event.MenuListener; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; +import org.apache.axis.utils.StringUtils; +import org.apache.http.client.utils.URLEncodedUtils; +import org.apache.http.entity.StringEntity; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; +import com.lowagie.text.html.HtmlEncoder; + /** * Lightweight runnable to discover dynamic 'one way' group URL services * @@ -138,19 +152,31 @@ public class EnfinEnvision2OneWay extends DefaultHandler implements System.err.println("Adding entry for " + wfname + " " + description); if (wfname.toLowerCase().indexOf("funcnet") == -1) { + description = Pattern.compile("\\s+",Pattern.MULTILINE).matcher(description).replaceAll(" "); groupURLdescr.addElement(description); groupURLdescr.addElement(description); + String urlstub=wfname; + if (wfname.indexOf(" ")>-1) + { + // make the name safe! + try { + urlstub = URLEncoder.encode(wfname,"utf-8"); + } catch (UnsupportedEncodingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } groupURLLinks .addElement(wfname + "|" + "http://www.ebi.ac.uk/enfin-srv/envision2/pages/linkin.jsf?tool=Jalview&workflow=" - + wfname + + urlstub + "&datasetName=JalviewSeqs$DATASETID$&input=$SEQUENCEIDS$&inputType=0|,"); // #"+description+"#"); groupURLLinks .addElement(wfname + "|" + "http://www.ebi.ac.uk/enfin-srv/envision2/pages/linkin.jsf?tool=Jalview&workflow=" - + wfname + + urlstub + "&datasetName=JalviewSeqs$DATASETID$&input=$SEQUENCES=/([A-Za-z]+)+/=$&inputType=1|,"); // #"+description+"#"); } } @@ -284,7 +310,8 @@ public class EnfinEnvision2OneWay extends DefaultHandler implements * Object array returned from the makeUrlStubs function. */ private void addshowLink(JMenu linkMenu, String label, String descr, - String dbname, final GroupUrlLink urlgenerator, final Object[] urlstub) + String dbname, final GroupUrlLink urlgenerator, + final Object[] urlstub) { Component[] jmi = linkMenu.getMenuComponents(); for (int i = 0; i < jmi.length; i++) @@ -296,20 +323,24 @@ public class EnfinEnvision2OneWay extends DefaultHandler implements return; } } + try { + descr = HtmlEncoder.encode(descr); + } catch (Exception e){}; + boolean seqsorids = (urlgenerator.getGroupURLType() & urlgenerator.SEQUENCEIDS) == 0; int i = urlgenerator.getNumberInvolved(urlstub); JMenuItem item = new JMenuItem(label); - // - if (dbname==null || dbname.trim().length()==0) + // + if (dbname == null || dbname.trim().length() == 0) { dbname = ""; } item.setToolTipText("" - + JvSwingUtils.wrapTooltip("Submit " + i + " " + - dbname +" " - + (seqsorids ? "sequence" : "sequence id") + (i > 1 ? "s" : "") - - + " to
" + descr) + ""); + + JvSwingUtils.wrapTooltip("Submit " + i + " " + dbname + " " + + (seqsorids ? "sequence" : "sequence id") + + (i > 1 ? "s" : "") + + + " to
" + descr) + ""); item.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) @@ -319,7 +350,8 @@ public class EnfinEnvision2OneWay extends DefaultHandler implements public void run() { - try { + try + { showLink(urlgenerator.constructFrom(urlstub)); } catch (UrlStringTooLongException ex) { @@ -404,7 +436,7 @@ public class EnfinEnvision2OneWay extends DefaultHandler implements */ private JMenu buildGroupURLMenu(SequenceI[] seqs, SequenceGroup sg) { - if (groupURLdescr==null || groupURLLinks==null) + if (groupURLdescr == null || groupURLLinks == null) return null; // TODO: usability: thread off the generation of group url content so root // menu appears asap @@ -476,7 +508,8 @@ public class EnfinEnvision2OneWay extends DefaultHandler implements /** * last number of sequences where URL generation failed */ - int[] nsqtype = new int[] { 0,0,0,0,0,0,0,0,0,0}; + int[] nsqtype = new int[] + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; for (int i = 0; i < groupURLLinks.size(); i++) { String link = (String) groupURLLinks.elementAt(i); @@ -527,7 +560,8 @@ public class EnfinEnvision2OneWay extends DefaultHandler implements String[] allids = ((String[]) idset[1]); seqstr = new String[numinput]; ids = new String[numinput]; - if (nsqtype[urlLink.getGroupURLType()]>0 && numinput>=nsqtype[urlLink.getGroupURLType()]) + if (nsqtype[urlLink.getGroupURLType()] > 0 + && numinput >= nsqtype[urlLink.getGroupURLType()]) { continue; } @@ -539,8 +573,10 @@ public class EnfinEnvision2OneWay extends DefaultHandler implements seqstr[idcount++] = idandseqs[1][sq]; } } - try {createAndAddLinks(wflinkMenus, false, urlLink, ltarget, null, - descr, ids, seqstr); + try + { + createAndAddLinks(wflinkMenus, false, urlLink, ltarget, null, + descr, ids, seqstr); } catch (UrlStringTooLongException ex) { nsqtype[urlLink.getGroupURLType()] = numinput; @@ -550,14 +586,17 @@ public class EnfinEnvision2OneWay extends DefaultHandler implements // also do names only. seqstr = idandseqs[1]; ids = idandseqs[0]; - if (nsqtype[urlLink.getGroupURLType()]>0 && idandseqs[0].length>=nsqtype[urlLink.getGroupURLType()]) + if (nsqtype[urlLink.getGroupURLType()] > 0 + && idandseqs[0].length >= nsqtype[urlLink.getGroupURLType()]) { continue; } - - try {createAndAddLinks(wflinkMenus, true, urlLink, "Any", null, descr, - ids, seqstr); - }catch (UrlStringTooLongException ex) + + try + { + createAndAddLinks(wflinkMenus, true, urlLink, "Any", null, descr, + ids, seqstr); + } catch (UrlStringTooLongException ex) { nsqtype[urlLink.getGroupURLType()] = idandseqs[0].length; } @@ -590,7 +629,7 @@ public class EnfinEnvision2OneWay extends DefaultHandler implements GroupUrlLink urlLink, String label, String ltarget, String descr, String[] ids, String[] seqstr) throws UrlStringTooLongException { - Object[] urlset= urlLink.makeUrlStubs(ids, seqstr, "FromJalview" + Object[] urlset = urlLink.makeUrlStubs(ids, seqstr, "FromJalview" + System.currentTimeMillis(), false); if (urlset != null) @@ -615,6 +654,7 @@ public class EnfinEnvision2OneWay extends DefaultHandler implements } return false; } + // / end of stuff copied from popupmenu public void attachWSMenuEntry(final JMenu wsmenu, final AlignFrame alignFrame) @@ -643,19 +683,22 @@ public class EnfinEnvision2OneWay extends DefaultHandler implements { if (refresh && !isRunning()) { - new Thread(new Runnable() { - public void run() { - try + new Thread(new Runnable() { - buildGroupLinkMenu(enfinServiceMenu, alignFrame); - } catch (OutOfMemoryError ex) - { - Cache.log.error( - "Out of memory when calculating the Envision2 links.", - ex); - enfinServiceMenu.setEnabled(false); - } - }}).start(); + public void run() + { + try + { + buildGroupLinkMenu(enfinServiceMenu, alignFrame); + } catch (OutOfMemoryError ex) + { + Cache.log + .error("Out of memory when calculating the Envision2 links.", + ex); + enfinServiceMenu.setEnabled(false); + } + } + }).start(); refresh = false; } }