/[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 2915 by torben, Thu Feb 4 09:22:05 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                    TaskLogger.getInstance().reset();
41                    
42                  TimingHelper timing = new TimingHelper();                  TimingHelper timing = new TimingHelper();
43                  System.out.println("Starting " + this.getDescription() );                  
44                    
45                    logger.info("Starting " + this.getDescription() );
46                                    
47                  this.state = TaskState.STATE_RUNNING;                  this.state = TaskState.STATE_RUNNING;
48                  manager.setCurrentTask(this);                  manager.setCurrentTask(this);
49                                    
50                  try {                  try {
51                          taskRun();                          taskRun();
52                          this.state = TaskState.STATE_DONE;                          
53                            if (this.state != TaskState.STATE_ABORTED) { //just to make sure we wasn't aborted
54                                    this.state = TaskState.STATE_DONE;
55                            }
56                            
57                            
58                  } catch (Exception e) {                  } catch (Exception e) {
59                          this.errorMsg = e.getMessage();                          this.errorMsg = e.getMessage();
60                          e.printStackTrace();                          e.printStackTrace();
# Line 47  public abstract class Task implements Ru Line 63  public abstract class Task implements Ru
63                                    
64                  manager.setCurrentTask(null);                  manager.setCurrentTask(null);
65                                    
66                  System.out.println("Done " + this.getDescription() + "   " + timing.getElapsed() + "ms");                  logger.info("Done " + this.getDescription() + "   " + timing.getElapsed() + "ms");
67                    
68                    logMessages = TaskLogger.getInstance().getBuffer();
69          }          }
70                    
71            public final String getLog() {
72                    if (this.state == TaskState.STATE_RUNNING) {
73                            return TaskLogger.getInstance().getBuffer(); //if live return current log buffer content
74                    } else {
75                            return logMessages;
76                    }
77            }
78                    
79          public TaskState getState() {          public final void setId(int newId) {
80                    this.id = newId;
81            }
82            
83            public final int getId() {
84                    return this.id;
85            }
86            
87            public final TaskState getState() {
88                  return this.state;                  return this.state;
89          }          }
90                    
91            public boolean isAborted() {
92                    return this.abort;
93            }
94            
95          public void doAbort() {          public void doAbort() {
96                  this.abort = true;                  this.abort = true;
97          }          }
98                    
99          public TaskBean getTaskBean() {          public TaskBean getTaskBean() {
100                  TaskBean bean = new TaskBean();                  TaskBean bean = new TaskBean();
101                                    bean.id = this.getId();
102                  bean.description = this.getDescription();                  bean.description = this.getDescription();
103                  bean.detail = this.getDetail();                  bean.detail = this.getDetail();
104                  bean.percentCompleted = this.getPercentCompleted();                  bean.percentCompleted = this.getPercentCompleted();
# Line 85  public abstract class Task implements Ru Line 122  public abstract class Task implements Ru
122                    
123          public abstract String getDescription();          public abstract String getDescription();
124          public abstract String getDetail();          public abstract String getDetail();
125          public abstract short getPercentCompleted();          public abstract double getPercentCompleted();
126                    
127  }  }

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

  ViewVC Help
Powered by ViewVC 1.1.20