X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=server%2Fcompbio%2Fws%2Fjpred%2FJpredWS.java;h=5249280f4fb53465b6bd5abd010e4f735a03de24;hb=d533fe6c1adf9f81009386ce42a9beb6999f7c3c;hp=16e100fee07cb6a14339b9aebc0d8e4c719fd454;hpb=db6ea93133979ad97453a89fac0506b69d104ea6;p=proteocache.git diff --git a/server/compbio/ws/jpred/JpredWS.java b/server/compbio/ws/jpred/JpredWS.java index 16e100f..5249280 100644 --- a/server/compbio/ws/jpred/JpredWS.java +++ b/server/compbio/ws/jpred/JpredWS.java @@ -1,27 +1,95 @@ 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; +/** + * Implementation of the Jpred web service in ProteoCache + * + * @author Alexander Sherstnev + * @author Natasha Sherstneva + * + * @version 1.0 + * @since Jan 2014 + */ @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 = null; + 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"; + // if the archive file is not available null is returned + return link; } }