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; 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 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 link; } }