Simple datamodel for RNAalifold.exe output and method to convert from
[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         //public String fold()
51         
52         
53         ConfiguredExecutable<RNAalifold> init() throws JobSubmissionException {
54                 RNAalifold rnaalifold = new RNAalifold();
55                 rnaalifold.setInput(SkeletalExecutable.INPUT)
56                                 .setOutput(SkeletalExecutable.OUTPUT)
57                                 .setError(SkeletalExecutable.ERROR);
58                 ConfiguredExecutable<RNAalifold> confRNAalifold = Configurator
59                                 .configureExecutable(rnaalifold);
60                 return confRNAalifold;
61         }
62                 
63         @Override
64         public RunnerConfig<RNAalifold> getRunnerOptions() {
65                 return rnaalifoldOptions;
66         }
67         
68         @SuppressWarnings("unchecked")
69         public String getResult(@WebParam(name = "jobId") String jobId) throws ResultNotAvailableException {
70                 
71                 WSUtil.validateJobId(jobId);
72                 AsyncExecutor asyncEngine = Configurator.getAsyncEngine(jobId);
73                 ConfiguredExecutable<RNAalifold> rnaalifold = (ConfiguredExecutable<RNAalifold>) asyncEngine
74                                 .getResults(jobId);
75                 return rnaalifold.getResults();
76         }
77         
78         @Override
79         public boolean cancelJob(String jobId) {
80                 WSUtil.validateJobId(jobId);
81                 boolean result = WSUtil.cancelJob(jobId);
82                 return result;
83         }
84         
85         @Override
86         public JobStatus getJobStatus(String jobId) {
87                 WSUtil.validateJobId(jobId);
88                 JobStatus status = WSUtil.getJobStatus(jobId);
89                 return status;
90         }
91         
92         @Override
93         public Limit<RNAalifold> getLimit(String presetName) {
94                 if (limitMan == null) {
95                         // No limit is configured
96                         return null;
97                 }
98                 Limit<RNAalifold> limit = limitMan.getLimitByName(presetName);
99                 return limit;
100         }
101         
102         @Override
103         public LimitsManager<RNAalifold> getLimits() {
104                 return limitMan;
105         }
106         
107         @Override 
108         // PlaceHolder
109         public PresetManager<RNAalifold> getPresets() {
110                 if (rnaalifoldPresets == null) {
111                         // No presets are configured
112                         return null;
113                 }
114                 return rnaalifoldPresets;
115         }
116
117         @Override
118         // PlaceHolder 
119         public ChunkHolder pullExecStatistics(String jobId, long position) {
120
121 //              WSUtil.validateJobId(jobId);
122 //              String file = Configurator.getWorkDirectory(jobId) + File.separator
123 //                              + RNAalifold.getStatFile();
124 //              ChunkHolder cholder = WSUtil.pullFile(file, position);
125 //              return cholder;
126                 return new ChunkHolder("", -1);
127         }
128 }
129         
130