4d2c4fb636fe792be947cf2830dbf81880afe710
[jalview.git] / src / jalview / ws / slivkaws / SlivkaAnnotationServiceInstance.java
1 package jalview.ws.slivkaws;
2
3 import jalview.datamodel.AlignmentAnnotation;
4 import jalview.datamodel.SequenceI;
5 import jalview.ws.api.JobId;
6 import jalview.ws.api.SequenceAnnotationServiceI;
7 import jalview.ws.gui.AnnotationWsJob;
8 import jalview.ws.jws2.SeqAnnotationServiceCalcWorker;
9 import jalview.ws.params.ArgumentI;
10 import jalview.ws.params.WsParamSetI;
11
12 import java.io.ByteArrayInputStream;
13 import java.io.InputStream;
14 import java.util.HashMap;
15 import java.util.List;
16
17 import uk.ac.dundee.compbio.slivkaclient.FormField;
18 import uk.ac.dundee.compbio.slivkaclient.RemoteFile;
19 import uk.ac.dundee.compbio.slivkaclient.SlivkaClient;
20 import uk.ac.dundee.compbio.slivkaclient.SlivkaForm;
21 import uk.ac.dundee.compbio.slivkaclient.SlivkaService;
22
23 public class SlivkaAnnotationServiceInstance extends SlivkaWSInstance implements SequenceAnnotationServiceI
24 {
25   public SlivkaAnnotationServiceInstance(SlivkaClient client, SlivkaService service)
26   {
27     super(client, service, "Annotations");
28   }
29
30   @Override
31   public JobId submitToService(List<SequenceI> seqs, WsParamSetI preset, List<ArgumentI> paramset) throws Throwable
32   {
33     StringBuilder builder = new StringBuilder();
34     for (SequenceI seq : seqs)
35     {
36       builder.append(">").append(seq.getName()).append("\n");
37       builder.append(seq.getSequence()).append("\n");
38     }
39     InputStream stream = new ByteArrayInputStream(builder.toString().getBytes());
40     RemoteFile file = client.uploadFile(stream, "input.fasta", "application/fasta");
41     SlivkaForm form = service.getForm();
42     HashMap<String, String> values = new HashMap<>(paramset != null ? paramset.size() : 0);
43     if (paramset != null)
44     {
45       for (ArgumentI arg : paramset)
46       {
47         values.put(arg.getName(), arg.getValue());
48       }
49     }
50     for (FormField field : form.getFields())
51     {
52       switch (field.getType())
53       {
54       case FILE:
55         form.insert(field.getName(), file);
56         break;
57       case BOOLEAN:
58         String value = values.get(field.getName());
59         form.insert(field.getName(), value != null && !value.isBlank() ? true : false);
60         break;
61       default:
62         form.insert(field.getName(), field.valueOf(values.get(field.getName())));
63       }
64     }
65     return new JobId(service.getName(), service.getName(), form.submit());
66   }
67
68   @Override
69   public List<AlignmentAnnotation> getAlignmentAnnotation(AnnotationWsJob running,
70       SeqAnnotationServiceCalcWorker abstractJabaCalcWorker) throws Throwable
71   {
72     // TODO Auto-generated method stub
73     return null;
74   }
75 }