Add documentation to the classes
[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 /**
17  * Implementation of the Jpred web service in ProteoCache
18  * 
19  * @author Alexander Sherstnev
20  * @author Natasha Sherstneva
21  * 
22  * @version 1.0
23  * @since Jan 2014
24  */
25 @WebService(endpointInterface = "compbio.ws.jpred.Jpred", targetNamespace = "http://server.proteocache.ws", serviceName = "ProteoCacheWS", portName = "ProteoCacheWSPort")
26 public class JpredWS implements Jpred {
27         private static Logger log = Logger.getLogger(CassandraNativeConnector.class);
28         String jobid;
29
30         private List<String> findJobs(String sequence, String program, String version) {
31                 CassandraNativeConnector dbconnector = new CassandraNativeConnector();
32                 SequenceReader reader = new SequenceReader();
33                 reader.setSession(dbconnector.getSession());
34                 log.debug("ProteoCacheWS is connected:\n search for sequence: " + sequence + "\ncalculated with  " + program + " (version: "
35                                 + version + ")");
36                 List<String> jobs = new ArrayList<String>();
37                 List<ProteinBean> result = reader.readProteins(sequence, "whole");
38                 if (null != result) {
39                         for (ProteinBean protein : result) {
40                                 List<String> thejobs = protein.getJobid();
41                                 jobid = thejobs.get(0);
42                                 for (String job : thejobs) {
43                                         jobs.add(job);
44                                 }
45                         }
46                 }
47                 return jobs;
48         }
49
50         @Override
51         public String findSequence(String sequence, String program, String version) {
52                 List<String> jobs = findJobs(sequence, program, version);
53                 if (null != jobs) {
54                         return jobs.size() + " jobs found";
55                 }
56                 return "no jobs found";
57         }
58
59         @Override
60         public String findJobForSequence(String sequence, String program, String version) {
61                 List<String> jobs = findJobs(sequence, program, version);
62                 if (null != jobs) {
63                         for (String job : jobs) {
64                                 String link = null;
65                                 ArchivedJob aj = new ArchivedJob(job);
66                                 try {
67                                         link = aj.prepareJobArchiveToWeb();
68                                 } catch (IOException e) {
69                                         log.error("JpredWS.findSequence: IO exception with job archive file");
70                                         log.error(e.getLocalizedMessage(), e.getCause());
71                                 }
72                                 if (null != link) {
73                                         return job;
74                                 }
75                         }
76                         return "";
77                 }
78                 return "";
79         }
80
81         @Override
82         public String getArchive(String jobid) {
83                 String link = null;
84                 ArchivedJob aj = new ArchivedJob(jobid);
85                 try {
86                         link = aj.prepareJobArchiveToWeb();
87                 } catch (IOException e) {
88                         log.error("JpredWS.findSequence: IO exception with job archive file");
89                         log.error(e.getLocalizedMessage(), e.getCause());
90                 }
91                 // if the archive file is not available null is returned
92                 return link;
93         }
94
95 }