package org.bbaw.wsp.cms.scheduler;
import java.util.logging.Logger;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobListener;
import de.mpg.mpiwg.berlin.mpdl.exception.ApplicationException;
public class CmsChainSchedulerListener implements JobListener {
private static Logger LOGGER = Logger.getLogger(CmsDocJob.class.getName());
public String getName() {
return "MpdlJobChainingListener";
}
public void jobToBeExecuted(JobExecutionContext inContext) {
}
public void jobExecutionVetoed(JobExecutionContext inContext) {
String message = "Quartz: JobChainingListener: Job execution was vetoed.";
LOGGER.fine(message);
}
public void jobWasExecuted(JobExecutionContext inContext, JobExecutionException inException) {
// after finishing his job it tries to schedule the next operation (if there is one in the queue)
CmsDocOperation docOperation = null;
try {
CmsChainScheduler mpdlChainScheduler = CmsChainScheduler.getInstance();
docOperation = getDocOperation(inContext);
mpdlChainScheduler.finishOperation(docOperation);
} catch (ApplicationException e) {
if (docOperation != null) {
docOperation.setErrorMessage(e.getMessage());
}
LOGGER.severe(e.getMessage());
}
}
private CmsDocOperation getDocOperation(JobExecutionContext context) {
CmsDocOperation docOperation = null;
if (context != null) {
JobDetail job = context.getJobDetail();
JobDataMap parameters = job.getJobDataMap();
docOperation = (CmsDocOperation) parameters.get("operation");
}
return docOperation;
}
}