9978cc4b5a0e08f3e730c076d1d4d22611900971
[proteocache.git] / server / compbio / ws / jpred / JpredWS.java
1 package compbio.ws.jpred;
2
3 import java.io.IOException;
4 import java.util.ArrayList;
5 import java.util.List;
6
7 import javax.jws.WebService;
8
9 import org.apache.log4j.Logger;
10
11 import compbio.beans.ProteinBean;
12 import compbio.cassandra.CassandraNativeConnector;
13 import compbio.cassandra.readers.SequenceReader;
14 import compbio.engine.archive.ArchivedJob;
15
16 @WebService(endpointInterface = "compbio.ws.jpred.Jpred", targetNamespace = "http://server.proteocache.ws", serviceName = "ProteoCacheWS", portName = "ProteoCacheWSPort")
17 public class JpredWS implements Jpred {
18         private static Logger log = Logger.getLogger(CassandraNativeConnector.class);
19         String jobid;
20
21         private List<String> findJobs(String sequence, String program, String version) {
22                 CassandraNativeConnector dbconnector = new CassandraNativeConnector();
23                 SequenceReader reader = new SequenceReader();
24                 reader.setSession(dbconnector.getSession());
25                 log.debug("ProteoCacheWS is connected:\n search for sequence: " + sequence + "\ncalculated with  " + program + " (version: "
26                                 + version + ")");
27                 List<String> jobs = new ArrayList<String>();
28                 List<ProteinBean> result = reader.readProteins(sequence, "whole");
29                 if (null != result) {
30                         for (ProteinBean protein : result) {
31                                 List<String> thejobs = protein.getJobid();
32                                 jobid = thejobs.get(0);
33                                 for (String job : thejobs) {
34                                         jobs.add(job);
35                                 }
36                         }
37                 }
38                 return jobs;
39         }
40
41         @Override
42         public String findSequence(String sequence, String program, String version) {
43                 List<String> jobs = findJobs(sequence, program, version);
44                 if (null != jobs) {
45                         return jobs.size() + " jobs found";
46                 }
47                 return "no jobs found";
48         }
49
50         @Override
51         public String findJobForSequence(String sequence, String program, String version) {
52                 List<String> jobs = findJobs(sequence, program, version);
53                 if (null != jobs) {
54                         for (String job : jobs) {
55                                 String link = null;
56                                 ArchivedJob aj = new ArchivedJob(job);
57                                 try {
58                                         link = aj.prepareJobArchiveToWeb();
59                                 } catch (IOException e) {
60                                         log.error("JpredWS.findSequence: IO exception with job archive file");
61                                         log.error(e.getLocalizedMessage(), e.getCause());
62                                 }
63                                 if (null != link) {
64                                         return job;
65                                 }
66                         }
67                         return "";
68                 }
69                 return "";
70         }
71
72         @Override
73         public String getArchive(String jobid) {
74                 String link = "undefined";
75                 ArchivedJob aj = new ArchivedJob(jobid);
76                 try {
77                         link = aj.prepareJobArchiveToWeb();
78                 } catch (IOException e) {
79                         log.error("JpredWS.findSequence: IO exception with job archive file");
80                         log.error(e.getLocalizedMessage(), e.getCause());
81                 }
82                 return link;
83         }
84
85 }