diff options
Diffstat (limited to 'src/esieequest/engine/scheduler/SysScheduler.java')
-rw-r--r-- | src/esieequest/engine/scheduler/SysScheduler.java | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/esieequest/engine/scheduler/SysScheduler.java b/src/esieequest/engine/scheduler/SysScheduler.java new file mode 100644 index 0000000..e5a5947 --- /dev/null +++ b/src/esieequest/engine/scheduler/SysScheduler.java | |||
@@ -0,0 +1,61 @@ | |||
1 | package esieequest.engine.scheduler; | ||
2 | |||
3 | import java.util.Timer; | ||
4 | import java.util.TimerTask; | ||
5 | |||
6 | /** | ||
7 | * The standard Java Timer adapter. | ||
8 | * | ||
9 | * @author Pacien TRAN-GIRARD | ||
10 | */ | ||
11 | public class SysScheduler implements Scheduler { | ||
12 | |||
13 | private final Timer timer; | ||
14 | private TimerTask timerTask; | ||
15 | |||
16 | /** | ||
17 | * Creates a new scheduler. | ||
18 | */ | ||
19 | public SysScheduler() { | ||
20 | this.timer = new Timer(); | ||
21 | } | ||
22 | |||
23 | @Override | ||
24 | public void schedule(final Callback callback, final int time) { | ||
25 | this.cancel(); | ||
26 | |||
27 | this.timerTask = new TimerTask() { | ||
28 | @Override | ||
29 | public void run() { | ||
30 | callback.call(); | ||
31 | } | ||
32 | }; | ||
33 | this.timer.schedule(this.timerTask, time); | ||
34 | } | ||
35 | |||
36 | @Override | ||
37 | public void cancel() { | ||
38 | if (this.timerTask == null) { | ||
39 | return; | ||
40 | } | ||
41 | this.timerTask.cancel(); | ||
42 | } | ||
43 | |||
44 | @Override | ||
45 | public void run() { | ||
46 | if (this.timerTask == null) { | ||
47 | return; | ||
48 | } | ||
49 | this.cancel(); | ||
50 | this.timerTask.run(); | ||
51 | } | ||
52 | |||
53 | @Override | ||
54 | public boolean isRunning() { | ||
55 | if (this.timerTask == null) { | ||
56 | return false; | ||
57 | } | ||
58 | return this.timerTask.scheduledExecutionTime() == 0L; | ||
59 | } | ||
60 | |||
61 | } | ||