--- /dev/null
+/**
+ * MuscleWSServiceLocator.java
+ *
+ * This file was auto-generated from WSDL
+ * by the Apache Axis 1.2RC2 Nov 16, 2004 (12:19:44 EST) WSDL2Java emitter.
+ */
+
+package ext.vamsas;
+
+public class MuscleWSServiceLocator extends org.apache.axis.client.Service implements ext.vamsas.MuscleWSService {
+
+ public MuscleWSServiceLocator() {
+ }
+
+
+ public MuscleWSServiceLocator(org.apache.axis.EngineConfiguration config) {
+ super(config);
+ }
+
+ // Use to get a proxy class for MuscleWS
+ private java.lang.String MuscleWS_address = "http://anaplog.compbio.dundee.ac.uk:8080/axis/services/MuscleWS";
+
+ public java.lang.String getMuscleWSAddress() {
+ return MuscleWS_address;
+ }
+
+ // The WSDD service name defaults to the port name.
+ private java.lang.String MuscleWSWSDDServiceName = "MuscleWS";
+
+ public java.lang.String getMuscleWSWSDDServiceName() {
+ return MuscleWSWSDDServiceName;
+ }
+
+ public void setMuscleWSWSDDServiceName(java.lang.String name) {
+ MuscleWSWSDDServiceName = name;
+ }
+
+ public ext.vamsas.MuscleWS getMuscleWS() throws javax.xml.rpc.ServiceException {
+ java.net.URL endpoint;
+ try {
+ endpoint = new java.net.URL(MuscleWS_address);
+ }
+ catch (java.net.MalformedURLException e) {
+ throw new javax.xml.rpc.ServiceException(e);
+ }
+ return getMuscleWS(endpoint);
+ }
+
+ public ext.vamsas.MuscleWS getMuscleWS(java.net.URL portAddress) throws javax.xml.rpc.ServiceException {
+ try {
+ ext.vamsas.MuscleWSSoapBindingStub _stub = new ext.vamsas.MuscleWSSoapBindingStub(portAddress, this);
+ _stub.setPortName(getMuscleWSWSDDServiceName());
+ return _stub;
+ }
+ catch (org.apache.axis.AxisFault e) {
+ return null;
+ }
+ }
+
+ public void setMuscleWSEndpointAddress(java.lang.String address) {
+ MuscleWS_address = address;
+ }
+
+ /**
+ * For the given interface, get the stub implementation.
+ * If this service has no port for the given interface,
+ * then ServiceException is thrown.
+ */
+ public java.rmi.Remote getPort(Class serviceEndpointInterface) throws javax.xml.rpc.ServiceException {
+ try {
+ if (ext.vamsas.MuscleWS.class.isAssignableFrom(serviceEndpointInterface)) {
+ ext.vamsas.MuscleWSSoapBindingStub _stub = new ext.vamsas.MuscleWSSoapBindingStub(new java.net.URL(MuscleWS_address), this);
+ _stub.setPortName(getMuscleWSWSDDServiceName());
+ return _stub;
+ }
+ }
+ catch (java.lang.Throwable t) {
+ throw new javax.xml.rpc.ServiceException(t);
+ }
+ throw new javax.xml.rpc.ServiceException("There is no stub implementation for the interface: " + (serviceEndpointInterface == null ? "null" : serviceEndpointInterface.getName()));
+ }
+
+ /**
+ * For the given interface, get the stub implementation.
+ * If this service has no port for the given interface,
+ * then ServiceException is thrown.
+ */
+ public java.rmi.Remote getPort(javax.xml.namespace.QName portName, Class serviceEndpointInterface) throws javax.xml.rpc.ServiceException {
+ if (portName == null) {
+ return getPort(serviceEndpointInterface);
+ }
+ java.lang.String inputPortName = portName.getLocalPart();
+ if ("MuscleWS".equals(inputPortName)) {
+ return getMuscleWS();
+ }
+ else {
+ java.rmi.Remote _stub = getPort(serviceEndpointInterface);
+ ((org.apache.axis.client.Stub) _stub).setPortName(portName);
+ return _stub;
+ }
+ }
+
+ public javax.xml.namespace.QName getServiceName() {
+ return new javax.xml.namespace.QName("vamsas", "MuscleWSService");
+ }
+
+ private java.util.HashSet ports = null;
+
+ public java.util.Iterator getPorts() {
+ if (ports == null) {
+ ports = new java.util.HashSet();
+ ports.add(new javax.xml.namespace.QName("vamsas", "MuscleWS"));
+ }
+ return ports.iterator();
+ }
+
+ /**
+ * Set the endpoint address for the specified port name.
+ */
+ public void setEndpointAddress(java.lang.String portName, java.lang.String address) throws javax.xml.rpc.ServiceException {
+ if ("MuscleWS".equals(portName)) {
+ setMuscleWSEndpointAddress(address);
+ }
+ else { // Unknown Port Name
+ throw new javax.xml.rpc.ServiceException(" Cannot set Endpoint Address for Unknown Port" + portName);
+ }
+ }
+
+ /**
+ * Set the endpoint address for the specified port name.
+ */
+ public void setEndpointAddress(javax.xml.namespace.QName portName, java.lang.String address) throws javax.xml.rpc.ServiceException {
+ setEndpointAddress(portName.getLocalPart(), address);
+ }
+
+}
--- /dev/null
+/**
+ * MuscleWSSoapBindingStub.java
+ *
+ * This file was auto-generated from WSDL
+ * by the Apache Axis 1.2RC2 Nov 16, 2004 (12:19:44 EST) WSDL2Java emitter.
+ */
+
+package ext.vamsas;
+
+public class MuscleWSSoapBindingStub extends org.apache.axis.client.Stub implements ext.vamsas.MuscleWS {
+ private java.util.Vector cachedSerClasses = new java.util.Vector();
+ private java.util.Vector cachedSerQNames = new java.util.Vector();
+ private java.util.Vector cachedSerFactories = new java.util.Vector();
+ private java.util.Vector cachedDeserFactories = new java.util.Vector();
+
+ static org.apache.axis.description.OperationDesc [] _operations;
+
+ static {
+ _operations = new org.apache.axis.description.OperationDesc[4];
+ _initOperationDesc1();
+ }
+
+ private static void _initOperationDesc1(){
+ org.apache.axis.description.OperationDesc oper;
+ oper = new org.apache.axis.description.OperationDesc();
+ oper.setName("align");
+ oper.addParameter(new javax.xml.namespace.QName("", "seqSet"), new javax.xml.namespace.QName("simple.objects.vamsas", "SequenceSet"), vamsas.objects.simple.SequenceSet.class, org.apache.axis.description.ParameterDesc.IN, false, false);
+ oper.setReturnType(new javax.xml.namespace.QName("simple.objects.vamsas", "WsJobId"));
+ oper.setReturnClass(vamsas.objects.simple.WsJobId.class);
+ oper.setReturnQName(new javax.xml.namespace.QName("", "alignReturn"));
+ oper.setStyle(org.apache.axis.constants.Style.RPC);
+ oper.setUse(org.apache.axis.constants.Use.ENCODED);
+ _operations[0] = oper;
+
+ oper = new org.apache.axis.description.OperationDesc();
+ oper.setName("getalign");
+ oper.addParameter(new javax.xml.namespace.QName("", "job_id"), new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"), java.lang.String.class, org.apache.axis.description.ParameterDesc.IN, false, false);
+ oper.setReturnType(new javax.xml.namespace.QName("simple.objects.vamsas", "Alignment"));
+ oper.setReturnClass(vamsas.objects.simple.Alignment.class);
+ oper.setReturnQName(new javax.xml.namespace.QName("", "getalignReturn"));
+ oper.setStyle(org.apache.axis.constants.Style.RPC);
+ oper.setUse(org.apache.axis.constants.Use.ENCODED);
+ _operations[1] = oper;
+
+ oper = new org.apache.axis.description.OperationDesc();
+ oper.setName("getResult");
+ oper.addParameter(new javax.xml.namespace.QName("", "job_id"), new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"), java.lang.String.class, org.apache.axis.description.ParameterDesc.IN, false, false);
+ oper.setReturnType(new javax.xml.namespace.QName("simple.objects.vamsas", "MsaResult"));
+ oper.setReturnClass(vamsas.objects.simple.MsaResult.class);
+ oper.setReturnQName(new javax.xml.namespace.QName("", "getResultReturn"));
+ oper.setStyle(org.apache.axis.constants.Style.RPC);
+ oper.setUse(org.apache.axis.constants.Use.ENCODED);
+ _operations[2] = oper;
+
+ oper = new org.apache.axis.description.OperationDesc();
+ oper.setName("cancel");
+ oper.addParameter(new javax.xml.namespace.QName("", "jobId"), new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"), java.lang.String.class, org.apache.axis.description.ParameterDesc.IN, false, false);
+ oper.setReturnType(new javax.xml.namespace.QName("simple.objects.vamsas", "WsJobId"));
+ oper.setReturnClass(vamsas.objects.simple.WsJobId.class);
+ oper.setReturnQName(new javax.xml.namespace.QName("", "cancelReturn"));
+ oper.setStyle(org.apache.axis.constants.Style.RPC);
+ oper.setUse(org.apache.axis.constants.Use.ENCODED);
+ _operations[3] = oper;
+
+ }
+
+ public MuscleWSSoapBindingStub() throws org.apache.axis.AxisFault {
+ this(null);
+ }
+
+ public MuscleWSSoapBindingStub(java.net.URL endpointURL, javax.xml.rpc.Service service) throws org.apache.axis.AxisFault {
+ this(service);
+ super.cachedEndpoint = endpointURL;
+ }
+
+ public MuscleWSSoapBindingStub(javax.xml.rpc.Service service) throws org.apache.axis.AxisFault {
+ if (service == null) {
+ super.service = new org.apache.axis.client.Service();
+ } else {
+ super.service = service;
+ }
+ java.lang.Class cls;
+ javax.xml.namespace.QName qName;
+ java.lang.Class beansf = org.apache.axis.encoding.ser.BeanSerializerFactory.class;
+ java.lang.Class beandf = org.apache.axis.encoding.ser.BeanDeserializerFactory.class;
+ java.lang.Class enumsf = org.apache.axis.encoding.ser.EnumSerializerFactory.class;
+ java.lang.Class enumdf = org.apache.axis.encoding.ser.EnumDeserializerFactory.class;
+ java.lang.Class arraysf = org.apache.axis.encoding.ser.ArraySerializerFactory.class;
+ java.lang.Class arraydf = org.apache.axis.encoding.ser.ArrayDeserializerFactory.class;
+ java.lang.Class simplesf = org.apache.axis.encoding.ser.SimpleSerializerFactory.class;
+ java.lang.Class simpledf = org.apache.axis.encoding.ser.SimpleDeserializerFactory.class;
+ java.lang.Class simplelistsf = org.apache.axis.encoding.ser.SimpleListSerializerFactory.class;
+ java.lang.Class simplelistdf = org.apache.axis.encoding.ser.SimpleListDeserializerFactory.class;
+ qName = new javax.xml.namespace.QName("simple.objects.vamsas", "Sequence");
+ cachedSerQNames.add(qName);
+ cls = vamsas.objects.simple.Sequence.class;
+ cachedSerClasses.add(cls);
+ cachedSerFactories.add(beansf);
+ cachedDeserFactories.add(beandf);
+
+ qName = new javax.xml.namespace.QName("vamsas", "ArrayOf_tns1_Sequence");
+ cachedSerQNames.add(qName);
+ cls = vamsas.objects.simple.Sequence[].class;
+ cachedSerClasses.add(cls);
+ cachedSerFactories.add(arraysf);
+ cachedDeserFactories.add(arraydf);
+
+ qName = new javax.xml.namespace.QName("simple.objects.vamsas", "MsaResult");
+ cachedSerQNames.add(qName);
+ cls = vamsas.objects.simple.MsaResult.class;
+ cachedSerClasses.add(cls);
+ cachedSerFactories.add(beansf);
+ cachedDeserFactories.add(beandf);
+
+ qName = new javax.xml.namespace.QName("simple.objects.vamsas", "SequenceSet");
+ cachedSerQNames.add(qName);
+ cls = vamsas.objects.simple.SequenceSet.class;
+ cachedSerClasses.add(cls);
+ cachedSerFactories.add(beansf);
+ cachedDeserFactories.add(beandf);
+
+ qName = new javax.xml.namespace.QName("http://simple.objects.vamsas", "Object");
+ cachedSerQNames.add(qName);
+ cls = vamsas.objects.simple.Object.class;
+ cachedSerClasses.add(cls);
+ cachedSerFactories.add(beansf);
+ cachedDeserFactories.add(beandf);
+
+ qName = new javax.xml.namespace.QName("simple.objects.vamsas", "Alignment");
+ cachedSerQNames.add(qName);
+ cls = vamsas.objects.simple.Alignment.class;
+ cachedSerClasses.add(cls);
+ cachedSerFactories.add(beansf);
+ cachedDeserFactories.add(beandf);
+
+ qName = new javax.xml.namespace.QName("simple.objects.vamsas", "WsJobId");
+ cachedSerQNames.add(qName);
+ cls = vamsas.objects.simple.WsJobId.class;
+ cachedSerClasses.add(cls);
+ cachedSerFactories.add(beansf);
+ cachedDeserFactories.add(beandf);
+
+ qName = new javax.xml.namespace.QName("vamsas", "ArrayOf_xsd_string");
+ cachedSerQNames.add(qName);
+ cls = java.lang.String[].class;
+ cachedSerClasses.add(cls);
+ cachedSerFactories.add(arraysf);
+ cachedDeserFactories.add(arraydf);
+
+ qName = new javax.xml.namespace.QName("simple.objects.vamsas", "Result");
+ cachedSerQNames.add(qName);
+ cls = vamsas.objects.simple.Result.class;
+ cachedSerClasses.add(cls);
+ cachedSerFactories.add(beansf);
+ cachedDeserFactories.add(beandf);
+
+ }
+
+ protected org.apache.axis.client.Call createCall() throws java.rmi.RemoteException {
+ try {
+ org.apache.axis.client.Call _call =
+ (org.apache.axis.client.Call) super.service.createCall();
+ if (super.maintainSessionSet) {
+ _call.setMaintainSession(super.maintainSession);
+ }
+ if (super.cachedUsername != null) {
+ _call.setUsername(super.cachedUsername);
+ }
+ if (super.cachedPassword != null) {
+ _call.setPassword(super.cachedPassword);
+ }
+ if (super.cachedEndpoint != null) {
+ _call.setTargetEndpointAddress(super.cachedEndpoint);
+ }
+ if (super.cachedTimeout != null) {
+ _call.setTimeout(super.cachedTimeout);
+ }
+ if (super.cachedPortName != null) {
+ _call.setPortName(super.cachedPortName);
+ }
+ java.util.Enumeration keys = super.cachedProperties.keys();
+ while (keys.hasMoreElements()) {
+ java.lang.String key = (java.lang.String) keys.nextElement();
+ _call.setProperty(key, super.cachedProperties.get(key));
+ }
+ // All the type mapping information is registered
+ // when the first call is made.
+ // The type mapping information is actually registered in
+ // the TypeMappingRegistry of the service, which
+ // is the reason why registration is only needed for the first call.
+ synchronized (this) {
+ if (firstCall()) {
+ // must set encoding style before registering serializers
+ _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
+ _call.setEncodingStyle(org.apache.axis.Constants.URI_SOAP11_ENC);
+ for (int i = 0; i < cachedSerFactories.size(); ++i) {
+ java.lang.Class cls = (java.lang.Class) cachedSerClasses.get(i);
+ javax.xml.namespace.QName qName =
+ (javax.xml.namespace.QName) cachedSerQNames.get(i);
+ java.lang.Class sf = (java.lang.Class)
+ cachedSerFactories.get(i);
+ java.lang.Class df = (java.lang.Class)
+ cachedDeserFactories.get(i);
+ _call.registerTypeMapping(cls, qName, sf, df, false);
+ }
+ }
+ }
+ return _call;
+ }
+ catch (java.lang.Throwable _t) {
+ throw new org.apache.axis.AxisFault("Failure trying to get the Call object", _t);
+ }
+ }
+
+ public vamsas.objects.simple.WsJobId align(vamsas.objects.simple.SequenceSet seqSet) throws java.rmi.RemoteException {
+ if (super.cachedEndpoint == null) {
+ throw new org.apache.axis.NoEndPointException();
+ }
+ org.apache.axis.client.Call _call = createCall();
+ _call.setOperation(_operations[0]);
+ _call.setUseSOAPAction(true);
+ _call.setSOAPActionURI("");
+ _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
+ _call.setOperationName(new javax.xml.namespace.QName("vamsas", "align"));
+
+ setRequestHeaders(_call);
+ setAttachments(_call);
+ java.lang.Object _resp = _call.invoke(new java.lang.Object[] {seqSet});
+
+ if (_resp instanceof java.rmi.RemoteException) {
+ throw (java.rmi.RemoteException)_resp;
+ }
+ else {
+ extractAttachments(_call);
+ try {
+ return (vamsas.objects.simple.WsJobId) _resp;
+ } catch (java.lang.Exception _exception) {
+ return (vamsas.objects.simple.WsJobId) org.apache.axis.utils.JavaUtils.convert(_resp, vamsas.objects.simple.WsJobId.class);
+ }
+ }
+ }
+
+ public vamsas.objects.simple.Alignment getalign(java.lang.String job_id) throws java.rmi.RemoteException {
+ if (super.cachedEndpoint == null) {
+ throw new org.apache.axis.NoEndPointException();
+ }
+ org.apache.axis.client.Call _call = createCall();
+ _call.setOperation(_operations[1]);
+ _call.setUseSOAPAction(true);
+ _call.setSOAPActionURI("");
+ _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
+ _call.setOperationName(new javax.xml.namespace.QName("vamsas", "getalign"));
+
+ setRequestHeaders(_call);
+ setAttachments(_call);
+ java.lang.Object _resp = _call.invoke(new java.lang.Object[] {job_id});
+
+ if (_resp instanceof java.rmi.RemoteException) {
+ throw (java.rmi.RemoteException)_resp;
+ }
+ else {
+ extractAttachments(_call);
+ try {
+ return (vamsas.objects.simple.Alignment) _resp;
+ } catch (java.lang.Exception _exception) {
+ return (vamsas.objects.simple.Alignment) org.apache.axis.utils.JavaUtils.convert(_resp, vamsas.objects.simple.Alignment.class);
+ }
+ }
+ }
+
+ public vamsas.objects.simple.MsaResult getResult(java.lang.String job_id) throws java.rmi.RemoteException {
+ if (super.cachedEndpoint == null) {
+ throw new org.apache.axis.NoEndPointException();
+ }
+ org.apache.axis.client.Call _call = createCall();
+ _call.setOperation(_operations[2]);
+ _call.setUseSOAPAction(true);
+ _call.setSOAPActionURI("");
+ _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
+ _call.setOperationName(new javax.xml.namespace.QName("vamsas", "getResult"));
+
+ setRequestHeaders(_call);
+ setAttachments(_call);
+ java.lang.Object _resp = _call.invoke(new java.lang.Object[] {job_id});
+
+ if (_resp instanceof java.rmi.RemoteException) {
+ throw (java.rmi.RemoteException)_resp;
+ }
+ else {
+ extractAttachments(_call);
+ try {
+ return (vamsas.objects.simple.MsaResult) _resp;
+ } catch (java.lang.Exception _exception) {
+ return (vamsas.objects.simple.MsaResult) org.apache.axis.utils.JavaUtils.convert(_resp, vamsas.objects.simple.MsaResult.class);
+ }
+ }
+ }
+
+ public vamsas.objects.simple.WsJobId cancel(java.lang.String jobId) throws java.rmi.RemoteException {
+ if (super.cachedEndpoint == null) {
+ throw new org.apache.axis.NoEndPointException();
+ }
+ org.apache.axis.client.Call _call = createCall();
+ _call.setOperation(_operations[3]);
+ _call.setUseSOAPAction(true);
+ _call.setSOAPActionURI("");
+ _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
+ _call.setOperationName(new javax.xml.namespace.QName("vamsas", "cancel"));
+
+ setRequestHeaders(_call);
+ setAttachments(_call);
+ java.lang.Object _resp = _call.invoke(new java.lang.Object[] {jobId});
+
+ if (_resp instanceof java.rmi.RemoteException) {
+ throw (java.rmi.RemoteException)_resp;
+ }
+ else {
+ extractAttachments(_call);
+ try {
+ return (vamsas.objects.simple.WsJobId) _resp;
+ } catch (java.lang.Exception _exception) {
+ return (vamsas.objects.simple.WsJobId) org.apache.axis.utils.JavaUtils.convert(_resp, vamsas.objects.simple.WsJobId.class);
+ }
+ }
+ }
+
+}
--- /dev/null
+package jalview.ws;\r
+\r
+import org.apache.axis.client.*;\r
+import javax.xml.namespace.QName;\r
+import java.util.*;\r
+import jalview.datamodel.*;\r
+import jalview.gui.*;\r
+import javax.swing.*;\r
+import java.util.*;\r
+import java.awt.*;\r
+import jalview.analysis.AlignSeq;\r
+import ext.vamsas.*;\r
+import vamsas.objects.*;\r
+\r
+public class MsaWSClient\r
+{\r
+ int jobsRunning = 0;\r
+ ext.vamsas.MuscleWS server;\r
+ WebserviceInfo wsInfo;\r
+ /**\r
+ * MsaWSClient\r
+ *\r
+ * @param msa SequenceI[]\r
+ */\r
+ public MsaWSClient(SequenceI[] msa)\r
+ {\r
+ wsInfo = new jalview.gui.WebserviceInfo("Muscle Alignment job",\r
+ "Edgar, Robert C. (2004), MUSCLE: multiple sequence alignment with high accuracy and high throughput, Nucleic Acids Research 32(5), 1792-97.");\r
+\r
+\r
+ wsInfo.setProgressText("Job details\n");\r
+\r
+\r
+ MuscleWSServiceLocator loc = new MuscleWSServiceLocator(); // Default\r
+ try {\r
+ this.server = (MuscleWS) loc.getMuscleWS(); // JBPNote will be set from properties\r
+ }\r
+ catch (Exception ex) {\r
+ wsInfo.setProgressText("Serious! MuscleWS Service location failed\nfor URL :"\r
+ +loc.getMuscleWSAddress()+"\n"+ex.getMessage());\r
+ ex.printStackTrace();\r
+ }\r
+\r
+ MsaWSThread musclethread = new MsaWSThread(msa);\r
+ wsInfo.setthisService(musclethread);\r
+ musclethread.start();\r
+ }\r
+\r
+\r
+ protected class MsaWSThread extends Thread implements WSClientI\r
+ {\r
+ String ServiceName = "MuscleWS";\r
+ public boolean isCancellable()\r
+ {\r
+ return true;\r
+ }\r
+\r
+ String OutputHeader;\r
+ vamsas.objects.simple.MsaResult result = null;\r
+ vamsas.objects.simple.SequenceSet seqs = new vamsas.objects.simple.\r
+ SequenceSet();\r
+ String jobId;\r
+ int allowedServerExceptions = 3; // thread dies if too many exceptions.\r
+ MsaWSThread(SequenceI[] msa)\r
+ {\r
+ OutputHeader = wsInfo.getProgressText();\r
+ vamsas.objects.simple.Sequence[] seqarray = new vamsas.objects.simple.\r
+ Sequence[msa.length];\r
+ for (int i = 0; i < msa.length; i++)\r
+ {\r
+ seqarray[i] = new vamsas.objects.simple.Sequence();\r
+ seqarray[i].setId(msa[i].getName());\r
+ seqarray[i].setSeq(AlignSeq.extractGaps("-. ", msa[i].getSequence()));\r
+ }\r
+ this.seqs = new vamsas.objects.simple.SequenceSet();\r
+ this.seqs.setSeqs(seqarray);\r
+ }\r
+\r
+ boolean jobComplete = false;\r
+\r
+ public void cancelJob() {\r
+ if (!jobComplete) {\r
+ String cancelledMessage="";\r
+ try {\r
+ vamsas.objects.simple.WsJobId cancelledJob = server.cancel(jobId);\r
+ if (cancelledJob.getStatus() == 2)\r
+ {\r
+ // CANCELLED_JOB\r
+ cancelledMessage = "Job cancelled.";\r
+ jobComplete = true;\r
+ jobsRunning--;\r
+ result = null;\r
+ }\r
+ else\r
+ if (cancelledJob.getStatus() == 3)\r
+ {\r
+ // VALID UNSTOPPABLE JOB\r
+ cancelledMessage +=\r
+ "Server cannot cancel this job. just close the window.\n";\r
+ }\r
+ if (cancelledJob.getJobId() != null)\r
+ cancelledMessage += "[" + cancelledJob.getJobId() + "]";\r
+ cancelledMessage +="\n";\r
+ } catch (Exception exc) {\r
+ cancelledMessage +="\nProblems cancelling the job : Exception received...\n"+exc+"\n";\r
+ exc.printStackTrace();\r
+ }\r
+ wsInfo.setProgressText(OutputHeader + cancelledMessage+"\n");\r
+ }\r
+ }\r
+\r
+ public void run()\r
+ {\r
+\r
+ StartJob();\r
+\r
+ while (!jobComplete && (allowedServerExceptions > 0))\r
+ {\r
+ try\r
+ {\r
+ result = server.getResult(jobId);\r
+\r
+ if( result.isRunning() )\r
+ wsInfo.setStatus(WebserviceInfo.STATE_RUNNING);\r
+ else if( result.isQueued() )\r
+ wsInfo.setStatus(WebserviceInfo.STATE_QUEUING);\r
+\r
+ if (result.isFinished())\r
+ {\r
+ parseResult();\r
+ jobComplete = true;\r
+ jobsRunning--;\r
+ }\r
+ else\r
+ {\r
+ wsInfo.setProgressText(OutputHeader + "\n" + result.getStatus());\r
+ if (! (result.isJobFailed() || result.isServerError()))\r
+ {\r
+ Thread.sleep(5000);\r
+ // System.out.println("I'm alive "+seqid+" "+jobid);\r
+ }\r
+ }\r
+ }\r
+ catch (Exception ex)\r
+ {\r
+ allowedServerExceptions--;\r
+ wsInfo.appendProgressText("\n"+ServiceName+" Server exception!\n" + ex.getMessage());\r
+ ex.printStackTrace();\r
+ }\r
+ }\r
+\r
+ if (! (result!=null && (result.isJobFailed() || result.isServerError())))\r
+ wsInfo.setStatus(WebserviceInfo.STATE_STOPPED_OK);\r
+ else\r
+ wsInfo.setStatus(WebserviceInfo.STATE_STOPPED_ERROR);\r
+ }\r
+\r
+ void StartJob()\r
+ {\r
+ try\r
+ {\r
+ vamsas.objects.simple.WsJobId jobsubmit = server.align(seqs);\r
+ if (jobsubmit.getStatus()==1) {\r
+ System.out.println(jobId=jobsubmit.getJobId());\r
+ } else {\r
+ throw new Exception(jobsubmit.getJobId());\r
+ }\r
+ }\r
+ catch (Exception e)\r
+ {\r
+ System.out.println(ServiceName + " Client: Failed to submit the prediction\n" +\r
+ e.toString() + "\n");\r
+ e.printStackTrace();\r
+ }\r
+ }\r
+\r
+ private void addFloatAnnotations(Alignment al, int[] gapmap, Vector values, String Symname, String Visname, float min, float max, int winLength) {\r
+\r
+ Annotation[] annotations = new Annotation[al.getWidth()];\r
+ for (int j = 0; j < values.size(); j++)\r
+ {\r
+ float value = Float.parseFloat(values.get(j).toString());\r
+ annotations[gapmap[j]] = new Annotation("", value+"",' ',value);\r
+ }\r
+ al.addAnnotation(new AlignmentAnnotation(Symname, Visname, annotations, min, max, winLength));\r
+ }\r
+ private jalview.datamodel.Sequence[] getVamsasAlignment(vamsas.objects.simple.Alignment valign) {\r
+ vamsas.objects.simple.Sequence[] seqs = valign.getSeqs().getSeqs();\r
+ jalview.datamodel.Sequence[] msa = new jalview.datamodel.Sequence[seqs.length];\r
+ for (int i=0, j=seqs.length; i<j;i++)\r
+ msa[i] = new jalview.datamodel.Sequence(seqs[i].getId(), seqs[i].getSeq());\r
+ return msa;\r
+ }\r
+ void parseResult()\r
+ {\r
+ SequenceI[] seqs=null;\r
+ try {\r
+ // OutputHeader = output.getText();\r
+ if (result.isFailed()) {\r
+ OutputHeader +="Job failed.\n";\r
+ }\r
+ if (result.getStatus()!=null) {\r
+ OutputHeader += "\n"+result.getStatus();\r
+ }\r
+ if (result.getMsa()!=null) {\r
+ OutputHeader += "\nAlignment Object Method Notes\n";\r
+ String lines[] = result.getMsa().getMethod();\r
+ for (int line=0;line<lines.length; line++)\r
+ OutputHeader+=lines[line]+"\n";\r
+\r
+ // JBPNote The returned files from a webservice could be hidden behind icons in the monitor window that, when clicked, pop up their corresponding data\r
+ seqs = getVamsasAlignment(result.getMsa());\r
+ }\r
+\r
+ wsInfo.setProgressText(OutputHeader);\r
+ if (seqs!=null) {\r
+ Alignment al;\r
+ al = new Alignment(seqs);\r
+\r
+ // TODO: JBPNote Should also rename the query sequence sometime...\r
+ AlignFrame af = new AlignFrame(al);\r
+ Desktop.addInternalFrame(af,\r
+ ServiceName + " Alignment",\r
+ AlignFrame.NEW_WINDOW_WIDTH,\r
+ AlignFrame.NEW_WINDOW_HEIGHT);\r
+ }\r
+ }catch(Exception ex){ex.printStackTrace();}\r
+\r
+ }\r
+\r
+ }\r
+ }\r
+\r