/**
* This Source Code Form is subject to the terms of the Mozilla Public License,
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under
* the terms of the Healthcare Disclaimer located at http://openmrs.org/license.
*
* Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS
* graphic logo is a trademark of OpenMRS Inc.
*/
package org.openmrs.module.xforms;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openmrs.api.APIException;
import org.openmrs.api.context.Context;
import org.openmrs.scheduler.tasks.AbstractTask;
/**
* This class implements the task which processes forms in the xforms queue.
*
* @author Daniel Kayiwa
* @version 1.0
*/
public class ProcessXformsQueueTask extends AbstractTask {
// Logger
private static Log log = LogFactory.getLog(ProcessXformsQueueTask.class);
// Instance of xforms processor.
private XformsQueueProcessor processor = null;
/**
* Default Constructor (Uses SchedulerConstants.username and
* SchedulerConstants.password
*
*/
public ProcessXformsQueueTask() {
if (processor == null)
processor = new XformsQueueProcessor();
}
/**
* Process the next xform in the queue and then remove the xform from the
* queue.
*/
public void execute() {
Context.openSession();
log.debug("Running xforms queue task... ");
try {
if (Context.isAuthenticated() == false)
authenticate();
processor.processXformsQueue();
} catch (APIException e) {
log.error("Error running xforms queue task", e);
throw e;
} finally {
Context.closeSession();
}
}
/**
* Clean up any resources here
*
*/
public void shutdown() {
processor = null;
super.shutdown();
log.debug("Shutting down ProcessXformsQueue task ...");
}
}