Clean-up, refactoring, commenting. Parameters file containts only options since Jalvi...
[jabaws.git] / webservices / compbio / ws / server / RNAalifoldWS.java
1 package compbio.ws.server;\r
2 \r
3 import java.util.List;\r
4 \r
5 import javax.jws.WebService;\r
6 \r
7 import org.apache.log4j.Logger;\r
8 \r
9 import compbio.data.msa.JABAService;\r
10 import compbio.data.msa.SequenceAnnotation;\r
11 import compbio.data.sequence.FastaSequence;\r
12 import compbio.engine.client.ConfiguredExecutable;\r
13 import compbio.metadata.JobSubmissionException;\r
14 import compbio.metadata.LimitExceededException;\r
15 import compbio.metadata.Option;\r
16 import compbio.metadata.Preset;\r
17 import compbio.metadata.UnsupportedRuntimeException;\r
18 import compbio.metadata.WrongParameterException;\r
19 import compbio.runner.conservation.AACon;\r
20 import compbio.runner.structure.RNAalifold;\r
21 \r
22 @WebService(endpointInterface = "compbio.data.msa.SequenceAnnotation", targetNamespace = JABAService.V2_SERVICE_NAMESPACE, serviceName = "RNAalifoldWS")\r
23 public class RNAalifoldWS extends SequenceAnnotationService<RNAalifold> \r
24                 implements\r
25                         SequenceAnnotation<RNAalifold> {\r
26 \r
27         private static Logger log = Logger.getLogger(RNAalifoldWS.class);\r
28         \r
29         public RNAalifoldWS() {\r
30                 super (new RNAalifold(), log);\r
31         }\r
32         \r
33         // Only purpose is to replace "analize" with "fold" method \r
34         // so that a clustal input file and not fasta will be generated\r
35         @Override\r
36         public String analize(List<FastaSequence> sequences)\r
37                         throws UnsupportedRuntimeException, LimitExceededException,\r
38                         JobSubmissionException {\r
39                 WSUtil.validateFastaInput(sequences);\r
40                 ConfiguredExecutable<RNAalifoldWS> confRNAalifold = init(sequences);\r
41                 return WSUtil.fold(sequences, confRNAalifold, log, "analize",\r
42                                 getLimit(""));\r
43         }\r
44 \r
45         // Only purpose is to replace "analize" with "fold" method \r
46         // so that a clustal input file and not fasta will be generated\r
47         @Override\r
48         public String customAnalize(List<FastaSequence> sequences,\r
49                         List<Option<RNAalifold>> options) throws UnsupportedRuntimeException,\r
50                         LimitExceededException, JobSubmissionException,\r
51                         WrongParameterException {\r
52                 WSUtil.validateFastaInput(sequences);\r
53                 ConfiguredExecutable<RNAalifold> confRNAalifold = init(sequences);\r
54                 \r
55                 List<String> params = WSUtil.getCommands(options,\r
56                                 AACon.KEY_VALUE_SEPARATOR);\r
57                 confRNAalifold.addParameters(params);\r
58                 return WSUtil.fold(sequences, confRNAalifold, log, "customAnalize",\r
59                                 getLimit(""));\r
60         }\r
61         \r
62         \r
63         /*\r
64          * No presets are supported, thus the result of this call will be as simple\r
65          * call to analize without parameters\r
66          */\r
67         @Override\r
68         public String presetAnalize(List<FastaSequence> sequences,\r
69                         Preset<RNAalifold> preset) throws UnsupportedRuntimeException,\r
70                         LimitExceededException, JobSubmissionException,\r
71                         WrongParameterException {\r
72 \r
73                 return analize(sequences);\r
74         }\r
75 }\r
76         \r
77         \r