Clean-up, refactoring, commenting. Parameters file containts only options since Jalvi...
[jabaws.git] / webservices / compbio / ws / server / RNAalifoldWS.java
index f838b16..91081c4 100644 (file)
-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.FoldWS;
-import compbio.data.msa.JABAService;
-import compbio.data.msa.JManagement;
-import compbio.data.msa.Metadata;
-import compbio.data.sequence.Alignment;
-import compbio.data.sequence.RNAstruct;
-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.structure.RNAalifold;
-
-@WebService(endpointInterface = "compbio.data.msa.FoldWS", targetNamespace = JABAService.SERVICE_NAMESPACE, serviceName = "RNAalifoldWS")
-public class RNAalifoldWS implements FoldWS<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());
-       
-
-       @Override
-       public String fold(Alignment alignment)
-                       throws JobSubmissionException {
-               
-               // Validate clustal input here?
-               ConfiguredExecutable<RNAalifold> confRNAalifold = init(alignment);
-               return WSUtil.fold(alignment, confRNAalifold, log, "fold", getLimit(""));
-       }
-       
-       
-       ConfiguredExecutable<RNAalifold> init(Alignment dataset) throws JobSubmissionException {
-               RNAalifold rnaalifold = new RNAalifold();
-               rnaalifold.setInput(SkeletalExecutable.INPUT)
-                               .setOutput(SkeletalExecutable.OUTPUT)
-                               .setError(SkeletalExecutable.ERROR);
-               ConfiguredExecutable<RNAalifold> confRNAalifold = Configurator
-                               .configureExecutable(rnaalifold, dataset.getSequences());
-               return confRNAalifold;
-       }
-       
-       @Override
-       public String presetFold(Alignment alignment,
-                       Preset<RNAalifold> preset) throws JobSubmissionException,
-                       WrongParameterException {
-               // validate
-               if (preset == null) {
-                       throw new WrongParameterException("Preset must be Provided!");
-               }
-               Limit<RNAalifold> limit = getLimit(preset.getName());
-               ConfiguredExecutable<RNAalifold> confRNAalifold = init(alignment);
-               confRNAalifold.addParameters(preset.getOptions());
-               return WSUtil.fold(alignment, confRNAalifold, log, "presetFold", limit);
-       }
-               
-       @Override 
-       public String customFold(Alignment alignment,
-                       List<Option<RNAalifold>> options) throws JobSubmissionException,
-                       WrongParameterException {
-               // validate
-               ConfiguredExecutable<RNAalifold> confRNAalifold = init(alignment);
-               List<String> params = WSUtil.getCommands(options, 
-                               RNAalifold.KEY_VALUE_SEPARATOR);
-               confRNAalifold.addParameters(params);
-               log.info("Setting parameters: " + params);
-               return WSUtil.fold(alignment, confRNAalifold, log, "customFold", 
-                               getLimit(""));
-       }
-       
-       @Override
-       public RunnerConfig<RNAalifold> getRunnerOptions() {
-               return rnaalifoldOptions;
-       }
-       
-       @SuppressWarnings("unchecked")
-       public RNAstruct getResult(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 new ChunkHolder("", -1);
-       }
-}
-       
-       
+package compbio.ws.server;\r
+\r
+import java.util.List;\r
+\r
+import javax.jws.WebService;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+import compbio.data.msa.JABAService;\r
+import compbio.data.msa.SequenceAnnotation;\r
+import compbio.data.sequence.FastaSequence;\r
+import compbio.engine.client.ConfiguredExecutable;\r
+import compbio.metadata.JobSubmissionException;\r
+import compbio.metadata.LimitExceededException;\r
+import compbio.metadata.Option;\r
+import compbio.metadata.Preset;\r
+import compbio.metadata.UnsupportedRuntimeException;\r
+import compbio.metadata.WrongParameterException;\r
+import compbio.runner.conservation.AACon;\r
+import compbio.runner.structure.RNAalifold;\r
+\r
+@WebService(endpointInterface = "compbio.data.msa.SequenceAnnotation", targetNamespace = JABAService.V2_SERVICE_NAMESPACE, serviceName = "RNAalifoldWS")\r
+public class RNAalifoldWS extends SequenceAnnotationService<RNAalifold> \r
+               implements\r
+                       SequenceAnnotation<RNAalifold> {\r
+\r
+       private static Logger log = Logger.getLogger(RNAalifoldWS.class);\r
+       \r
+       public RNAalifoldWS() {\r
+               super (new RNAalifold(), log);\r
+       }\r
+       \r
+       // Only purpose is to replace "analize" with "fold" method \r
+       // so that a clustal input file and not fasta will be generated\r
+       @Override\r
+       public String analize(List<FastaSequence> sequences)\r
+                       throws UnsupportedRuntimeException, LimitExceededException,\r
+                       JobSubmissionException {\r
+               WSUtil.validateFastaInput(sequences);\r
+               ConfiguredExecutable<RNAalifoldWS> confRNAalifold = init(sequences);\r
+               return WSUtil.fold(sequences, confRNAalifold, log, "analize",\r
+                               getLimit(""));\r
+       }\r
+\r
+       // Only purpose is to replace "analize" with "fold" method \r
+       // so that a clustal input file and not fasta will be generated\r
+       @Override\r
+       public String customAnalize(List<FastaSequence> sequences,\r
+                       List<Option<RNAalifold>> options) throws UnsupportedRuntimeException,\r
+                       LimitExceededException, JobSubmissionException,\r
+                       WrongParameterException {\r
+               WSUtil.validateFastaInput(sequences);\r
+               ConfiguredExecutable<RNAalifold> confRNAalifold = init(sequences);\r
+               \r
+               List<String> params = WSUtil.getCommands(options,\r
+                               AACon.KEY_VALUE_SEPARATOR);\r
+               confRNAalifold.addParameters(params);\r
+               return WSUtil.fold(sequences, confRNAalifold, log, "customAnalize",\r
+                               getLimit(""));\r
+       }\r
+       \r
+       \r
+       /*\r
+        * No presets are supported, thus the result of this call will be as simple\r
+        * call to analize without parameters\r
+        */\r
+       @Override\r
+       public String presetAnalize(List<FastaSequence> sequences,\r
+                       Preset<RNAalifold> preset) throws UnsupportedRuntimeException,\r
+                       LimitExceededException, JobSubmissionException,\r
+                       WrongParameterException {\r
+\r
+               return analize(sequences);\r
+       }\r
+}\r
+       \r
+       \r