Adding AAConWS
[jabaws.git] / webservices / compbio / ws / server / AAConWS.java
diff --git a/webservices/compbio/ws/server/AAConWS.java b/webservices/compbio/ws/server/AAConWS.java
new file mode 100644 (file)
index 0000000..cf382df
--- /dev/null
@@ -0,0 +1,140 @@
+package compbio.ws.server;\r
+\r
+import java.io.File;\r
+import java.util.List;\r
+\r
+import javax.annotation.Resource;\r
+import javax.jws.WebService;\r
+import javax.xml.ws.WebServiceContext;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+import compbio.conservation.Method;\r
+import compbio.data.msa.Annotation;\r
+import compbio.data.sequence.FastaSequence;\r
+import compbio.data.sequence.JalviewAnnotation;\r
+import compbio.data.sequence.MultiAnnotatedSequence;\r
+import compbio.engine.AsyncExecutor;\r
+import compbio.engine.Configurator;\r
+import compbio.engine.client.ConfiguredExecutable;\r
+import compbio.metadata.ChunkHolder;\r
+import compbio.metadata.JobStatus;\r
+import compbio.metadata.JobSubmissionException;\r
+import compbio.metadata.Limit;\r
+import compbio.metadata.LimitExceededException;\r
+import compbio.metadata.LimitsManager;\r
+import compbio.metadata.Option;\r
+import compbio.metadata.Preset;\r
+import compbio.metadata.PresetManager;\r
+import compbio.metadata.ResultNotAvailableException;\r
+import compbio.metadata.RunnerConfig;\r
+import compbio.metadata.UnsupportedRuntimeException;\r
+import compbio.metadata.WrongParameterException;\r
+import compbio.runner.Util;\r
+import compbio.runner.conservation.AACon;\r
+\r
+@WebService(endpointInterface = "compbio.data.msa.MsaWS", targetNamespace = "http://msa.data.compbio/01/01/2010/", serviceName = "MuscleWS")\r
+public class AAConWS implements Annotation<AACon> {\r
+\r
+       // Ask for resource injection\r
+       @Resource\r
+       WebServiceContext wsContext;\r
+\r
+       private static Logger statLog = Logger.getLogger("AAConWS-stats");\r
+\r
+       private static Logger log = Logger.getLogger(AAConWS.class);\r
+\r
+       private static final RunnerConfig<AACon> aaconOptions = Util\r
+                       .getSupportedOptions(AACon.class);\r
+\r
+       private static final PresetManager<AACon> aaconPresets = Util\r
+                       .getPresets(AACon.class);\r
+\r
+       ConfiguredExecutable<AACon> init(List<FastaSequence> sequences)\r
+                       throws JobSubmissionException {\r
+               AACon aacon = new AACon();\r
+               aacon.setInput("fasta.in").setOutput("fasta.out");\r
+               return Configurator.configureExecutable(aacon, sequences);\r
+       }\r
+\r
+       @SuppressWarnings("unchecked")\r
+       public MultiAnnotatedSequence<Method> getResult(String jobId)\r
+                       throws ResultNotAvailableException {\r
+               WSUtil.validateJobId(jobId);\r
+               AsyncExecutor asyncEngine = Configurator.getAsyncEngine(jobId);\r
+               ConfiguredExecutable<AACon> aacon = (ConfiguredExecutable<AACon>) asyncEngine\r
+                               .getResults(jobId);\r
+               MultiAnnotatedSequence<Method> mas = aacon.getResults();\r
+               // log(jobId, "getResults");\r
+               return mas;\r
+       }\r
+\r
+       @SuppressWarnings("unchecked")\r
+       public JalviewAnnotation getJalviewAnnotation(String jobId)\r
+                       throws ResultNotAvailableException {\r
+               MultiAnnotatedSequence<Method> result = getResult(jobId);\r
+\r
+               // log(jobId, "getResults");\r
+               return result.toJalviewAnnotation();\r
+       }\r
+\r
+       public Limit<AACon> getLimit(String presetName) {\r
+               return new AACon().getLimit(presetName);\r
+       }\r
+\r
+       public LimitsManager<AACon> getLimits() {\r
+               return new AACon().getLimits();\r
+       }\r
+\r
+       public ChunkHolder pullExecStatistics(String jobId, long position) {\r
+               WSUtil.validateJobId(jobId);\r
+               String file = Configurator.getWorkDirectory(jobId) + File.separator\r
+                               + AACon.getStatFile();\r
+               return WSUtil.pullFile(file, position);\r
+       }\r
+\r
+       public boolean cancelJob(String jobId) {\r
+               WSUtil.validateJobId(jobId);\r
+               return WSUtil.cancelJob(jobId);\r
+       }\r
+\r
+       public JobStatus getJobStatus(String jobId) {\r
+               WSUtil.validateJobId(jobId);\r
+               return WSUtil.getJobStatus(jobId);\r
+       }\r
+\r
+       public PresetManager<AACon> getPresets() {\r
+               return aaconPresets;\r
+       }\r
+\r
+       public RunnerConfig<AACon> getRunnerOptions() {\r
+               return aaconOptions;\r
+       }\r
+\r
+       @Override\r
+       public String analize(List<FastaSequence> sequences)\r
+                       throws UnsupportedRuntimeException, LimitExceededException,\r
+                       JobSubmissionException {\r
+               // TODO Auto-generated method stub\r
+               return null;\r
+       }\r
+\r
+       @Override\r
+       public String customAnalize(List<FastaSequence> sequences,\r
+                       List<Option<AACon>> options) throws UnsupportedRuntimeException,\r
+                       LimitExceededException, JobSubmissionException,\r
+                       WrongParameterException {\r
+               // TODO Auto-generated method stub\r
+               return null;\r
+       }\r
+\r
+       @Override\r
+       public String presetAnalize(List<FastaSequence> sequences,\r
+                       Preset<AACon> preset) throws UnsupportedRuntimeException,\r
+                       LimitExceededException, JobSubmissionException,\r
+                       WrongParameterException {\r
+               // TODO Auto-generated method stub\r
+               return null;\r
+       }\r
+\r
+}\r