package compbio.ws.jpred;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
import javax.jws.WebService;
import org.apache.log4j.Logger;
+import compbio.beans.ProteinBean;
import compbio.cassandra.CassandraNativeConnector;
import compbio.cassandra.readers.SequenceReader;
+import compbio.engine.archive.ArchivedJob;
@WebService(endpointInterface = "compbio.ws.jpred.Jpred", targetNamespace = "http://server.proteocache.ws", serviceName = "ProteoCacheWS", portName = "ProteoCacheWSPort")
public class JpredWS implements Jpred {
private static Logger log = Logger.getLogger(CassandraNativeConnector.class);
+ String jobid;
- @Override
- public String findSequence(String sequence, String program, String version) {
+ private List<String> findJobs(String sequence, String program, String version) {
CassandraNativeConnector dbconnector = new CassandraNativeConnector();
SequenceReader reader = new SequenceReader();
reader.setSession(dbconnector.getSession());
- log.debug("ProteoCacheWS is connected:\n search for sequence: " + sequence + "\ncalculated wih " + program + " (version; "
+ log.debug("ProteoCacheWS is connected:\n search for sequence: " + sequence + "\ncalculated with " + program + " (version: "
+ version + ")");
- if (null != reader.readProteins(sequence, "whole")) {
- return "The sequence " + sequence + " found. Calculated with " + program + "(" + version + ")";
+ List<String> jobs = new ArrayList<String>();
+ List<ProteinBean> result = reader.readProteins(sequence, "whole");
+ if (null != result) {
+ for (ProteinBean protein : result) {
+ List<String> thejobs = protein.getJobid();
+ jobid = thejobs.get(0);
+ for (String job : thejobs) {
+ jobs.add(job);
+ }
+ }
+ }
+ return jobs;
+ }
+
+ @Override
+ public String findSequence(String sequence, String program, String version) {
+ List<String> jobs = findJobs(sequence, program, version);
+ if (null != jobs) {
+ return jobs.size() + " jobs found";
+ }
+ return "no jobs found";
+ }
+
+ @Override
+ public String findJobForSequence(String sequence, String program, String version) {
+ List<String> jobs = findJobs(sequence, program, version);
+ if (null != jobs) {
+ for (String job : jobs) {
+ String link = null;
+ ArchivedJob aj = new ArchivedJob(job);
+ try {
+ link = aj.prepareJobArchiveToWeb();
+ } catch (IOException e) {
+ log.error("JpredWS.findSequence: IO exception with job archive file");
+ log.error(e.getLocalizedMessage(), e.getCause());
+ }
+ if (null != link) {
+ return job;
+ }
+ }
+ return "";
+ }
+ return "";
+ }
+
+ @Override
+ public String getArchive(String jobid) {
+ String link = "undefined";
+ ArchivedJob aj = new ArchivedJob(jobid);
+ try {
+ link = aj.prepareJobArchiveToWeb();
+ } catch (IOException e) {
+ log.error("JpredWS.findSequence: IO exception with job archive file");
+ log.error(e.getLocalizedMessage(), e.getCause());
}
- return "The sequence " + sequence + " not found";
+ return link;
}
}