use of org.olat.core.commons.services.taskexecutor.model.PersistentTask in project openolat by klemens.
the class PersistentTaskDAO method updateTask.
public PersistentTask updateTask(Task task, Serializable runnableTask, Identity modifier, Date scheduledDate) {
PersistentTask ptask = dbInstance.getCurrentEntityManager().find(PersistentTask.class, task.getKey(), LockModeType.PESSIMISTIC_WRITE);
if (ptask != null) {
ptask.setLastModified(new Date());
ptask.setScheduledDate(scheduledDate);
ptask.setStatus(TaskStatus.newTask);
ptask.setStatusBeforeEditStr(null);
ptask.setTask(xstream.toXML(runnableTask));
ptask = dbInstance.getCurrentEntityManager().merge(ptask);
if (modifier != null) {
// add to the list of modifier
PersistentTaskModifier mod = new PersistentTaskModifier();
mod.setCreationDate(new Date());
mod.setModifier(modifier);
mod.setTask(ptask);
dbInstance.getCurrentEntityManager().persist(mod);
}
dbInstance.commit();
}
return ptask;
}
use of org.olat.core.commons.services.taskexecutor.model.PersistentTask in project openolat by klemens.
the class PersistentTaskDAO method pickTaskForRun.
public PersistentTask pickTaskForRun(Long taskKey) {
PersistentTask task = dbInstance.getCurrentEntityManager().find(PersistentTask.class, taskKey, LockModeType.PESSIMISTIC_WRITE);
if (task != null) {
if (TaskStatus.newTask.equals(task.getStatus())) {
task.setStatus(TaskStatus.inWork);
task.setExecutorNode(Integer.toString(WebappHelper.getNodeId()));
task.setExecutorBootId(WebappHelper.getBootId());
task = dbInstance.getCurrentEntityManager().merge(task);
} else if (TaskStatus.inWork.equals(task.getStatus())) {
task.setExecutorNode(Integer.toString(WebappHelper.getNodeId()));
task.setExecutorBootId(WebappHelper.getBootId());
task = dbInstance.getCurrentEntityManager().merge(task);
} else if (TaskStatus.edition.equals(task.getStatus())) {
task = null;
}
}
dbInstance.commit();
return task;
}
use of org.olat.core.commons.services.taskexecutor.model.PersistentTask in project openolat by klemens.
the class PersistentTaskDAO method returnTaskAfterEdition.
public PersistentTask returnTaskAfterEdition(Long taskKey, TaskStatus wishedStatus) {
PersistentTask task = dbInstance.getCurrentEntityManager().find(PersistentTask.class, taskKey, LockModeType.PESSIMISTIC_WRITE);
PersistentTask mtask;
if (TaskStatus.inWork.equals(task.getStatus())) {
// cannot pick
mtask = null;
} else {
if (wishedStatus == null) {
task.setStatusStr(task.getStatusBeforeEditStr());
} else {
task.setStatus(wishedStatus);
}
task.setStatusBeforeEditStr(null);
mtask = dbInstance.getCurrentEntityManager().merge(task);
}
dbInstance.commit();
return mtask;
}
use of org.olat.core.commons.services.taskexecutor.model.PersistentTask in project openolat by klemens.
the class PersistentTaskDAO method createTask.
public PersistentTask createTask(String name, Serializable task, Identity creator, OLATResource resource, String resSubPath, Date scheduledDate) {
PersistentTask ptask = new PersistentTask();
Date currentDate = new Date();
ptask.setCreationDate(currentDate);
ptask.setLastModified(currentDate);
ptask.setScheduledDate(scheduledDate);
ptask.setName(name);
ptask.setCreator(creator);
ptask.setResource(resource);
ptask.setResSubPath(resSubPath);
ptask.setStatus(TaskStatus.newTask);
ptask.setTask(xstream.toXML(task));
dbInstance.getCurrentEntityManager().persist(ptask);
return ptask;
}
use of org.olat.core.commons.services.taskexecutor.model.PersistentTask in project openolat by klemens.
the class TaskExecutorManagerImpl method execute.
@Override
public void execute(Runnable task) {
// wrap call to the task here to catch all errors that are may not catched yet in the task itself
// like outOfMemory or other system errors.
Task persistentTask = null;
if (task instanceof LongRunnable) {
persistentTask = persistentTaskDao.createTask(UUID.randomUUID().toString(), (LongRunnable) task);
dbInstance.commit();
} else {
execute(task, persistentTask, (task instanceof Sequential));
}
}
Aggregations