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