JAL-3066 Automatically discoverable Protein sequence analysis services
[jalview.git] / src / jalview / ws / slivkaws / SlivkaAnnotationServiceInstance.java
index 4fb35a0..184ca2d 100644 (file)
@@ -1,16 +1,23 @@
 package jalview.ws.slivkaws;
 
 import jalview.api.FeatureColourI;
+import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.SequenceI;
 import jalview.datamodel.features.FeatureMatcherSetI;
+import jalview.io.AnnotationFile;
 import jalview.ws.api.JobId;
 import jalview.ws.api.SequenceAnnotationServiceI;
 import jalview.ws.params.ArgumentI;
 import jalview.ws.params.WsParamSetI;
 
+import java.io.BufferedReader;
 import java.io.ByteArrayInputStream;
+import java.io.IOError;
+import java.io.IOException;
 import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -25,7 +32,7 @@ public class SlivkaAnnotationServiceInstance extends SlivkaWSInstance implements
 {
   public SlivkaAnnotationServiceInstance(SlivkaClient client, SlivkaService service)
   {
-    super(client, service, "Annotations");
+    super(client, service, "Annotations disorder");
   }
 
   @Override
@@ -71,7 +78,30 @@ public class SlivkaAnnotationServiceInstance extends SlivkaWSInstance implements
           List<SequenceI> seqs, Map<String, FeatureColourI> featureColours,
           Map<String, FeatureMatcherSetI> featureFilters) throws Throwable
   {
-    // TODO Auto-generated method stub
-    return null;
+    RemoteFile annotFile = null;
+    RemoteFile featFile = null;
+    try
+    {
+      List<RemoteFile> files = client.getJobResults(job.getJobId());
+      for (RemoteFile f : files)
+      {
+        if (f.getMimeType().equals("application/jalview-annotations"))
+        {
+          annotFile = f;
+        }
+        else if (f.getMimeType().equals("application/jalview-features"))
+        {
+          featFile = f;
+        }
+      }
+    } catch (IOException e)
+    {
+      throw new IOError(e);
+    }
+    Alignment aln = new Alignment(seqs.toArray(new SequenceI[0]));
+    BufferedReader in = new BufferedReader(new InputStreamReader(annotFile.getContent()));
+    AnnotationFile f = new AnnotationFile();
+    f.parseAnnotationFrom(aln, null, in);
+    return Arrays.asList(aln.getAlignmentAnnotation());
   }
 }