1318beb0b0793904ef171a91d052921c83f6e4fb
[jabaws.git] / webservices / compbio / ws / server / AAConWS.java
1 package compbio.ws.server;\r
2 \r
3 import java.io.File;\r
4 import java.util.Arrays;\r
5 import java.util.List;\r
6 \r
7 import javax.jws.WebService;\r
8 \r
9 import org.apache.log4j.Logger;\r
10 \r
11 import compbio.data.msa.JABAService;\r
12 import compbio.data.msa.SequenceAnnotation;\r
13 import compbio.data.sequence.FastaSequence;\r
14 import compbio.engine.Configurator;\r
15 import compbio.engine.client.ConfiguredExecutable;\r
16 import compbio.metadata.ChunkHolder;\r
17 import compbio.metadata.JobSubmissionException;\r
18 import compbio.metadata.LimitExceededException;\r
19 import compbio.metadata.UnsupportedRuntimeException;\r
20 import compbio.runner.conservation.AACon;\r
21 \r
22 @WebService(endpointInterface = "compbio.data.msa.SequenceAnnotation", targetNamespace = JABAService.V2_SERVICE_NAMESPACE, serviceName = "AAConWS")\r
23 public class AAConWS extends SequenceAnnotationService<AACon>\r
24                 implements\r
25                         SequenceAnnotation<AACon> {\r
26 \r
27         private static Logger log = Logger.getLogger(AAConWS.class);\r
28 \r
29         public AAConWS() {\r
30                 super(new AACon(), log);\r
31         }\r
32 \r
33         /*\r
34          * @SuppressWarnings("unchecked") public JalviewAnnotation\r
35          * getJalviewAnnotation(String jobId) throws ResultNotAvailableException {\r
36          * MultiAnnotatedSequence<Method> result = getResult(jobId); // TODO //\r
37          * log(jobId, "getResults"); return result.toJalviewAnnotation(); }\r
38          */\r
39 \r
40         @Override\r
41         public String analize(List<FastaSequence> sequences)\r
42                         throws UnsupportedRuntimeException, LimitExceededException,\r
43                         JobSubmissionException {\r
44                 WSUtil.validateAAConInput(sequences);\r
45                 ConfiguredExecutable<AACon> confAAcon = init(sequences);\r
46 \r
47                 // set default conservation method to fastest - SHENKIN\r
48                 // TODO: This violates encapsulation, should be moved to the runners\r
49                 // level.\r
50                 confAAcon.addParameters(Arrays.asList("-m=SHENKIN"));\r
51                 return WSUtil.analize(sequences, confAAcon, log, "AAConWS analize",\r
52                                 getLimit(""));\r
53         }\r
54 \r
55         @Override\r
56         public ChunkHolder pullExecStatistics(String jobId, long position) {\r
57                 WSUtil.validateJobId(jobId);\r
58                 String file = Configurator.getWorkDirectory(jobId) + File.separator\r
59                                 + AACon.getStatFile();\r
60                 return WSUtil.pullFile(file, position);\r
61         }\r
62 \r
63 }\r