1 package org.commscope.tr069adapter.vesagent.timer;
\r
3 import java.util.HashMap;
\r
4 import java.util.Map;
\r
5 import java.util.concurrent.ScheduledFuture;
\r
6 import java.util.concurrent.TimeUnit;
\r
8 import org.springframework.beans.factory.annotation.Autowired;
\r
9 import org.springframework.scheduling.TaskScheduler;
\r
10 import org.springframework.scheduling.annotation.EnableScheduling;
\r
11 import org.springframework.scheduling.support.PeriodicTrigger;
\r
12 import org.springframework.stereotype.Service;
\r
17 * @since June 5, 2020
\r
18 * @author Prashant Kumar
\r
23 public class ScheduleTaskService {
\r
26 TaskScheduler scheduler;
\r
28 Map<String, ScheduledFuture<?>> jobsMap = new HashMap<>();
\r
30 public ScheduleTaskService(TaskScheduler scheduler) {
\r
31 this.scheduler = scheduler;
\r
34 public void schedule(String jobId, ScheduleInfo scheduleInfo, Runnable callBackTask) {
\r
35 cancelSchedule(jobId);
\r
37 PeriodicTrigger trigger =
\r
38 new PeriodicTrigger(scheduleInfo.getInterval(), scheduleInfo.getTimeUnit());
\r
39 trigger.setInitialDelay(scheduleInfo.getInterval());
\r
41 ScheduledFuture<?> scheduledTask = scheduler.schedule(callBackTask, trigger);
\r
42 jobsMap.put(jobId, scheduledTask);
\r
45 public void cancelSchedule(String id) {
\r
46 ScheduledFuture<?> scheduledTask = jobsMap.get(id);
\r
47 if (scheduledTask != null) {
\r
48 scheduledTask.cancel(true);
\r
53 public ScheduledFuture<?> getSchedule(String id) {
\r
54 return jobsMap.get(id);
\r
57 public Long getTimeRemainingTillNextExecution(String id, TimeUnit timeUnit) {
\r
58 ScheduledFuture<?> scheduledTask = jobsMap.get(id);
\r
60 if (scheduledTask != null) {
\r
61 return scheduledTask.getDelay(timeUnit);
\r