/[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 2928 by torben, Fri Feb 5 11:09:02 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_QUEUED) {
60                            removeTask.doAbort();
61                    }
62                    
63                    if (removeTask.state == TaskState.STATE_ABORTED || removeTask.state == TaskState.STATE_DONE || removeTask.state == TaskState.STATE_QUEUED) {
64                            taskIdMap.remove( removeTask.getId() );
65                            tasks.remove(removeTask);
66                            return;
67                    }
68                    
69                    
70                    throw new RuntimeException("Cant remove task in current state:" + removeTask.state);
71                    
72            }
73            
74            public synchronized void submitTask(Task newTask) {
75                    int id = getNextTaskid();
76                    newTask.setId(id);
77                    
78                  newTask.setManager(this);                  newTask.setManager(this);
79                                    
80                    taskIdMap.put(id, newTask);
81                  tasks.add(newTask);                  tasks.add(newTask);
82                  executor.submit(newTask);                  executor.submit(newTask);
83          }          }
84                    
85            private synchronized int getNextTaskid() {
86                    return nextId++;
87            }
88            
89    
90  }  }

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

  ViewVC Help
Powered by ViewVC 1.1.20