X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=ves-agent%2Fsrc%2Fmain%2Fjava%2Forg%2Fcommscope%2Ftr069adapter%2Fvesagent%2Ftimer%2FScheduleTaskService.java;fp=ves-agent%2Fsrc%2Fmain%2Fjava%2Forg%2Fcommscope%2Ftr069adapter%2Fvesagent%2Ftimer%2FScheduleTaskService.java;h=aa2d6c6886cd758b3ffb738ba532a0362c3c212a;hb=641a6c47b4ee74412e9386b3c95693adda3cafc9;hp=0000000000000000000000000000000000000000;hpb=8c7432b8380a355e89df05f070e7d88e599912fd;p=oam%2Ftr069-adapter.git diff --git a/ves-agent/src/main/java/org/commscope/tr069adapter/vesagent/timer/ScheduleTaskService.java b/ves-agent/src/main/java/org/commscope/tr069adapter/vesagent/timer/ScheduleTaskService.java new file mode 100644 index 0000000..aa2d6c6 --- /dev/null +++ b/ves-agent/src/main/java/org/commscope/tr069adapter/vesagent/timer/ScheduleTaskService.java @@ -0,0 +1,66 @@ +package org.commscope.tr069adapter.vesagent.timer; + +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.TaskScheduler; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.support.PeriodicTrigger; +import org.springframework.stereotype.Service; + +/** + * + * @version 1.0 + * @since June 5, 2020 + * @author Prashant Kumar + */ + +@Service +@EnableScheduling +public class ScheduleTaskService { + + @Autowired + TaskScheduler scheduler; + + Map> jobsMap = new HashMap<>(); + + public ScheduleTaskService(TaskScheduler scheduler) { + this.scheduler = scheduler; + } + + public void schedule(String jobId, ScheduleInfo scheduleInfo, Runnable callBackTask) { + cancelSchedule(jobId); + + PeriodicTrigger trigger = + new PeriodicTrigger(scheduleInfo.getInterval(), scheduleInfo.getTimeUnit()); + trigger.setInitialDelay(scheduleInfo.getInterval()); + + ScheduledFuture scheduledTask = scheduler.schedule(callBackTask, trigger); + jobsMap.put(jobId, scheduledTask); + } + + public void cancelSchedule(String id) { + ScheduledFuture scheduledTask = jobsMap.get(id); + if (scheduledTask != null) { + scheduledTask.cancel(true); + jobsMap.remove(id); + } + } + + public ScheduledFuture getSchedule(String id) { + return jobsMap.get(id); + } + + public Long getTimeRemainingTillNextExecution(String id, TimeUnit timeUnit) { + ScheduledFuture scheduledTask = jobsMap.get(id); + + if (scheduledTask != null) { + return scheduledTask.getDelay(timeUnit); + } else { + return null; + } + } +}