1 package compbio.ws.server;
6 import javax.jws.WebParam;
7 import javax.jws.WebService;
9 import org.apache.log4j.Logger;
11 import compbio.data.msa.JABAService;
12 import compbio.data.msa.JManagement;
13 import compbio.data.msa.Metadata;
14 import compbio.data.msa.MsaWS;
15 import compbio.data.sequence.Alignment;
16 import compbio.data.sequence.FastaSequence;
17 import compbio.engine.AsyncExecutor;
18 import compbio.engine.Configurator;
19 import compbio.engine.client.ConfiguredExecutable;
20 import compbio.engine.client.SkeletalExecutable;
21 import compbio.metadata.ChunkHolder;
22 import compbio.metadata.JobStatus;
23 import compbio.metadata.JobSubmissionException;
24 import compbio.metadata.Limit;
25 import compbio.metadata.LimitsManager;
26 import compbio.metadata.Option;
27 import compbio.metadata.Preset;
28 import compbio.metadata.PresetManager;
29 import compbio.metadata.ResultNotAvailableException;
30 import compbio.metadata.RunnerConfig;
31 import compbio.metadata.WrongParameterException;
32 import compbio.runner.Util;
33 import compbio.runner.msa.ClustalW;
34 import compbio.runner.structure.RNAalifold;
36 @WebService(targetNamespace = JABAService.SERVICE_NAMESPACE, serviceName = "RNAalifoldWS")
37 public class RNAalifoldWS implements JABAService, JManagement, Metadata<RNAalifold> {
39 private static Logger log = Logger.getLogger(ClustalWS.class);
41 private static final RunnerConfig<RNAalifold> rnaalifoldOptions = Util.
42 getSupportedOptions(RNAalifold.class);
44 private static final PresetManager<RNAalifold> rnaalifoldPresets = Util
45 .getPresets(RNAalifold.class);
47 private static final LimitsManager<RNAalifold> limitMan = compbio.engine.client.Util
48 .getLimits(new RNAalifold().getType());
50 ConfiguredExecutable<RNAalifold> init() throws JobSubmissionException {
51 RNAalifold rnaalifold = new RNAalifold();
52 rnaalifold.setInput(SkeletalExecutable.INPUT)
53 .setOutput(SkeletalExecutable.OUTPUT)
54 .setError(SkeletalExecutable.ERROR);
55 ConfiguredExecutable<RNAalifold> confRNAalifold = Configurator
56 .configureExecutable(rnaalifold);
57 return confRNAalifold;
61 public RunnerConfig<RNAalifold> getRunnerOptions() {
62 return rnaalifoldOptions;
65 @SuppressWarnings("unchecked")
66 public String getResult(@WebParam(name = "jobId") String jobId) throws ResultNotAvailableException {
68 WSUtil.validateJobId(jobId);
69 AsyncExecutor asyncEngine = Configurator.getAsyncEngine(jobId);
70 ConfiguredExecutable<RNAalifold> rnaalifold = (ConfiguredExecutable<RNAalifold>) asyncEngine
72 return rnaalifold.getResults();
76 public boolean cancelJob(String jobId) {
77 WSUtil.validateJobId(jobId);
78 boolean result = WSUtil.cancelJob(jobId);
83 public JobStatus getJobStatus(String jobId) {
84 WSUtil.validateJobId(jobId);
85 JobStatus status = WSUtil.getJobStatus(jobId);
90 public Limit<RNAalifold> getLimit(String presetName) {
91 if (limitMan == null) {
92 // No limit is configured
95 Limit<RNAalifold> limit = limitMan.getLimitByName(presetName);
100 public LimitsManager<RNAalifold> getLimits() {
106 public PresetManager<RNAalifold> getPresets() {
107 if (rnaalifoldPresets == null) {
108 // No presets are configured
111 return rnaalifoldPresets;
116 public ChunkHolder pullExecStatistics(String jobId, long position) {
118 WSUtil.validateJobId(jobId);
119 // String file = Configurator.getWorkDirectory(jobId) + File.separator
120 // + RNAalifold.getStatFile();
121 // ChunkHolder cholder = WSUtil.pullFile(file, position);