Search in sources :

Example 31 with PersistentTask

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;
}
Also used : PersistentTask(org.olat.core.commons.services.taskexecutor.model.PersistentTask) Date(java.util.Date) PersistentTaskModifier(org.olat.core.commons.services.taskexecutor.model.PersistentTaskModifier)

Example 32 with PersistentTask

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;
}
Also used : PersistentTask(org.olat.core.commons.services.taskexecutor.model.PersistentTask)

Example 33 with PersistentTask

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;
}
Also used : PersistentTask(org.olat.core.commons.services.taskexecutor.model.PersistentTask)

Example 34 with PersistentTask

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;
}
Also used : PersistentTask(org.olat.core.commons.services.taskexecutor.model.PersistentTask) Date(java.util.Date)

Example 35 with PersistentTask

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));
    }
}
Also used : LongRunnable(org.olat.core.commons.services.taskexecutor.LongRunnable) Task(org.olat.core.commons.services.taskexecutor.Task) PersistentTask(org.olat.core.commons.services.taskexecutor.model.PersistentTask) Sequential(org.olat.core.commons.services.taskexecutor.Sequential)

Aggregations

PersistentTask (org.olat.core.commons.services.taskexecutor.model.PersistentTask)56 Test (org.junit.Test)36 Identity (org.olat.core.id.Identity)24 RepositoryEntry (org.olat.repository.RepositoryEntry)24 Date (java.util.Date)14 LongRunnable (org.olat.core.commons.services.taskexecutor.LongRunnable)4 Sequential (org.olat.core.commons.services.taskexecutor.Sequential)4 EntityNotFoundException (javax.persistence.EntityNotFoundException)2 Task (org.olat.core.commons.services.taskexecutor.Task)2 TaskAwareRunnable (org.olat.core.commons.services.taskexecutor.TaskAwareRunnable)2 DBSecureRunnable (org.olat.core.commons.services.taskexecutor.model.DBSecureRunnable)2 PersistentTaskModifier (org.olat.core.commons.services.taskexecutor.model.PersistentTaskModifier)2 PersistentTaskRunnable (org.olat.core.commons.services.taskexecutor.model.PersistentTaskRunnable)2 AssertException (org.olat.core.logging.AssertException)2 SchedulerException (org.quartz.SchedulerException)2