--- dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/tasks/TaskManager.java 2016/02/03 15:13:55 2902 +++ dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/tasks/TaskManager.java 2016/02/03 18:45:33 2903 @@ -2,6 +2,7 @@ import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -13,13 +14,16 @@ public static final String TASKMANAGER = "TASKMANAGER"; ExecutorService executor = Executors.newFixedThreadPool(1); + + private int nextId = 1; private ArrayList tasks = new ArrayList(); + private HashMap taskIdMap = new HashMap(); private Task currentTask; - public List getTasks() { + public synchronized List getTasks() { ArrayList tmpList = new ArrayList(); for (Task t : tasks) { tmpList.add( t.getTaskBean() ); @@ -38,6 +42,10 @@ return this.currentTask; } + public Task getTaskById(int id) { + return taskIdMap.get(id); + } + void shutDown() { if (currentTask != null) { currentTask.doAbort(); @@ -46,12 +54,20 @@ executor.shutdownNow(); } - public void submitTask(Task newTask) { + public synchronized void submitTask(Task newTask) { + int id = getNextTaskid(); + newTask.setId(id); + newTask.setManager(this); + taskIdMap.put(id, newTask); tasks.add(newTask); executor.submit(newTask); } + private synchronized int getNextTaskid() { + return nextId++; + } + }