Web services refactoring & bug fixing
[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.SequenceAnnotation;\r
12 import compbio.data.sequence.FastaSequence;\r
13 import compbio.engine.Configurator;\r
14 import compbio.engine.client.ConfiguredExecutable;\r
15 import compbio.metadata.ChunkHolder;\r
16 import compbio.metadata.JobSubmissionException;\r
17 import compbio.metadata.LimitExceededException;\r
18 import compbio.metadata.UnsupportedRuntimeException;\r
19 import compbio.runner.conservation.AACon;\r
20 \r
21 @WebService(endpointInterface = "compbio.data.msa.SequenceAnnotation", targetNamespace = "http://msa.data.compbio/01/12/2010/", serviceName = "AAConWS")\r
22 public class AAConWS extends SequenceAnnotationService<AACon>\r
23                 implements\r
24                         SequenceAnnotation<AACon> {\r
25 \r
26         private static Logger log = Logger.getLogger(AAConWS.class);\r
27 \r
28         public AAConWS() {\r
29                 super(new AACon(), log);\r
30         }\r
31 \r
32         /*\r
33          * @SuppressWarnings("unchecked") public JalviewAnnotation\r
34          * getJalviewAnnotation(String jobId) throws ResultNotAvailableException {\r
35          * MultiAnnotatedSequence<Method> result = getResult(jobId); // TODO //\r
36          * log(jobId, "getResults"); return result.toJalviewAnnotation(); }\r
37          */\r
38 \r
39         @Override\r
40         public String analize(List<FastaSequence> sequences)\r
41                         throws UnsupportedRuntimeException, LimitExceededException,\r
42                         JobSubmissionException {\r
43                 WSUtil.validateAAConInput(sequences);\r
44                 ConfiguredExecutable<AACon> confAAcon = init(sequences);\r
45 \r
46                 // set default conservation method to fastest - SHENKIN\r
47                 // TODO: This violates encapsulation, should be moved to the runners\r
48                 // level.\r
49                 confAAcon.addParameters(Arrays.asList("-m=SHENKIN"));\r
50                 return WSUtil.analize(sequences, confAAcon, log, "AAConWS analize",\r
51                                 getLimit(""));\r
52         }\r
53 \r
54         @Override\r
55         public ChunkHolder pullExecStatistics(String jobId, long position) {\r
56                 WSUtil.validateJobId(jobId);\r
57                 String file = Configurator.getWorkDirectory(jobId) + File.separator\r
58                                 + AACon.getStatFile();\r
59                 return WSUtil.pullFile(file, position);\r
60         }\r
61 \r
62 }\r