AAConWS is working
[jabaws.git] / webservices / compbio / data / msa / Annotation.java
1 package compbio.data.msa;\r
2 \r
3 import java.security.InvalidParameterException;\r
4 import java.util.HashSet;\r
5 import java.util.List;\r
6 \r
7 import javax.jws.WebMethod;\r
8 import javax.jws.WebParam;\r
9 import javax.jws.WebService;\r
10 \r
11 import compbio.data.sequence.FastaSequence;\r
12 import compbio.data.sequence.Score;\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.ResultNotAvailableException;\r
18 import compbio.metadata.UnsupportedRuntimeException;\r
19 import compbio.metadata.WrongParameterException;\r
20 \r
21 /**\r
22  * Interface for tools that results to one or more annotation to sequence(s)\r
23  * \r
24  * @author pvtroshin\r
25  * \r
26  *         Date November 2010\r
27  * \r
28  * @param <T>\r
29  *            executable type / web service type\r
30  */\r
31 @WebService(targetNamespace = "http://msa.data.compbio/01/12/2010/")\r
32 public interface Annotation<T> extends JManagement, Metadata<T> {\r
33 \r
34         /**\r
35          * \r
36          * Any dataset containing a greater number of sequences or the average\r
37          * length of the sequences are greater then defined in the default Limit\r
38          * will not be accepted for an alignment operation and\r
39          * JobSubmissionException will be thrown.\r
40          * \r
41          * @param sequences\r
42          *            List of FastaSequence objects. The programme does not perform\r
43          *            any sequence validity checks. Nor does it checks whether the\r
44          *            sequences names are unique. It is responsibility of the caller\r
45          *            to validate this information\r
46          * @return jobId - unique identifier for the job\r
47          * @throws JobSubmissionException\r
48          *             is thrown when the job could not be submitted due to the\r
49          *             following reasons: 1) The number of sequences in the\r
50          *             submission or their average length is greater then defined by\r
51          *             the default Limit. 2) Any problems on the server side e.g. it\r
52          *             is misconfigured or malfunction, is reported via this\r
53          *             exception. In the first case the information on the limit\r
54          *             could be obtained from an exception.\r
55          * @throws InvalidParameterException\r
56          *             thrown if input list of fasta sequence is null or empty\r
57          * @throws UnsupportedRuntimeException\r
58          *             thrown if server OS does not support native executables for a\r
59          *             given web service, e.g. JWS2 is deployed on Windows and Mafft\r
60          *             service is called\r
61          * @throws LimitExceededException\r
62          *             is throw if the input sequences number or average length\r
63          *             exceeds what is defined by the limit\r
64          */\r
65         @WebMethod\r
66         String analize(\r
67                         @WebParam(name = "fastaSequences") List<FastaSequence> sequences)\r
68                         throws UnsupportedRuntimeException, LimitExceededException,\r
69                         JobSubmissionException;\r
70 \r
71         /**\r
72          * \r
73          * @see Option\r
74          * \r
75          *      Default Limit is used to decide whether the calculation will be\r
76          *      permitted or denied\r
77          * \r
78          * @param sequences\r
79          *            List of FastaSequence objects. The programme does not perform\r
80          *            any sequence validity checks. Nor does it checks whether the\r
81          *            sequences names are unique. It is responsibility of the caller\r
82          *            to validate this information\r
83          * @param options\r
84          *            A list of Options\r
85          * @return jobId - unique identifier for the job\r
86          * @throws JobSubmissionException. This\r
87          *             exception is thrown when the job could not be submitted due\r
88          *             to the following reasons: 1) The number of sequences in the\r
89          *             submission or their average length is greater then defined by\r
90          *             the default Limit. 2) Any problems on the server side e.g. it\r
91          *             is misconfigured or malfunction, is reported via this\r
92          *             exception. In the first case the information on the limit\r
93          *             could be obtained from an exception.\r
94          * @throws WrongParameterException\r
95          *             is throws when 1) One of the Options provided is not\r
96          *             supported, 2) The value of the option is defined outside the\r
97          *             boundaries. In both cases exception object contain the\r
98          *             information on the violating Option.\r
99          * @throws InvalidParameterException\r
100          *             thrown if input list of fasta sequence is null or empty\r
101          * @throws UnsupportedRuntimeException\r
102          *             thrown if server OS does not support native executables for a\r
103          *             given web service, e.g. JWS2 is deployed on Windows and Mafft\r
104          *             service is called\r
105          * @throws LimitExceededException\r
106          *             is throw if the input sequences number or average length\r
107          *             exceeds what is defined by the limit\r
108          */\r
109         @WebMethod\r
110         String customAnalize(\r
111                         @WebParam(name = "fastaSequences") List<FastaSequence> sequences,\r
112                         @WebParam(name = "options") List<Option<T>> options)\r
113                         throws UnsupportedRuntimeException, LimitExceededException,\r
114                         JobSubmissionException, WrongParameterException;\r
115 \r
116         /**\r
117          * \r
118          * \r
119          * Limit for a presetName is used whether the calculation will be permitted\r
120          * or denied. If no Limit was defined for a presetName, than default limit\r
121          * is used.\r
122          * \r
123          * @param sequences\r
124          *            List of FastaSequence objects. The programme does not perform\r
125          *            any sequence validity checks. Nor does it checks whether the\r
126          *            sequences names are unique. It is responsibility of the caller\r
127          *            to validate this information\r
128          * @param preset\r
129          *            A list of Options\r
130          * @return String - jobId - unique identifier for the job\r
131          * @throws JobSubmissionException. This\r
132          *             exception is thrown when the job could not be submitted due\r
133          *             to the following reasons: 1) The number of sequences in the\r
134          *             submission or their average length is greater then defined by\r
135          *             the default Limit. 2) Any problems on the server side e.g. it\r
136          *             is misconfigured or malfunction, is reported via this\r
137          *             exception. In the first case the information on the limit\r
138          *             could be obtained from an exception.\r
139          * @throws WrongParameterException\r
140          *             is throws when 1) One of the Options provided is not\r
141          *             supported, 2) The value of the option is defined outside the\r
142          *             boundaries. In both cases exception object contain the\r
143          *             information on the violating Option.\r
144          * @throws InvalidParameterException\r
145          *             thrown if input list of fasta sequence is null or empty\r
146          * @throws UnsupportedRuntimeException\r
147          *             thrown if server OS does not support native executables for a\r
148          *             given web service, e.g. JWS2 is deployed on Windows and Mafft\r
149          *             service is called\r
150          * @throws LimitExceededException\r
151          *             is throw if the input sequences number or average length\r
152          *             exceeds what is defined by the limit\r
153          */\r
154         @WebMethod\r
155         String presetAnalize(\r
156                         @WebParam(name = "fastaSequences") List<FastaSequence> sequences,\r
157                         @WebParam(name = "preset") Preset<T> preset)\r
158                         throws UnsupportedRuntimeException, LimitExceededException,\r
159                         JobSubmissionException, WrongParameterException;\r
160 \r
161         /**\r
162          * Return the result of the job.\r
163          * \r
164          * @param jobId\r
165          *            a unique job identifier\r
166          * @return\r
167          * @throws ResultNotAvailableException\r
168          *             this exception is throw if the job execution was not\r
169          *             successful or the result of the execution could not be found.\r
170          *             (e.g. removed). Exception could also be thrown is dues to the\r
171          *             lower level problems on the server i.e. IOException,\r
172          *             FileNotFoundException problems as well as\r
173          *             UnknownFileFormatException.\r
174          * @throws InvalidParameterException\r
175          *             thrown if jobId is empty or cannot be recognised e.g. in\r
176          *             invalid format\r
177          */\r
178         @WebMethod\r
179         HashSet<Score> getConservation(@WebParam(name = "jobId") String jobId)\r
180                         throws ResultNotAvailableException;\r
181 \r
182 }\r