X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=webservices%2Fcompbio%2Fws%2Fserver%2FMafftWS.java;h=f293ae79d154209d638e330d86b4379e7e8d32d8;hb=da8c820a7fb2edecb190589f3dc9c362e57a2f24;hp=cdb159c5a7f9f6609dac6479274c83ac96684dde;hpb=535359a3d592ee41bda72e7356f0181f6cee9d07;p=jabaws.git diff --git a/webservices/compbio/ws/server/MafftWS.java b/webservices/compbio/ws/server/MafftWS.java index cdb159c..f293ae7 100644 --- a/webservices/compbio/ws/server/MafftWS.java +++ b/webservices/compbio/ws/server/MafftWS.java @@ -1,6 +1,6 @@ -/* Copyright (c) 2009 Peter Troshin +/* Copyright (c) 2011 Peter Troshin * - * JAva Bioinformatics Analysis Web Services (JABAWS) @version: 1.0 + * JAva Bioinformatics Analysis Web Services (JABAWS) @version: 2.0 * * This library is free software; you can redistribute it and/or modify it under the terms of the * Apache License version 2 as published by the Apache Software Foundation @@ -21,18 +21,18 @@ 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.data.msa.JABAService; import compbio.data.msa.MsaWS; import compbio.data.sequence.Alignment; import compbio.data.sequence.FastaSequence; import compbio.engine.AsyncExecutor; import compbio.engine.Configurator; import compbio.engine.client.ConfiguredExecutable; +import compbio.engine.client.SkeletalExecutable; import compbio.metadata.ChunkHolder; import compbio.metadata.JobStatus; import compbio.metadata.JobSubmissionException; @@ -47,119 +47,122 @@ import compbio.metadata.WrongParameterException; import compbio.runner.Util; import compbio.runner.msa.Mafft; -@WebService(endpointInterface = "compbio.data.msa.MsaWS", targetNamespace = "http://msa.data.compbio/01/01/2010/", serviceName = "MafftWS") +@WebService(endpointInterface = "compbio.data.msa.MsaWS", targetNamespace = JABAService.SERVICE_NAMESPACE, serviceName = "MafftWS") public class MafftWS implements MsaWS { - // Ask for resource injection - @Resource - WebServiceContext wsContext; - - private static Logger statLog = Logger.getLogger("MafftWS-stats"); - - private static Logger log = Logger.getLogger(MafftWS.class); - - private static final RunnerConfig mafftOptions = Util - .getSupportedOptions(Mafft.class); - - private static final PresetManager mafftPresets = Util - .getPresets(Mafft.class); - - @Override - public String align(List sequences) - throws JobSubmissionException { - WSUtil.validateFastaInput(sequences); - ConfiguredExecutable confMafft = init(sequences); - return WSUtil.align(sequences, confMafft, null, "align", getLimit("")); - } - - ConfiguredExecutable init(List dataSet) - throws JobSubmissionException { - Mafft mafft = new Mafft(); - mafft.setInput("fasta.in").setOutput("fasta.out"); - return Configurator.configureExecutable(mafft, dataSet); - } - - @Override - public String customAlign(List sequences, - List> options) throws JobSubmissionException, - WrongParameterException { - WSUtil.validateFastaInput(sequences); - ConfiguredExecutable confMafft = init(sequences); - List params = WSUtil.getCommands(options, - Mafft.KEY_VALUE_SEPARATOR); - log.info("Setting parameters: " + params); - confMafft.addParameters(params); - return WSUtil.align(sequences, confMafft, null, "customAlign", - getLimit("")); - } - - @Override - public String presetAlign(List sequences, - Preset preset) throws JobSubmissionException, - WrongParameterException { - WSUtil.validateFastaInput(sequences); - if (preset == null) { - throw new WrongParameterException("Preset must be provided!"); + private static Logger log = Logger.getLogger(MafftWS.class); + + private static final RunnerConfig mafftOptions = Util + .getSupportedOptions(Mafft.class); + + private static final PresetManager mafftPresets = Util + .getPresets(Mafft.class); + + private static final LimitsManager limitMan = compbio.engine.client.Util + .getLimits(new Mafft().getType()); + + @Override + public String align(List sequences) + throws JobSubmissionException { + WSUtil.validateFastaInput(sequences); + ConfiguredExecutable confMafft = init(sequences); + return WSUtil.align(sequences, confMafft, log, "align", getLimit("")); + } + + ConfiguredExecutable init(List dataSet) + throws JobSubmissionException { + Mafft mafft = new Mafft(); + mafft.setInput(SkeletalExecutable.INPUT) + .setOutput(SkeletalExecutable.OUTPUT) + .setError(SkeletalExecutable.ERROR); + return Configurator.configureExecutable(mafft, dataSet); + } + + @Override + public String customAlign(List sequences, + List> options) throws JobSubmissionException, + WrongParameterException { + WSUtil.validateFastaInput(sequences); + ConfiguredExecutable confMafft = init(sequences); + List params = WSUtil.getCommands(options, + Mafft.KEY_VALUE_SEPARATOR); + log.info("Setting parameters: " + params); + confMafft.addParameters(params); + return WSUtil.align(sequences, confMafft, log, "customAlign", + getLimit("")); + } + + @Override + public String presetAlign(List sequences, + Preset preset) throws JobSubmissionException, + WrongParameterException { + WSUtil.validateFastaInput(sequences); + if (preset == null) { + throw new WrongParameterException("Preset must be provided!"); + } + ConfiguredExecutable confMafft = init(sequences); + confMafft.addParameters(preset.getOptions()); + // This will return default limit if a specific the limit for a + // particular preset is not found + Limit limit = getLimit(preset.getName()); + + return WSUtil.align(sequences, confMafft, log, "presetAlign", limit); + } + + @SuppressWarnings("unchecked") + @Override + public Alignment getResult(String jobId) throws ResultNotAvailableException { + WSUtil.validateJobId(jobId); + AsyncExecutor asyncEngine = Configurator.getAsyncEngine(jobId); + ConfiguredExecutable mafft = (ConfiguredExecutable) asyncEngine + .getResults(jobId); + Alignment al = mafft.getResults(); + // log(jobId, "getResults"); + return al; + } + + @Override + public Limit getLimit(String presetName) { + if (limitMan == null) { + // Limit is not defined + return null; + } + return limitMan.getLimitByName(presetName); + } + + @Override + public LimitsManager getLimits() { + return limitMan; + } + + @Override + public ChunkHolder pullExecStatistics(String jobId, long position) { + WSUtil.validateJobId(jobId); + String file = Configurator.getWorkDirectory(jobId) + File.separator + + new Mafft().getError(); + return WSUtil.pullFile(file, position); + } + + @Override + public boolean cancelJob(String jobId) { + WSUtil.validateJobId(jobId); + return WSUtil.cancelJob(jobId); + } + + @Override + public JobStatus getJobStatus(String jobId) { + WSUtil.validateJobId(jobId); + return WSUtil.getJobStatus(jobId); + } + + @Override + public PresetManager getPresets() { + return mafftPresets; + } + + @Override + public RunnerConfig getRunnerOptions() { + return mafftOptions; } - ConfiguredExecutable confMafft = init(sequences); - confMafft.addParameters(preset.getOptions()); - // This will return default limit if a specific the limit for a - // particular preset is not found - Limit limit = getLimit(preset.getName()); - - return WSUtil.align(sequences, confMafft, null, "presetAlign", limit); - } - - @SuppressWarnings("unchecked") - @Override - public Alignment getResult(String jobId) throws ResultNotAvailableException { - WSUtil.validateJobId(jobId); - AsyncExecutor asyncEngine = Configurator.getAsyncEngine(jobId); - ConfiguredExecutable mafft = (ConfiguredExecutable) asyncEngine - .getResults(jobId); - Alignment al = mafft.getResults(); - //log(jobId, "getResults"); - return al; - } - - @Override - public Limit getLimit(String presetName) { - return new Mafft().getLimit(presetName); - } - - @Override - public LimitsManager getLimits() { - return new Mafft().getLimits(); - } - - @Override - public ChunkHolder pullExecStatistics(String jobId, long position) { - WSUtil.validateJobId(jobId); - String file = Configurator.getWorkDirectory(jobId) + File.separator - + new Mafft().getError(); - return WSUtil.pullFile(file, position); - } - - @Override - public boolean cancelJob(String jobId) { - WSUtil.validateJobId(jobId); - return WSUtil.cancelJob(jobId); - } - - @Override - public JobStatus getJobStatus(String jobId) { - WSUtil.validateJobId(jobId); - return WSUtil.getJobStatus(jobId); - } - - @Override - public PresetManager getPresets() { - return mafftPresets; - } - - @Override - public RunnerConfig getRunnerOptions() { - return mafftOptions; - } }