/**
* The contents of this file are subject to the OpenMRS Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://license.openmrs.org
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations
* under the License.
*
* Copyright (C) OpenMRS, LLC. All Rights Reserved.
*/
package org.openmrs.scheduler.tasks;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openmrs.api.context.Daemon;
import org.openmrs.scheduler.Task;
import org.openmrs.scheduler.TaskDefinition;
/**
* Base class for all other task classes.
*/
public abstract class AbstractTask implements Task {
// Logger
private static final Log log = LogFactory.getLog(AbstractTask.class);
// Indicates whether the task is currently running
protected boolean isExecuting = false;
// The task definition of the running task
protected TaskDefinition taskDefinition;
/**
* Default constructor
*/
protected AbstractTask() {
}
/**
* Constructor
*
* @param taskDefinition the task definition
*/
protected AbstractTask(TaskDefinition taskDefinition) {
log.debug("Initializing " + taskDefinition.getName());
initialize(taskDefinition);
}
/**
* @see org.openmrs.scheduler.Task#execute()
*/
public abstract void execute();
/**
* @see org.openmrs.scheduler.Task#isExecuting()
*/
public boolean isExecuting() {
return isExecuting;
}
/**
* @see org.openmrs.scheduler.Task#initialize(TaskDefinition)
*/
public void initialize(final TaskDefinition definition) {
this.taskDefinition = definition;
}
/**
* @see org.openmrs.scheduler.Task#getTaskDefinition()
*/
public TaskDefinition getTaskDefinition() {
return this.taskDefinition;
}
/**
* @see org.openmrs.scheduler.Task#shutdown()
*/
public void shutdown() {
taskDefinition = null;
}
/**
* Callback method that tells the task that it has started executing.
*/
public void startExecuting() {
this.isExecuting = true;
}
/**
* Callback method that tells the task that it has stopped executing.
*/
public void stopExecuting() {
this.isExecuting = false;
}
/**
* @deprecated this method is not used anymore. All threads are run as the {@link Daemon} user
*/
@Deprecated
protected void authenticate() {
// do nothing
}
}