import java.io.File;\r
import java.util.List;\r
\r
-import javax.annotation.Resource;\r
import javax.jws.WebService;\r
-import javax.xml.ws.WebServiceContext;\r
\r
import org.apache.log4j.Logger;\r
\r
import compbio.metadata.WrongParameterException;\r
import compbio.runner.Util;\r
import compbio.runner.msa.ClustalW;\r
-import compbio.util.Timer;\r
-import compbio.ws.client.Services;\r
\r
@WebService(endpointInterface = "compbio.data.msa.MsaWS", targetNamespace = "http://msa.data.compbio/01/01/2010/", serviceName = "ClustalWS")\r
public class ClustalWS implements MsaWS<ClustalW> {\r
\r
- // Ask for resource injection\r
- @Resource\r
- private WebServiceContext wsContext;\r
-\r
private static Logger log = Logger.getLogger(ClustalWS.class);\r
\r
- private static volatile WSLogger logger;\r
-\r
private static final RunnerConfig<ClustalW> clustalOptions = Util\r
.getSupportedOptions(ClustalW.class);\r
\r
private static final LimitsManager<ClustalW> limitMan = compbio.engine.client.Util\r
.getLimits(new ClustalW().getType());\r
\r
- /*\r
- * Initialise the logger. This cannot be done in the constructor as the\r
- * WebServiceContext is not available at the object construction time\r
- */\r
- private WSLogger getLogger() {\r
- if (logger == null) {\r
- synchronized (ClustalWS.class) {\r
- if (logger == null) {\r
- logger = WSLogger.getStatLogger(Services.ClustalWS,\r
- wsContext);\r
- }\r
- }\r
- }\r
- return logger;\r
- }\r
-\r
@Override\r
public String align(List<FastaSequence> sequences)\r
throws JobSubmissionException {\r
\r
WSUtil.validateFastaInput(sequences);\r
ConfiguredExecutable<ClustalW> confClust = init(sequences);\r
- return WSUtil.align(sequences, confClust, getLogger(), "align",\r
- getLimit(""));\r
+ return WSUtil.align(sequences, confClust, log, "align", getLimit(""));\r
}\r
\r
ConfiguredExecutable<ClustalW> init(List<FastaSequence> dataSet)\r
Limit<ClustalW> limit = getLimit(preset.getName());\r
ConfiguredExecutable<ClustalW> confClust = init(sequences);\r
confClust.addParameters(preset.getOptions());\r
- return WSUtil.align(sequences, confClust, getLogger(), "presetAlign",\r
- limit);\r
+ return WSUtil.align(sequences, confClust, log, "presetAlign", limit);\r
}\r
\r
@Override\r
ClustalW.KEY_VALUE_SEPARATOR);\r
confClust.addParameters(params);\r
log.info("Setting parameters: " + params);\r
- return WSUtil.align(sequences, confClust, getLogger(), "customAlign",\r
+ return WSUtil.align(sequences, confClust, log, "customAlign",\r
getLimit(""));\r
}\r
\r
@Override\r
public RunnerConfig<ClustalW> getRunnerOptions() {\r
- Timer timer = Timer.getMilliSecondsTimer();\r
- getLogger().logAll(timer, "getRunnerOptions");\r
return clustalOptions;\r
}\r
\r
@SuppressWarnings("unchecked")\r
@Override\r
public Alignment getResult(String jobId) throws ResultNotAvailableException {\r
- Timer timer = Timer.getMilliSecondsTimer();\r
+\r
WSUtil.validateJobId(jobId);\r
AsyncExecutor asyncEngine = Configurator.getAsyncEngine(jobId);\r
ConfiguredExecutable<ClustalW> clustal = (ConfiguredExecutable<ClustalW>) asyncEngine\r
.getResults(jobId);\r
Alignment al = clustal.getResults();\r
- getLogger().log(timer, "getResults", jobId);\r
+\r
return al;\r
}\r
\r
@Override\r
public Limit<ClustalW> getLimit(String presetName) {\r
- Timer timer = Timer.getMilliSecondsTimer();\r
if (limitMan == null) {\r
// No limit is configured\r
return null;\r
}\r
Limit<ClustalW> limit = limitMan.getLimitByName(presetName);\r
- getLogger().logAll(timer, "getLimit");\r
return limit;\r
}\r
\r
\r
@Override\r
public boolean cancelJob(String jobId) {\r
- Timer timer = Timer.getMilliSecondsTimer();\r
WSUtil.validateJobId(jobId);\r
boolean result = WSUtil.cancelJob(jobId);\r
- getLogger().logFine(timer, "Cancel");\r
return result;\r
}\r
\r
@Override\r
public JobStatus getJobStatus(String jobId) {\r
- Timer timer = Timer.getMilliSecondsTimer();\r
WSUtil.validateJobId(jobId);\r
JobStatus status = WSUtil.getJobStatus(jobId);\r
- getLogger().logFine(timer, "getJobStatus");\r
return status;\r
}\r
\r
@Override\r
public PresetManager<ClustalW> getPresets() {\r
- Timer timer = Timer.getMilliSecondsTimer();\r
- getLogger().logAll(timer, "pullExecStatistics");\r
return clustalPresets;\r
}\r
\r
@Override\r
public ChunkHolder pullExecStatistics(String jobId, long position) {\r
- Timer timer = Timer.getMilliSecondsTimer();\r
+\r
WSUtil.validateJobId(jobId);\r
String file = Configurator.getWorkDirectory(jobId) + File.separator\r
+ ClustalW.getStatFile();\r
ChunkHolder cholder = WSUtil.pullFile(file, position);\r
- getLogger().logFine(timer, "pullExecStatistics");\r
return cholder;\r
}\r
\r