/[projects]/dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/tasks/TaskManager.java
ViewVC logotype

Diff of /dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/tasks/TaskManager.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2838 by torben, Sun Jan 24 21:48:55 2016 UTC revision 2918 by torben, Thu Feb 4 14:40:36 2016 UTC
# Line 2  package dk.daoas.adressevedligehold.task Line 2  package dk.daoas.adressevedligehold.task
2    
3  import java.util.ArrayList;  import java.util.ArrayList;
4  import java.util.Collections;  import java.util.Collections;
5    import java.util.HashMap;
6  import java.util.List;  import java.util.List;
7  import java.util.concurrent.ExecutorService;  import java.util.concurrent.ExecutorService;
8  import java.util.concurrent.Executors;  import java.util.concurrent.Executors;
9    
10  import dk.daoas.adressevedligehold.tasks.Task.TaskBean;  import dk.daoas.adressevedligehold.tasks.Task.TaskBean;
11    import dk.daoas.adressevedligehold.tasks.Task.TaskState;
12    
13  public class TaskManager {  public class TaskManager {
14                    
15          public static final String TASKMANAGER = "TASKMANAGER";          public static final String TASKMANAGER = "TASKMANAGER";
16                    
17          ExecutorService executor = Executors.newFixedThreadPool(1);          ExecutorService executor = Executors.newFixedThreadPool(1);
18            
19            private int nextId = 1;
20    
21                    
22          private ArrayList<Task> tasks = new ArrayList<Task>();          private ArrayList<Task> tasks = new ArrayList<Task>();
23            private HashMap<Integer, Task> taskIdMap = new HashMap<Integer,Task>();
24    
25          private Task currentTask;          private Task currentTask;
26                    
27          public List<TaskBean> getTasks() {          public synchronized List<TaskBean> getTasks() {
28                  ArrayList<TaskBean> tmpList = new ArrayList<TaskBean>();                  ArrayList<TaskBean> tmpList = new ArrayList<TaskBean>();
29                  for (Task t : tasks) {                  for (Task t : tasks) {
30                          tmpList.add( t.getTaskBean() );                          tmpList.add( t.getTaskBean() );
# Line 38  public class TaskManager { Line 43  public class TaskManager {
43                  return this.currentTask;                  return this.currentTask;
44          }          }
45                    
46            public Task getTaskById(int id) {
47                    return taskIdMap.get(id);
48            }
49            
50          void shutDown() {          void shutDown() {
51                  if (currentTask != null) {                  if (currentTask != null) {
52                          currentTask.doAbort();                            currentTask.doAbort();  
# Line 46  public class TaskManager { Line 55  public class TaskManager {
55                  executor.shutdownNow();                  executor.shutdownNow();
56          }          }
57                    
58          public void submitTask(Task newTask) {          public synchronized void removeTask(Task removeTask) {
59                    if (removeTask.state == TaskState.STATE_ABORTED || removeTask.state == TaskState.STATE_DONE) {
60                            taskIdMap.remove( removeTask.getId() );
61                            tasks.remove(removeTask);
62                    } else {
63                            throw new RuntimeException("Cant remove task in current state:" + removeTask.state);
64                    }
65            }
66            
67            public synchronized void submitTask(Task newTask) {
68                    int id = getNextTaskid();
69                    newTask.setId(id);
70                    
71                  newTask.setManager(this);                  newTask.setManager(this);
72                                    
73                    taskIdMap.put(id, newTask);
74                  tasks.add(newTask);                  tasks.add(newTask);
75                  executor.submit(newTask);                  executor.submit(newTask);
76          }          }
77                    
78            private synchronized int getNextTaskid() {
79                    return nextId++;
80            }
81            
82    
83  }  }

Legend:
Removed from v.2838  
changed lines
  Added in v.2918

  ViewVC Help
Powered by ViewVC 1.1.20