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