/[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 2838 by torben, Sun Jan 24 21:48:55 2016 UTC revision 2903 by torben, Wed Feb 3 18:45:33 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;
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
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;
20                  public double percentCompleted;                  public double percentCompleted;
21                  public String state;                  public String state;
22          }          }
# Line 18  public abstract class Task implements Ru Line 24  public abstract class Task implements Ru
24          protected boolean abort = false;          protected boolean abort = false;
25          protected TaskState state = TaskState.STATE_QUEUED;          protected TaskState state = TaskState.STATE_QUEUED;
26          protected TaskManager manager;          protected TaskManager manager;
27            private String errorMsg;
28            
29            private String logMessages;
30            
31            private int id;
32                    
33          public void setManager(TaskManager manager) {          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);
# Line 35  public abstract class Task implements Ru Line 51  public abstract class Task implements Ru
51                          taskRun();                          taskRun();
52                          this.state = TaskState.STATE_DONE;                          this.state = TaskState.STATE_DONE;
53                  } catch (Exception e) {                  } catch (Exception e) {
54                            this.errorMsg = e.getMessage();
55                            e.printStackTrace();
56                          this.state = TaskState.STATE_ABORTED;                          this.state = TaskState.STATE_ABORTED;
57                  }                  }
58                                    
59                  manager.setCurrentTask(null);                  manager.setCurrentTask(null);
60                                    
61                  System.out.println("Done " + this.getDescription() + "   " + timing.getElapsed() + "ms");                  logger.info("Done " + this.getDescription() + "   " + timing.getElapsed() + "ms");
62                    
63                    logMessages = TaskLogger.getInstance().getBuffer();
64          }          }
65                    
66            public final String getLog() {
67                    if (this.state == TaskState.STATE_RUNNING) {
68                            return TaskLogger.getInstance().getBuffer(); //if live return current log buffer content
69                    } else {
70                            return logMessages;
71                    }
72            }
73                    
74          public TaskState getState() {          public final void setId(int newId) {
75                    this.id = newId;
76            }
77            
78            public final int getId() {
79                    return this.id;
80            }
81            
82            public final TaskState getState() {
83                  return this.state;                  return this.state;
84          }          }
85                    
86            public boolean isAborted() {
87                    return this.abort;
88            }
89            
90          public void doAbort() {          public void doAbort() {
91                  this.abort = true;                  this.abort = true;
92          }          }
93                    
94          public TaskBean getTaskBean() {          public TaskBean getTaskBean() {
95                  TaskBean bean = new TaskBean();                  TaskBean bean = new TaskBean();
96                                    bean.id = this.getId();
97                  bean.description = this.getDescription();                  bean.description = this.getDescription();
98                  bean.detail = this.getDetail();                  bean.detail = this.getDetail();
99                  bean.percentCompleted = this.getPercentCompleted();                  bean.percentCompleted = this.getPercentCompleted();
100                  bean.state = this.state.toString();                  bean.state = this.state.toString();
101                    bean.errorMessage = this.getErrorMessage();
102                                    
103                  return bean;                  return bean;
104          }          }
105                    
106          protected abstract void taskRun();          public String getErrorMessage() {
107                    return this.errorMsg;
108            }
109            
110            /**
111             * @throws Exception
112             *
113             * Implementing classes should not catch terminating exceptions but let it propagate to Task the Task::run()
114             * method.
115             */
116            protected abstract void taskRun() throws Exception;
117                    
118          public abstract String getDescription();          public abstract String getDescription();
119          public abstract String getDetail();          public abstract String getDetail();
120          public abstract short getPercentCompleted();          public abstract double getPercentCompleted();
121                    
122  }  }

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

  ViewVC Help
Powered by ViewVC 1.1.20