Parameters Tester updated. Untested webservice code. generate xsd/wsdl?
[jabaws.git] / webservices / compbio / ws / server / RNAalifoldWS.java
1 package compbio.ws.server;
2
3 import java.io.File;
4 import java.util.List;
5
6 import javax.jws.WebParam;
7 import javax.jws.WebService;
8
9 import org.apache.log4j.Logger;
10
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;
35
36 @WebService(targetNamespace = JABAService.SERVICE_NAMESPACE, serviceName = "RNAalifoldWS")
37 public class RNAalifoldWS implements JABAService, JManagement, Metadata<RNAalifold> {
38
39         private static Logger log = Logger.getLogger(ClustalWS.class);
40         
41         private static final RunnerConfig<RNAalifold> rnaalifoldOptions = Util.
42                         getSupportedOptions(RNAalifold.class);
43         
44         private static final PresetManager<RNAalifold> rnaalifoldPresets = Util
45                         .getPresets(RNAalifold.class);
46
47         private static final LimitsManager<RNAalifold> limitMan = compbio.engine.client.Util
48                         .getLimits(new RNAalifold().getType());
49         
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;
58         }
59                 
60         @Override
61         public RunnerConfig<RNAalifold> getRunnerOptions() {
62                 return rnaalifoldOptions;
63         }
64         
65         @SuppressWarnings("unchecked")
66         public String getResult(@WebParam(name = "jobId") String jobId) throws ResultNotAvailableException {
67                 
68                 WSUtil.validateJobId(jobId);
69                 AsyncExecutor asyncEngine = Configurator.getAsyncEngine(jobId);
70                 ConfiguredExecutable<RNAalifold> rnaalifold = (ConfiguredExecutable<RNAalifold>) asyncEngine
71                                 .getResults(jobId);
72                 return rnaalifold.getResults();
73         }
74         
75         @Override
76         public boolean cancelJob(String jobId) {
77                 WSUtil.validateJobId(jobId);
78                 boolean result = WSUtil.cancelJob(jobId);
79                 return result;
80         }
81         
82         @Override
83         public JobStatus getJobStatus(String jobId) {
84                 WSUtil.validateJobId(jobId);
85                 JobStatus status = WSUtil.getJobStatus(jobId);
86                 return status;
87         }
88         
89         @Override
90         public Limit<RNAalifold> getLimit(String presetName) {
91                 if (limitMan == null) {
92                         // No limit is configured
93                         return null;
94                 }
95                 Limit<RNAalifold> limit = limitMan.getLimitByName(presetName);
96                 return limit;
97         }
98         
99         @Override
100         public LimitsManager<RNAalifold> getLimits() {
101                 return limitMan;
102         }
103         
104         @Override 
105         // PlaceHolder
106         public PresetManager<RNAalifold> getPresets() {
107                 if (rnaalifoldPresets == null) {
108                         // No presets are configured
109                         return null;
110                 }
111                 return rnaalifoldPresets;
112         }
113
114         @Override
115         // PlaceHolder 
116         public ChunkHolder pullExecStatistics(String jobId, long position) {
117
118                 WSUtil.validateJobId(jobId);
119 //              String file = Configurator.getWorkDirectory(jobId) + File.separator
120 //                              + RNAalifold.getStatFile();
121 //              ChunkHolder cholder = WSUtil.pullFile(file, position);
122 //              return cholder;
123                 return null;
124         }
125 }
126         
127