X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=server%2Fcompbio%2Fws%2Fjpred%2FJpredWS.java;fp=server%2Fcompbio%2Fws%2Fjpred%2FJpredWS.java;h=9978cc4b5a0e08f3e730c076d1d4d22611900971;hb=e42ffa7fff3b1bcc7b85451ab0914422d36d8324;hp=16e100fee07cb6a14339b9aebc0d8e4c719fd454;hpb=35b37efa6569c5d2c5900f1f2aa69625c609d1d1;p=proteocache.git diff --git a/server/compbio/ws/jpred/JpredWS.java b/server/compbio/ws/jpred/JpredWS.java index 16e100f..9978cc4 100644 --- a/server/compbio/ws/jpred/JpredWS.java +++ b/server/compbio/ws/jpred/JpredWS.java @@ -1,27 +1,85 @@ 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 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 jobs = new ArrayList(); + List result = reader.readProteins(sequence, "whole"); + if (null != result) { + for (ProteinBean protein : result) { + List 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 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 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; } }