+package compbio.ws.server;
+
+import java.io.File;
+import java.util.List;
+
+import javax.jws.WebParam;
+import javax.jws.WebService;
+
+import org.apache.log4j.Logger;
+
+import compbio.data.msa.JABAService;
+import compbio.data.msa.JManagement;
+import compbio.data.msa.Metadata;
+import compbio.data.msa.MsaWS;
+import compbio.data.sequence.Alignment;
+import compbio.data.sequence.FastaSequence;
+import compbio.engine.AsyncExecutor;
+import compbio.engine.Configurator;
+import compbio.engine.client.ConfiguredExecutable;
+import compbio.engine.client.SkeletalExecutable;
+import compbio.metadata.ChunkHolder;
+import compbio.metadata.JobStatus;
+import compbio.metadata.JobSubmissionException;
+import compbio.metadata.Limit;
+import compbio.metadata.LimitsManager;
+import compbio.metadata.Option;
+import compbio.metadata.Preset;
+import compbio.metadata.PresetManager;
+import compbio.metadata.ResultNotAvailableException;
+import compbio.metadata.RunnerConfig;
+import compbio.metadata.WrongParameterException;
+import compbio.runner.Util;
+import compbio.runner.msa.ClustalW;
+import compbio.runner.structure.RNAalifold;
+
+@WebService(targetNamespace = JABAService.SERVICE_NAMESPACE, serviceName = "RNAalifoldWS")
+public class RNAalifoldWS implements JABAService, JManagement, Metadata<RNAalifold> {
+
+ private static Logger log = Logger.getLogger(ClustalWS.class);
+
+ private static final RunnerConfig<RNAalifold> rnaalifoldOptions = Util.
+ getSupportedOptions(RNAalifold.class);
+
+ private static final PresetManager<RNAalifold> rnaalifoldPresets = Util
+ .getPresets(RNAalifold.class);
+
+ private static final LimitsManager<RNAalifold> limitMan = compbio.engine.client.Util
+ .getLimits(new RNAalifold().getType());
+
+ ConfiguredExecutable<RNAalifold> init() throws JobSubmissionException {
+ RNAalifold rnaalifold = new RNAalifold();
+ rnaalifold.setInput(SkeletalExecutable.INPUT)
+ .setOutput(SkeletalExecutable.OUTPUT)
+ .setError(SkeletalExecutable.ERROR);
+ ConfiguredExecutable<RNAalifold> confRNAalifold = Configurator
+ .configureExecutable(rnaalifold);
+ return confRNAalifold;
+ }
+
+ @Override
+ public RunnerConfig<RNAalifold> getRunnerOptions() {
+ return rnaalifoldOptions;
+ }
+
+ @SuppressWarnings("unchecked")
+ public String getResult(@WebParam(name = "jobId") String jobId) throws ResultNotAvailableException {
+
+ WSUtil.validateJobId(jobId);
+ AsyncExecutor asyncEngine = Configurator.getAsyncEngine(jobId);
+ ConfiguredExecutable<RNAalifold> rnaalifold = (ConfiguredExecutable<RNAalifold>) asyncEngine
+ .getResults(jobId);
+ return rnaalifold.getResults();
+ }
+
+ @Override
+ public boolean cancelJob(String jobId) {
+ WSUtil.validateJobId(jobId);
+ boolean result = WSUtil.cancelJob(jobId);
+ return result;
+ }
+
+ @Override
+ public JobStatus getJobStatus(String jobId) {
+ WSUtil.validateJobId(jobId);
+ JobStatus status = WSUtil.getJobStatus(jobId);
+ return status;
+ }
+
+ @Override
+ public Limit<RNAalifold> getLimit(String presetName) {
+ if (limitMan == null) {
+ // No limit is configured
+ return null;
+ }
+ Limit<RNAalifold> limit = limitMan.getLimitByName(presetName);
+ return limit;
+ }
+
+ @Override
+ public LimitsManager<RNAalifold> getLimits() {
+ return limitMan;
+ }
+
+ @Override
+ // PlaceHolder
+ public PresetManager<RNAalifold> getPresets() {
+ if (rnaalifoldPresets == null) {
+ // No presets are configured
+ return null;
+ }
+ return rnaalifoldPresets;
+ }
+
+ @Override
+ // PlaceHolder
+ public ChunkHolder pullExecStatistics(String jobId, long position) {
+
+ WSUtil.validateJobId(jobId);
+// String file = Configurator.getWorkDirectory(jobId) + File.separator
+// + RNAalifold.getStatFile();
+// ChunkHolder cholder = WSUtil.pullFile(file, position);
+// return cholder;
+ return null;
+ }
+}
+
+