--- dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/tasks/TaskManager.java 2016/02/03 18:45:33 2903 +++ dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/tasks/TaskManager.java 2016/02/05 11:09:02 2928 @@ -8,6 +8,7 @@ import java.util.concurrent.Executors; import dk.daoas.adressevedligehold.tasks.Task.TaskBean; +import dk.daoas.adressevedligehold.tasks.Task.TaskState; public class TaskManager { @@ -54,6 +55,22 @@ executor.shutdownNow(); } + public synchronized void removeTask(Task removeTask) { + if (removeTask.state == TaskState.STATE_QUEUED) { + removeTask.doAbort(); + } + + if (removeTask.state == TaskState.STATE_ABORTED || removeTask.state == TaskState.STATE_DONE || removeTask.state == TaskState.STATE_QUEUED) { + taskIdMap.remove( removeTask.getId() ); + tasks.remove(removeTask); + return; + } + + + throw new RuntimeException("Cant remove task in current state:" + removeTask.state); + + } + public synchronized void submitTask(Task newTask) { int id = getNextTaskid(); newTask.setId(id);