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 log.info("add job sucess cronExpression="+time);
64 } catch (Exception e) {
65 log.error("add job fail cronExpression="+time,e);
77 @SuppressWarnings("unchecked")
78 public static boolean modifyJobTime(String jobName, String time,CollectVo collectVo) {
79 boolean sucess = false;
81 Scheduler sched = gSchedulerFactory.getScheduler();
82 CronTrigger trigger = (CronTrigger) sched.getTrigger(jobName, TRIGGER_GROUP_NAME);
86 String oldTime = trigger.getCronExpression();
87 if (!oldTime.equalsIgnoreCase(time)) {
88 JobDetail jobDetail = sched.getJobDetail(jobName, JOB_GROUP_NAME);
90 Class<Job> objJobClass = jobDetail.getJobClass();
91 String jobClass = objJobClass.getName();
94 addJob(jobName, jobClass, time,collectVo);
97 } catch (Exception e) {
98 log.error("modifyJobTime fail cronExpression="+time,e);
110 public static boolean removeJob(String jobName) {
111 boolean sucess = false;
113 Scheduler sched = gSchedulerFactory.getScheduler();
114 sched.pauseTrigger(jobName, TRIGGER_GROUP_NAME);
115 sched.unscheduleJob(jobName, TRIGGER_GROUP_NAME);
116 sched.deleteJob(jobName, JOB_GROUP_NAME);
118 } catch (Exception e) {
120 log.error("remove job fail jobName="+jobName,e);
131 public static boolean startJobs() {
132 boolean sucess = false;
134 Scheduler sched = gSchedulerFactory.getScheduler();
137 } catch (Exception e) {
139 log.error("start jobs fail",e);
148 public static boolean shutdownJobs() {
149 boolean sucess = false;
151 Scheduler sched = gSchedulerFactory.getScheduler();
152 if(!sched.isShutdown()) {
156 } catch (Exception e) {
158 log.error("shutdown jobs fail ",e);