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.JobReader; 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; 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 with " + program + " (version: " + 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 int findSequence(String sequence, String program, String version) { List jobs = findJobs(sequence, program, version); if (null != jobs) { return jobs.size(); } return 0; } @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()); } // if the archive file is not available null is returned return link; } @Override public int jobExists(String jobid) { CassandraNativeConnector dbconnector = new CassandraNativeConnector(); JobReader reader = new JobReader(); reader.setSession(dbconnector.getSession()); if (null != reader.readJobLog(jobid)) { return 1; } return 0; } }