2 * ============LICENSE_START========================================================================
\r
3 * ONAP : tr-069-adapter
\r
4 * =================================================================================================
\r
5 * Copyright (C) 2020 CommScope Inc Intellectual Property.
\r
6 * =================================================================================================
\r
7 * This tr-069-adapter software file is distributed by CommScope Inc under the Apache License,
\r
8 * Version 2.0 (the "License"); you may not use this file except in compliance with the License. You
\r
9 * may obtain a copy of the License at
\r
11 * http://www.apache.org/licenses/LICENSE-2.0
\r
13 * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
\r
14 * either express or implied. See the License for the specific language governing permissions and
\r
15 * limitations under the License.
\r
16 * ===============LICENSE_END=======================================================================
\r
20 package org.commscope.tr069adapter.common.scheduler.impl;
\r
22 import static org.commscope.tr069adapter.common.scheduler.impl.QuartzSchedulerConstants.JOB_APPENDER;
\r
23 import static org.commscope.tr069adapter.common.scheduler.impl.QuartzSchedulerConstants.JOB_NAME;
\r
24 import static org.commscope.tr069adapter.common.scheduler.impl.QuartzSchedulerConstants.SUB_SYSTEM;
\r
25 import static org.commscope.tr069adapter.common.scheduler.impl.QuartzSchedulerConstants.TRIGGER_APPENDER;
\r
27 import java.util.List;
\r
29 import org.apache.commons.logging.Log;
\r
30 import org.apache.commons.logging.LogFactory;
\r
31 import org.commscope.tr069adapter.common.scheduler.ExecutionContext;
\r
32 import org.commscope.tr069adapter.common.scheduler.SchedulerException;
\r
33 import org.commscope.tr069adapter.common.scheduler.TimeUnit;
\r
34 import org.commscope.tr069adapter.common.scheduler.TriggerInfo;
\r
35 import org.commscope.tr069adapter.common.scheduler.trigger.TriggerRule;
\r
36 import org.quartz.CronTrigger;
\r
37 import org.quartz.JobBuilder;
\r
38 import org.quartz.JobDetail;
\r
39 import org.quartz.SimpleTrigger;
\r
40 import org.quartz.Trigger;
\r
41 import org.springframework.beans.factory.annotation.Autowired;
\r
42 import org.springframework.stereotype.Component;
\r
45 public class QuartzSchedulerUtil {
\r
48 List<TriggerRule> triggerRules;
\r
50 private static final Log logger = LogFactory.getLog(QuartzSchedulerUtil.class);
\r
52 public void setTriggerList(List<TriggerRule> triggerRules) {
\r
53 this.triggerRules = triggerRules;
\r
56 Trigger createTrigger(TriggerInfo triggerInfo, String triggerGroup) {
\r
57 if (null == triggerInfo || null == triggerGroup || "".equals(triggerGroup))
\r
59 String triggerName = triggerGroup + TRIGGER_APPENDER;
\r
60 Trigger trigger = null;
\r
61 for (TriggerRule rule : triggerRules) {
\r
62 trigger = rule.apply(triggerInfo, triggerName, triggerGroup);
\r
63 if (trigger != null)
\r
69 Trigger createTrigger(TriggerInfo triggerInfo, String triggerName, String triggerGroup) {
\r
70 if (null == triggerInfo || null == triggerGroup || "".equals(triggerGroup))
\r
72 triggerName = triggerName + TRIGGER_APPENDER;
\r
73 Trigger trigger = null;
\r
74 for (TriggerRule rule : triggerRules) {
\r
75 trigger = rule.apply(triggerInfo, triggerName, triggerGroup);
\r
76 if (trigger != null)
\r
82 JobDetail getJobDetail(ExecutionContext jobContext, String jobGroup) {
\r
83 if (null == jobContext || null == jobGroup || "".equals(jobGroup))
\r
85 String jobName = jobGroup + JOB_APPENDER;
\r
86 JobDetail jobDetail =
\r
87 JobBuilder.newJob(QuartzJob.class).withIdentity(jobName, jobGroup).build();
\r
88 for (String key : jobContext.getJobDatakeySet()) {
\r
89 jobDetail.getJobDataMap().put(key, jobContext.getJobData(key));
\r
91 jobDetail.getJobDataMap().put(JOB_NAME, jobContext.getJobName());
\r
92 jobDetail.getJobDataMap().put(SUB_SYSTEM, jobContext.getSubSystemName());
\r
96 JobDetail getJobDetail(ExecutionContext jobContext, String jobName, String jobGroup) {
\r
97 if (null == jobContext || null == jobGroup || "".equals(jobGroup))
\r
99 JobDetail jobDetail =
\r
100 JobBuilder.newJob(QuartzJob.class).withIdentity(jobName + JOB_APPENDER, jobGroup).build();
\r
101 for (String key : jobContext.getJobDatakeySet()) {
\r
102 jobDetail.getJobDataMap().put(key, jobContext.getJobData(key));
\r
104 jobDetail.getJobDataMap().put(JOB_NAME, jobContext.getJobName());
\r
105 jobDetail.getJobDataMap().put(SUB_SYSTEM, jobContext.getSubSystemName());
\r
109 public static long getInterval(long interval, TimeUnit unit) {
\r
113 retVal = interval * 24 * 60 * 60 * 1000;
\r
116 retVal = interval * 60 * 60 * 1000;
\r
119 retVal = interval * 60 * 1000;
\r
122 retVal = interval * 1000;
\r
125 retVal = interval * 1;
\r
131 public TriggerInfo getTriggerInfo(Trigger trigger) {
\r
132 TriggerInfo triggerInfo = new TriggerInfo();
\r
133 if (trigger == null) {
\r
134 return triggerInfo;
\r
137 triggerInfo.setStartDate(trigger.getStartTime());
\r
138 triggerInfo.setEndDate(trigger.getEndTime());
\r
139 triggerInfo.setNextFireTime(trigger.getNextFireTime());
\r
140 if (trigger instanceof SimpleTrigger) {
\r
141 SimpleTrigger simpleTrigger = (SimpleTrigger) trigger;
\r
142 triggerInfo.setInterval(simpleTrigger.getRepeatInterval());
\r
144 } else if (trigger instanceof CronTrigger) {
\r
145 CronTrigger cronTrigger = (CronTrigger) trigger;
\r
146 triggerInfo.setCronExpr(cronTrigger.getCronExpression());
\r
150 } catch (SchedulerException e) {
\r
151 logger.error("Error in getTriggerInfo : " + e.getMessage());
\r
153 return triggerInfo;
\r