package org.akaza.openclinica.job;
import org.quartz.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@PersistJobDataAfterExecution
@DisallowConcurrentExecution
public class XsltStatefulJob extends XsltTransformJob implements InterruptableJob {
private static final Logger LOG = LoggerFactory.getLogger(XsltStatefulJob.class);
protected JobTerminationMonitor jobTerminationMonitor;
public XsltStatefulJob() {
super();
}
@Override
protected void executeInternal(JobExecutionContext context) {
jobTerminationMonitor = JobTerminationMonitor.createInstance(context.getJobDetail().getDescription());
super.executeInternal(context);
}
@Override
public void interrupt() throws UnableToInterruptJobException {
if (jobTerminationMonitor != null) {
LOG.info("Received cancellation request for job " + jobTerminationMonitor.getJobName());
jobTerminationMonitor.terminate();
}
}
}