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 java.text.ParseException;
21 import org.apache.commons.logging.Log;
22 import org.apache.commons.logging.LogFactory;
23 import org.onap.vfc.nfvo.emsdriver.commons.model.CollectVo;
24 import org.quartz.CronTrigger;
25 import org.quartz.Job;
26 import org.quartz.JobDetail;
27 import org.quartz.Scheduler;
28 import org.quartz.SchedulerException;
29 import org.quartz.SchedulerFactory;
30 import org.quartz.impl.StdSchedulerFactory;
32 public class QuartzManager {
35 private static Log log = LogFactory.getFactory().getInstance(QuartzManager.class);
36 private static SchedulerFactory gSchedulerFactory = new StdSchedulerFactory();
37 private static String JOB_GROUP_NAME = "EXTJWEB_JOBGROUP_NAME";
38 private static String TRIGGER_GROUP_NAME = "EXTJWEB_TRIGGERGROUP_NAME";
44 * @throws SchedulerException
45 * @throws ParseException
47 public static boolean addJob(String jobName, String jobClass, String time,CollectVo collectVo) {
48 boolean sucess = false;
50 Scheduler sched = gSchedulerFactory.getScheduler();
51 JobDetail jobDetail = new JobDetail(jobName, JOB_GROUP_NAME, Class.forName(jobClass));
53 CronTrigger trigger = new CronTrigger(jobName, TRIGGER_GROUP_NAME);
54 trigger.setCronExpression(time);
56 jobDetail.getJobDataMap().put("collectVo", collectVo);
57 sched.scheduleJob(jobDetail, trigger);
58 if (!sched.isShutdown()){
63 } catch (Exception e) {
64 log.error("add job fail cronExpression="+time,e);
76 @SuppressWarnings("unchecked")
77 public static boolean modifyJobTime(String jobName, String time,CollectVo collectVo) {
78 boolean sucess = false;
80 Scheduler sched = gSchedulerFactory.getScheduler();
81 CronTrigger trigger = (CronTrigger) sched.getTrigger(jobName, TRIGGER_GROUP_NAME);
85 String oldTime = trigger.getCronExpression();
86 if (!oldTime.equalsIgnoreCase(time)) {
87 JobDetail jobDetail = sched.getJobDetail(jobName, JOB_GROUP_NAME);
89 Class<Job> objJobClass = jobDetail.getJobClass();
90 String jobClass = objJobClass.getName();
93 addJob(jobName, jobClass, time,collectVo);
96 } catch (Exception e) {
97 log.error("modifyJobTime fail cronExpression="+time,e);
109 public static boolean removeJob(String jobName) {
110 boolean sucess = false;
112 Scheduler sched = gSchedulerFactory.getScheduler();
113 sched.pauseTrigger(jobName, TRIGGER_GROUP_NAME);
114 sched.unscheduleJob(jobName, TRIGGER_GROUP_NAME);
115 sched.deleteJob(jobName, JOB_GROUP_NAME);
117 } catch (Exception e) {
119 log.error("remove job fail jobName="+jobName,e);
130 public static boolean startJobs() {
131 boolean sucess = false;
133 Scheduler sched = gSchedulerFactory.getScheduler();
136 } catch (Exception e) {
138 log.error("start jobs fail",e);
147 public static boolean shutdownJobs() {
148 boolean sucess = false;
150 Scheduler sched = gSchedulerFactory.getScheduler();
151 if(!sched.isShutdown()) {
155 } catch (Exception e) {
157 log.error("shutdown jobs fail ",e);