/[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 2838 - (hide annotations) (download)
Sun Jan 24 21:48:55 2016 UTC (8 years, 4 months ago) by torben
File size: 1682 byte(s)
Add first working edition
1 torben 2838 package dk.daoas.adressevedligehold.tasks;
2    
3     import dk.daoas.adressevedligehold.util.TimingHelper;
4    
5     public abstract class Task implements Runnable {
6    
7     public enum TaskState {
8     STATE_QUEUED, STATE_RUNNING, STATE_DONE, STATE_ABORTED;
9     }
10    
11     public static class TaskBean {
12     public String description;
13     public String detail;
14     public double percentCompleted;
15     public String state;
16     }
17    
18     protected boolean abort = false;
19     protected TaskState state = TaskState.STATE_QUEUED;
20     protected TaskManager manager;
21    
22     public void setManager(TaskManager manager) {
23     this.manager = manager;
24     }
25    
26     @Override
27     public final void run() {
28     TimingHelper timing = new TimingHelper();
29     System.out.println("Starting " + this.getDescription() );
30    
31     this.state = TaskState.STATE_RUNNING;
32     manager.setCurrentTask(this);
33    
34     try {
35     taskRun();
36     this.state = TaskState.STATE_DONE;
37     } catch (Exception e) {
38     this.state = TaskState.STATE_ABORTED;
39     }
40    
41     manager.setCurrentTask(null);
42    
43     System.out.println("Done " + this.getDescription() + " " + timing.getElapsed() + "ms");
44     }
45    
46    
47     public TaskState getState() {
48     return this.state;
49     }
50    
51     public void doAbort() {
52     this.abort = true;
53     }
54    
55     public TaskBean getTaskBean() {
56     TaskBean bean = new TaskBean();
57    
58     bean.description = this.getDescription();
59     bean.detail = this.getDetail();
60     bean.percentCompleted = this.getPercentCompleted();
61     bean.state = this.state.toString();
62    
63     return bean;
64     }
65    
66     protected abstract void taskRun();
67    
68     public abstract String getDescription();
69     public abstract String getDetail();
70     public abstract short getPercentCompleted();
71    
72     }

  ViewVC Help
Powered by ViewVC 1.1.20