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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2864 - (hide annotations) (download)
Thu Jan 28 11:25:01 2016 UTC (8 years, 4 months ago) by torben
File size: 2273 byte(s)
More findbugs
1 torben 2838 package dk.daoas.adressevedligehold.tasks;
2    
3     import dk.daoas.adressevedligehold.util.TimingHelper;
4    
5 torben 2864 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
6    
7 torben 2838 public abstract class Task implements Runnable {
8    
9     public enum TaskState {
10     STATE_QUEUED, STATE_RUNNING, STATE_DONE, STATE_ABORTED;
11     }
12    
13 torben 2864 @SuppressFBWarnings("URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")//bliver læst via gson - og det forvirrer findbugs
14 torben 2838 public static class TaskBean {
15     public String description;
16     public String detail;
17 torben 2844 public String errorMessage;
18 torben 2838 public double percentCompleted;
19     public String state;
20     }
21    
22     protected boolean abort = false;
23     protected TaskState state = TaskState.STATE_QUEUED;
24     protected TaskManager manager;
25 torben 2844 private String errorMsg;
26 torben 2838
27     public void setManager(TaskManager manager) {
28     this.manager = manager;
29     }
30    
31     @Override
32     public final void run() {
33     TimingHelper timing = new TimingHelper();
34     System.out.println("Starting " + this.getDescription() );
35    
36     this.state = TaskState.STATE_RUNNING;
37     manager.setCurrentTask(this);
38    
39     try {
40     taskRun();
41     this.state = TaskState.STATE_DONE;
42     } catch (Exception e) {
43 torben 2844 this.errorMsg = e.getMessage();
44     e.printStackTrace();
45 torben 2838 this.state = TaskState.STATE_ABORTED;
46     }
47    
48     manager.setCurrentTask(null);
49    
50     System.out.println("Done " + this.getDescription() + " " + timing.getElapsed() + "ms");
51     }
52    
53    
54     public TaskState getState() {
55     return this.state;
56     }
57    
58     public void doAbort() {
59     this.abort = true;
60     }
61    
62     public TaskBean getTaskBean() {
63     TaskBean bean = new TaskBean();
64    
65     bean.description = this.getDescription();
66     bean.detail = this.getDetail();
67     bean.percentCompleted = this.getPercentCompleted();
68     bean.state = this.state.toString();
69 torben 2844 bean.errorMessage = this.getErrorMessage();
70 torben 2838
71     return bean;
72     }
73    
74 torben 2844 public String getErrorMessage() {
75     return this.errorMsg;
76     }
77 torben 2838
78 torben 2844 /**
79     * @throws Exception
80     *
81     * Implementing classes should not catch terminating exceptions but let it propagate to Task the Task::run()
82     * method.
83     */
84     protected abstract void taskRun() throws Exception;
85    
86 torben 2838 public abstract String getDescription();
87     public abstract String getDetail();
88     public abstract short getPercentCompleted();
89    
90     }

  ViewVC Help
Powered by ViewVC 1.1.20