package cz.cuni.mff.d3s.been.web.model; import cz.cuni.mff.d3s.been.api.BeenApi; import cz.cuni.mff.d3s.been.api.BeenApiException; import cz.cuni.mff.d3s.been.core.task.TaskEntry; import cz.cuni.mff.d3s.been.core.task.TaskState; /** * @author donarus */ public final class TaskSupport { private final BeenApi api; public TaskSupport(BeenApi api) { this.api = api; } public void killTask(String taskId) throws BeenApiException, InterruptedException { api.killTask(taskId); int time = 0; TaskEntry entry = api.getTask(taskId); while (time < Timeouts.KILL_TASK_TIMEOUT && entry != null && entry.getState() != TaskState.ABORTED && entry.getState() != TaskState.FINISHED) { Thread.sleep(1000); time++; entry = api.getTask(taskId); } } public void removeKilledTask(String taskId) throws BeenApiException { this.api.removeTaskEntry(taskId); } public boolean isTaskInFinalState(String taskId) throws BeenApiException { TaskEntry taskEntry = this.api.getTask(taskId); TaskState state = taskEntry.getState(); return state == TaskState.ABORTED || state == TaskState.FINISHED; } }