2 * Copyright 2017 BOCO Corporation. CMCC Technologies Co., Ltd
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org.onap.vfc.nfvo.emsdriver.taskscheduler;
19 import org.apache.commons.logging.Log;
20 import org.apache.commons.logging.LogFactory;
21 import org.onap.vfc.nfvo.emsdriver.commons.model.CollectVo;
23 import org.quartz.impl.StdSchedulerFactory;
25 import java.text.ParseException;
27 public class QuartzManager {
30 private static Log log = LogFactory.getFactory().getInstance(QuartzManager.class);
31 private static SchedulerFactory gSchedulerFactory = new StdSchedulerFactory();
32 private static String jobGroupName = "EXTJWEB_JOBGROUP_NAME";
33 private static String triggerGroupName = "EXTJWEB_TRIGGERGROUP_NAME";
39 * @throws SchedulerException
40 * @throws ParseException
42 public static boolean addJob(String jobName, String jobClass, String time, CollectVo collectVo) {
43 boolean sucess = false;
45 Scheduler sched = gSchedulerFactory.getScheduler();
46 JobDetail jobDetail = new JobDetail(jobName, jobGroupName, Class.forName(jobClass));
48 CronTrigger trigger = new CronTrigger(jobName, triggerGroupName);
49 trigger.setCronExpression(time);
51 jobDetail.getJobDataMap().put("collectVo", collectVo);
52 sched.scheduleJob(jobDetail, trigger);
53 if (!sched.isShutdown()) {
58 log.info("add job sucess cronExpression=" + time);
59 } catch (Exception e) {
60 log.error("add job fail cronExpression=" + time, e);
71 @SuppressWarnings("unchecked")
72 public static boolean modifyJobTime(String jobName, String time, CollectVo collectVo) {
73 boolean sucess = false;
75 Scheduler sched = gSchedulerFactory.getScheduler();
76 CronTrigger trigger = (CronTrigger) sched.getTrigger(jobName, triggerGroupName);
77 if (trigger == null) {
80 String oldTime = trigger.getCronExpression();
81 if (!oldTime.equalsIgnoreCase(time)) {
82 JobDetail jobDetail = sched.getJobDetail(jobName, jobGroupName);
84 Class<Job> objJobClass = jobDetail.getJobClass();
85 String jobClass = objJobClass.getName();
88 addJob(jobName, jobClass, time, collectVo);
91 } catch (Exception e) {
92 log.error("modifyJobTime fail cronExpression=" + time, e);
104 public static boolean removeJob(String jobName) {
105 boolean sucess = false;
107 Scheduler sched = gSchedulerFactory.getScheduler();
108 sched.pauseTrigger(jobName, triggerGroupName);
109 sched.unscheduleJob(jobName, triggerGroupName);
110 sched.deleteJob(jobName, jobGroupName);
112 } catch (Exception e) {
114 log.error("remove job fail jobName=" + jobName, e);
124 public static boolean startJobs() {
125 boolean sucess = false;
127 Scheduler sched = gSchedulerFactory.getScheduler();
130 } catch (Exception e) {
132 log.error("start jobs fail", e);
141 public static boolean shutdownJobs() {
142 boolean sucess = false;
144 Scheduler sched = gSchedulerFactory.getScheduler();
145 if (!sched.isShutdown()) {
149 } catch (Exception e) {
151 log.error("shutdown jobs fail ", e);