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

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

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

revision 2864 by torben, Thu Jan 28 11:25:01 2016 UTC revision 2993 by torben, Tue Mar 29 19:49:38 2016 UTC
# Line 1  Line 1 
1  package dk.daoas.adressevedligehold.tasks;  package dk.daoas.adressevedligehold.tasks;
2    
3  import dk.daoas.adressevedligehold.util.TimingHelper;  import dk.daoas.adressevedligehold.util.TimingHelper;
   
4  import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;  import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
5    
6  public abstract class Task implements Runnable {  public abstract class Task implements Runnable {
7                    
8            private TaskLogger logger = TaskLogger.getInstance();
9            
10          public enum TaskState {          public enum TaskState {
11                  STATE_QUEUED, STATE_RUNNING, STATE_DONE, STATE_ABORTED;                  STATE_QUEUED, STATE_RUNNING, STATE_DONE, STATE_ABORTED;
12          }          }
13                    
14          @SuppressFBWarnings("URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")//bliver læst via gson - og det forvirrer findbugs          @SuppressFBWarnings("URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")//bliver læst via gson - og det forvirrer findbugs
15          public static class TaskBean {          public static class TaskBean {
16                    public int id;
17                  public String description;                  public String description;
18                  public String detail;                  public String detail;
19                  public String errorMessage;                  public String errorMessage;
# Line 19  public abstract class Task implements Ru Line 21  public abstract class Task implements Ru
21                  public String state;                  public String state;
22          }          }
23                    
24          protected boolean abort = false;          protected volatile boolean abort = false;//mark volatile to make sure value isn't cached by threads
25          protected TaskState state = TaskState.STATE_QUEUED;          protected volatile TaskState state = TaskState.STATE_QUEUED;
26          protected TaskManager manager;          protected TaskManager manager;
27          private String errorMsg;          private String errorMsg;
28                    
29          public void setManager(TaskManager manager) {          private String logMessages;
30            
31            private int id;
32            
33            public final void setManager(TaskManager manager) {
34                  this.manager = manager;                  this.manager = manager;
35          }          }
36                    
37          @Override          @Override
38          public final void run() {          public final void run() {
39                    
40                    if (this.state == TaskState.STATE_ABORTED) {//if this task as cancelled while still in queue  
41                            return;
42                    }
43                    
44                    
45                    
46                    TaskLogger.getInstance().reset();
47                    
48                  TimingHelper timing = new TimingHelper();                  TimingHelper timing = new TimingHelper();
49                  System.out.println("Starting " + this.getDescription() );                  
50                    
51                    logger.info("Starting " + this.getDescription() );
52                                    
53                  this.state = TaskState.STATE_RUNNING;                  this.state = TaskState.STATE_RUNNING;
54                  manager.setCurrentTask(this);                  manager.setCurrentTask(this);
55                                    
56                  try {                  try {
57                          taskRun();                          taskRun();
58                          this.state = TaskState.STATE_DONE;                          
59                            if (this.state != TaskState.STATE_ABORTED) { //just to make sure we wasn't aborted
60                                    this.state = TaskState.STATE_DONE;
61                            }
62                            
63                            
64                  } catch (Exception e) {                  } catch (Exception e) {
65                            logger.warning("Error during taskrun", e);
66                          this.errorMsg = e.getMessage();                          this.errorMsg = e.getMessage();
                         e.printStackTrace();  
67                          this.state = TaskState.STATE_ABORTED;                          this.state = TaskState.STATE_ABORTED;
68                  }                  }
69                                    
70                  manager.setCurrentTask(null);                  manager.setCurrentTask(null);
71                                    
72                  System.out.println("Done " + this.getDescription() + "   " + timing.getElapsed() + "ms");                  logger.info("Done " + this.getDescription() + "   " + timing.getElapsed() + "ms");
73                    
74                    logMessages = TaskLogger.getInstance().getBuffer();
75                    
76                    
77            
78                    
79          }          }
80                    
81            public final String getLog() {
82                    if (this.state == TaskState.STATE_RUNNING) {
83                            return TaskLogger.getInstance().getBuffer(); //if live return current log buffer content
84                    } else {
85                            return logMessages;
86                    }
87            }
88                    
89          public TaskState getState() {          public final void setId(int newId) {
90                    this.id = newId;
91            }
92            
93            public final int getId() {
94                    return this.id;
95            }
96            
97            public final TaskState getState() {
98                  return this.state;                  return this.state;
99          }          }
100                    
101            public boolean isAborted() {
102                    return this.abort;
103            }
104            
105          public void doAbort() {          public void doAbort() {
106                  this.abort = true;                  this.abort = true;
107          }          }
108                    
109            public void doAbort(Exception e) {
110                    this.abort = true;
111                    this.errorMsg = e.getMessage();
112            }
113            
114          public TaskBean getTaskBean() {          public TaskBean getTaskBean() {
115                  TaskBean bean = new TaskBean();                  TaskBean bean = new TaskBean();
116                                    bean.id = this.getId();
117                  bean.description = this.getDescription();                  bean.description = this.getDescription();
118                  bean.detail = this.getDetail();                  bean.detail = this.getDetail();
119                  bean.percentCompleted = this.getPercentCompleted();                  bean.percentCompleted = this.getPercentCompleted();
# Line 75  public abstract class Task implements Ru Line 127  public abstract class Task implements Ru
127                  return this.errorMsg;                  return this.errorMsg;
128          }          }
129                    
130            @Override
131            public int hashCode() {
132                    return this.id;
133            }
134            
135            @Override
136            public boolean equals(Object o) {
137                    if (! (o instanceof Task))
138                            return false;
139                    
140                    Task otherTask = (Task) o;
141                    
142                    return this.getId() == otherTask.getId();
143            }
144            
145          /**          /**
146           * @throws Exception           * @throws Exception
147           *           *
# Line 85  public abstract class Task implements Ru Line 152  public abstract class Task implements Ru
152                    
153          public abstract String getDescription();          public abstract String getDescription();
154          public abstract String getDetail();          public abstract String getDetail();
155          public abstract short getPercentCompleted();          public abstract double getPercentCompleted();
156                    
157  }  }

Legend:
Removed from v.2864  
changed lines
  Added in v.2993

  ViewVC Help
Powered by ViewVC 1.1.20