X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2FEnfinEnvision2OneWay.java;h=503245b723fa526185f1dce148394165b324b619;hb=8c8433dbbca18eb7955537a8756fba92d044dd41;hp=abde7e5eeaa64cca4d5e83a66df10b05205373fc;hpb=c16c1633e1a5acc9f44e4de40b9abbb8a59b99b4;p=jalview.git
diff --git a/src/jalview/ws/EnfinEnvision2OneWay.java b/src/jalview/ws/EnfinEnvision2OneWay.java
index abde7e5..503245b 100644
--- a/src/jalview/ws/EnfinEnvision2OneWay.java
+++ b/src/jalview/ws/EnfinEnvision2OneWay.java
@@ -1,5 +1,19 @@
-/**
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
+ * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
*
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with Jalview. If not, see .
*/
package jalview.ws;
@@ -9,7 +23,9 @@ import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
import jalview.gui.AlignFrame;
import jalview.gui.Desktop;
+import jalview.gui.JvSwingUtils;
import jalview.util.GroupUrlLink;
+import jalview.util.GroupUrlLink.UrlStringTooLongException;
import java.awt.Component;
import java.awt.Cursor;
@@ -17,11 +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;
@@ -31,95 +57,153 @@ 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
+ *
* @author JimP
- *
+ *
*/
-public class EnfinEnvision2OneWay extends DefaultHandler implements Runnable,WSMenuEntryProviderI
+public class EnfinEnvision2OneWay extends DefaultHandler implements
+ Runnable, WSMenuEntryProviderI
{
- private static EnfinEnvision2OneWay groupURLLinksGatherer=null;
- public static EnfinEnvision2OneWay getInstance() {
- if (groupURLLinksGatherer==null) {
+ private static EnfinEnvision2OneWay groupURLLinksGatherer = null;
+
+ public static EnfinEnvision2OneWay getInstance()
+ {
+ if (groupURLLinksGatherer == null)
+ {
groupURLLinksGatherer = new EnfinEnvision2OneWay();
}
return groupURLLinksGatherer;
}
- private void waitForCompletion() {
+
+ private void waitForCompletion()
+ {
if (groupURLLinksGatherer.isRunning())
{
- // wait around and show a visual delay indicator
- Cursor oldCursor = Desktop.instance.getCursor();
- Desktop.instance.setCursor(new Cursor(Cursor.WAIT_CURSOR));
- while (groupURLLinksGatherer.isRunning())
- {
- try {
- Thread.sleep(100);
- } catch (InterruptedException e ){};
+ // wait around and show a visual delay indicator
+ Cursor oldCursor = Desktop.instance.getCursor();
+ Desktop.instance.setCursor(new Cursor(Cursor.WAIT_CURSOR));
+ while (groupURLLinksGatherer.isRunning())
+ {
+ try
+ {
+ Thread.sleep(100);
+ } catch (InterruptedException e)
+ {
+ }
+ ;
+ }
+ Desktop.instance.setCursor(oldCursor);
}
- Desktop.instance.setCursor(oldCursor);
- }
}
- public Vector getEnvisionServiceGroupURLS() {
+
+ public Vector getEnvisionServiceGroupURLS()
+ {
waitForCompletion();
return groupURLLinks;
}
+
/**
- * indicate if
+ * indicate if
*/
- private static String BACKGROUND="BACKGROUNDPARAM";
+ private static String BACKGROUND = "BACKGROUNDPARAM";
+
/**
- * contains null strings or one of the above constants - indicate if this URL is a special case.
+ * contains null strings or one of the above constants - indicate if this URL
+ * is a special case.
*/
private Vector additionalPar = new Vector();
+
/**
* the enfin service URL
*/
- private String enfinService=null;
- private String description=null;
+ private String enfinService = null;
+
+ private String description = null;
+
private String wfname;
- /* (non-Javadoc)
- * @see org.xml.sax.helpers.DefaultHandler#endElement(java.lang.String, java.lang.String, java.lang.String)
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.xml.sax.helpers.DefaultHandler#endElement(java.lang.String,
+ * java.lang.String, java.lang.String)
*/
public void endElement(String uri, String localName, String qName)
throws SAXException
{
-
-// System.err.println("End element: : '"+uri+" "+localName+" "+qName);
- if (qName.equalsIgnoreCase("workflow") && description!=null && description.length()>0)
+
+ // System.err.println("End element: : '"+uri+" "+localName+" "+qName);
+ if (qName.equalsIgnoreCase("workflow") && description != null
+ && description.length() > 0)
{
- //groupURLLinks.addElement("UNIPROT|EnVision2|http://www.ebi.ac.uk/enfin-srv/envision2/pages/linkin.jsf?tool=Jalview&workflow=Default&datasetName=JalviewIDs$DATASETID$&input=$SEQUENCEIDS$&inputType=0|,");
- //groupURLLinks.addElement("Seqs|EnVision2|http://www.ebi.ac.uk/enfin-srv/envision2/pages/linkin.jsf?tool=Jalview&workflow=Default&datasetName=JalviewSeqs$DATASETID$&input=$SEQUENCES=/([A-Za-z]+)+/=$&inputType=1|,");
- System.err.println("Adding entry for "+wfname+" "+description);
- if (wfname.toLowerCase().indexOf("funcnet")==-1)
+ // groupURLLinks.addElement("UNIPROT|EnVision2|http://www.ebi.ac.uk/enfin-srv/envision2/pages/linkin.jsf?tool=Jalview&workflow=Default&datasetName=JalviewIDs$DATASETID$&input=$SEQUENCEIDS$&inputType=0|,");
+ // groupURLLinks.addElement("Seqs|EnVision2|http://www.ebi.ac.uk/enfin-srv/envision2/pages/linkin.jsf?tool=Jalview&workflow=Default&datasetName=JalviewSeqs$DATASETID$&input=$SEQUENCES=/([A-Za-z]+)+/=$&inputType=1|,");
+ 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);
- groupURLLinks.addElement(wfname+"|"+"http://www.ebi.ac.uk/enfin-srv/envision2/pages/linkin.jsf?tool=Jalview&workflow="+wfname+"&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+"&datasetName=JalviewSeqs$DATASETID$&input=$SEQUENCES=/([A-Za-z]+)+/=$&inputType=1|,"); // #"+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="
+ + 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="
+ + urlstub
+ + "&datasetName=JalviewSeqs$DATASETID$&input=$SEQUENCES=/([A-Za-z]+)+/=$&inputType=1|,"); // #"+description+"#");
}
}
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.xml.sax.helpers.DefaultHandler#characters(char[], int, int)
*/
public void characters(char[] ch, int start, int length)
throws SAXException
{
- if (description!=null) {
- for (int i=start; i"
+ + JvSwingUtils.wrapTooltip("Submit " + i + " " + dbname + " "
+ + (seqsorids ? "sequence" : "sequence id")
+ + (i > 1 ? "s" : "")
+
+ + " to
" + descr) + "