Merge branch 'jpred-fix' into bug/JAL-3807_jpred-with-slivka
[jalview.git] / src / jalview / ws / slivkaws / SlivkaMsaServiceInstance.java
index db1577e..8d6332c 100644 (file)
@@ -2,89 +2,46 @@ package jalview.ws.slivkaws;
 
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.SequenceI;
-import jalview.io.DataSourceType;
-import jalview.io.FileFormat;
-import jalview.io.FormatAdapter;
 import jalview.ws.api.JobId;
 import jalview.ws.api.MultipleSequenceAlignmentI;
 import jalview.ws.params.ArgumentI;
 import jalview.ws.params.InvalidArgumentException;
 import jalview.ws.params.WsParamSetI;
 
-import java.io.ByteArrayInputStream;
 import java.io.IOError;
 import java.io.IOException;
-import java.io.InputStream;
 import java.rmi.ServerError;
-import java.util.HashMap;
 import java.util.List;
 
-import uk.ac.dundee.compbio.slivkaclient.FormField;
 import uk.ac.dundee.compbio.slivkaclient.RemoteFile;
 import uk.ac.dundee.compbio.slivkaclient.SlivkaClient;
-import uk.ac.dundee.compbio.slivkaclient.SlivkaForm;
 import uk.ac.dundee.compbio.slivkaclient.SlivkaService;
 
 public class SlivkaMsaServiceInstance extends SlivkaWSInstance implements MultipleSequenceAlignmentI
 {
-  SlivkaMsaServiceInstance(SlivkaClient client, SlivkaService service) {
-    super(client, service, "Alignment");
+  SlivkaMsaServiceInstance(SlivkaClient client, SlivkaService service, String category) {
+    super(client, service, category);
     style = ServiceClient.MSAWSCLIENT;
   }
 
   @Override
   public JobId align(List<SequenceI> toalign, WsParamSetI parameters, List<ArgumentI> list) throws Throwable
   {
-    StringBuilder builder = new StringBuilder();
-    for (SequenceI seq : toalign)
-    {
-      builder.append(">").append(seq.getName()).append("\n");
-      builder.append(seq.getSequence()).append("\n");
-    }
-    InputStream stream = new ByteArrayInputStream(builder.toString().getBytes());
-    RemoteFile file = client.uploadFile(stream, "input.fasta", "application/fasta");
-    SlivkaForm form = service.getForm();
-    HashMap<String, String> values = new HashMap<>(list != null ? list.size() : 0);
-    if (list != null)
-    {
-      for (ArgumentI arg : list)
-      {
-        values.put(arg.getName(), arg.getValue());
-      }
-    }
-    for (FormField field : form.getFields())
-    {
-      switch (field.getType()) {
-      case FILE:
-        form.insert(field.getName(), file);
-        break;
-      case BOOLEAN:
-        String value = values.get(field.getName());
-        form.insert(field.getName(), (value != null && !value.isBlank()) ? true : false);
-        break;
-      default:
-        form.insert(field.getName(), field.valueOf(values.get(field.getName())));
-      }
-    }
-    return new JobId(service.getName(), service.getName(), form.submit());
+    return super.submit(toalign, parameters, list);
   }
 
   @Override
   public AlignmentI getAlignmentFor(JobId jobId) throws InvalidArgumentException, ServerError, IOError
   {
-    List<RemoteFile> files;
     try
     {
-      files = client.getJobResults(jobId.getJobId());
+      List<RemoteFile> files = client.getJobResults(jobId.getJobId());
       for (RemoteFile f : files)
       {
-        if (f.getMimeType().equals("application/clustal"))
-        {
-          return new FormatAdapter().readFile(f.getURL().toString(), DataSourceType.URL, FileFormat.Clustal);
-        }
-        else if (f.getMimeType().equals("application/fasta"))
+        var aln = readAlignment(f);
+        if (aln != null)
         {
-          return new FormatAdapter().readFile(f.getURL().toString(), DataSourceType.URL, FileFormat.Fasta);
+          return aln;
         }
       }
     } catch (IOException e)