package compbio.ws.server; import java.io.File; import java.util.List; import javax.jws.WebParam; import javax.jws.WebService; import org.apache.log4j.Logger; import compbio.data.msa.JABAService; import compbio.data.msa.JManagement; import compbio.data.msa.Metadata; 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; import compbio.metadata.Limit; 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.WrongParameterException; import compbio.runner.Util; import compbio.runner.msa.ClustalW; import compbio.runner.structure.RNAalifold; @WebService(targetNamespace = JABAService.SERVICE_NAMESPACE, serviceName = "RNAalifoldWS") public class RNAalifoldWS implements JABAService, JManagement, Metadata { private static Logger log = Logger.getLogger(ClustalWS.class); private static final RunnerConfig rnaalifoldOptions = Util. getSupportedOptions(RNAalifold.class); private static final PresetManager rnaalifoldPresets = Util .getPresets(RNAalifold.class); private static final LimitsManager limitMan = compbio.engine.client.Util .getLimits(new RNAalifold().getType()); //public String fold() ConfiguredExecutable init() throws JobSubmissionException { RNAalifold rnaalifold = new RNAalifold(); rnaalifold.setInput(SkeletalExecutable.INPUT) .setOutput(SkeletalExecutable.OUTPUT) .setError(SkeletalExecutable.ERROR); ConfiguredExecutable confRNAalifold = Configurator .configureExecutable(rnaalifold); return confRNAalifold; } @Override public RunnerConfig getRunnerOptions() { return rnaalifoldOptions; } @SuppressWarnings("unchecked") public String getResult(@WebParam(name = "jobId") String jobId) throws ResultNotAvailableException { WSUtil.validateJobId(jobId); AsyncExecutor asyncEngine = Configurator.getAsyncEngine(jobId); ConfiguredExecutable rnaalifold = (ConfiguredExecutable) asyncEngine .getResults(jobId); return rnaalifold.getResults(); } @Override public boolean cancelJob(String jobId) { WSUtil.validateJobId(jobId); boolean result = WSUtil.cancelJob(jobId); return result; } @Override public JobStatus getJobStatus(String jobId) { WSUtil.validateJobId(jobId); JobStatus status = WSUtil.getJobStatus(jobId); return status; } @Override public Limit getLimit(String presetName) { if (limitMan == null) { // No limit is configured return null; } Limit limit = limitMan.getLimitByName(presetName); return limit; } @Override public LimitsManager getLimits() { return limitMan; } @Override // PlaceHolder public PresetManager getPresets() { if (rnaalifoldPresets == null) { // No presets are configured return null; } return rnaalifoldPresets; } @Override // PlaceHolder public ChunkHolder pullExecStatistics(String jobId, long position) { // WSUtil.validateJobId(jobId); // String file = Configurator.getWorkDirectory(jobId) + File.separator // + RNAalifold.getStatFile(); // ChunkHolder cholder = WSUtil.pullFile(file, position); // return cholder; return new ChunkHolder("", -1); } }