package compbio.ws.server; import java.io.File; import java.util.List; import javax.annotation.Resource; import javax.jws.WebService; import javax.xml.ws.WebServiceContext; import org.apache.log4j.Logger; import compbio.conservation.Method; import compbio.data.msa.Annotation; import compbio.data.sequence.FastaSequence; import compbio.data.sequence.JalviewAnnotation; import compbio.data.sequence.MultiAnnotatedSequence; import compbio.engine.AsyncExecutor; import compbio.engine.Configurator; import compbio.engine.client.ConfiguredExecutable; import compbio.metadata.ChunkHolder; import compbio.metadata.JobStatus; import compbio.metadata.JobSubmissionException; import compbio.metadata.Limit; import compbio.metadata.LimitExceededException; import compbio.metadata.LimitsManager; import compbio.metadata.Option; import compbio.metadata.Preset; import compbio.metadata.PresetManager; import compbio.metadata.ResultNotAvailableException; import compbio.metadata.RunnerConfig; import compbio.metadata.UnsupportedRuntimeException; import compbio.metadata.WrongParameterException; import compbio.runner.Util; import compbio.runner.conservation.AACon; @WebService(endpointInterface = "compbio.data.msa.MsaWS", targetNamespace = "http://msa.data.compbio/01/01/2010/", serviceName = "MuscleWS") public class AAConWS implements Annotation { // Ask for resource injection @Resource WebServiceContext wsContext; private static Logger statLog = Logger.getLogger("AAConWS-stats"); private static Logger log = Logger.getLogger(AAConWS.class); private static final RunnerConfig aaconOptions = Util .getSupportedOptions(AACon.class); private static final PresetManager aaconPresets = Util .getPresets(AACon.class); ConfiguredExecutable init(List sequences) throws JobSubmissionException { AACon aacon = new AACon(); aacon.setInput("fasta.in").setOutput("fasta.out"); return Configurator.configureExecutable(aacon, sequences); } @SuppressWarnings("unchecked") public MultiAnnotatedSequence getResult(String jobId) throws ResultNotAvailableException { WSUtil.validateJobId(jobId); AsyncExecutor asyncEngine = Configurator.getAsyncEngine(jobId); ConfiguredExecutable aacon = (ConfiguredExecutable) asyncEngine .getResults(jobId); MultiAnnotatedSequence mas = aacon.getResults(); // log(jobId, "getResults"); return mas; } @SuppressWarnings("unchecked") public JalviewAnnotation getJalviewAnnotation(String jobId) throws ResultNotAvailableException { MultiAnnotatedSequence result = getResult(jobId); // log(jobId, "getResults"); return result.toJalviewAnnotation(); } public Limit getLimit(String presetName) { return new AACon().getLimit(presetName); } public LimitsManager getLimits() { return new AACon().getLimits(); } public ChunkHolder pullExecStatistics(String jobId, long position) { WSUtil.validateJobId(jobId); String file = Configurator.getWorkDirectory(jobId) + File.separator + AACon.getStatFile(); return WSUtil.pullFile(file, position); } public boolean cancelJob(String jobId) { WSUtil.validateJobId(jobId); return WSUtil.cancelJob(jobId); } public JobStatus getJobStatus(String jobId) { WSUtil.validateJobId(jobId); return WSUtil.getJobStatus(jobId); } public PresetManager getPresets() { return aaconPresets; } public RunnerConfig getRunnerOptions() { return aaconOptions; } @Override public String analize(List sequences) throws UnsupportedRuntimeException, LimitExceededException, JobSubmissionException { // TODO Auto-generated method stub return null; } @Override public String customAnalize(List sequences, List> options) throws UnsupportedRuntimeException, LimitExceededException, JobSubmissionException, WrongParameterException { // TODO Auto-generated method stub return null; } @Override public String presetAnalize(List sequences, Preset preset) throws UnsupportedRuntimeException, LimitExceededException, JobSubmissionException, WrongParameterException { // TODO Auto-generated method stub return null; } }