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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2838 - (show 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 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