Modify emsdriver Code
[vfc/nfvo/driver/ems.git] / ems / boco / src / main / java / org / onap / vfc / nfvo / emsdriver / taskscheduler / QuartzManager.java
1 /**
2  * Copyright 2017 BOCO Corporation. CMCC Technologies Co., Ltd
3  *
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
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16 package org.onap.vfc.nfvo.emsdriver.taskscheduler;
17
18
19 import java.text.ParseException;
20
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;
31
32 public class QuartzManager {
33
34
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";
39
40         /**
41          * @param jobName
42          * @param job
43          * @param time
44          * @throws SchedulerException
45          * @throws ParseException
46          */
47         public static boolean addJob(String jobName, String jobClass, String time,CollectVo collectVo) {
48                 boolean sucess = false;
49                 try {
50                         Scheduler sched = gSchedulerFactory.getScheduler();
51                         JobDetail jobDetail = new JobDetail(jobName, JOB_GROUP_NAME, Class.forName(jobClass));
52                         
53                         CronTrigger trigger = new CronTrigger(jobName, TRIGGER_GROUP_NAME);
54                         trigger.setCronExpression(time);
55                         
56                         jobDetail.getJobDataMap().put("collectVo", collectVo);
57                         sched.scheduleJob(jobDetail, trigger);
58                         if (!sched.isShutdown()){
59                                 sched.start();
60                                 
61                         }
62                         sucess = true;
63                         log.info("add job sucess cronExpression="+time);
64                 } catch (Exception e) {
65                         log.error("add job fail cronExpression="+time,e);
66                         sucess = false;
67                 }
68                 return sucess;
69         }
70
71
72
73         /**
74          * @param jobName
75          * @param time
76          */
77         @SuppressWarnings("unchecked")
78         public static boolean modifyJobTime(String jobName, String time,CollectVo collectVo) {
79                 boolean sucess = false;
80                 try {
81                         Scheduler sched = gSchedulerFactory.getScheduler();
82                         CronTrigger trigger = (CronTrigger) sched.getTrigger(jobName, TRIGGER_GROUP_NAME);
83                         if(trigger == null) {
84                                 return false;
85                         }
86                         String oldTime = trigger.getCronExpression();
87                         if (!oldTime.equalsIgnoreCase(time)) {
88                                 JobDetail jobDetail = sched.getJobDetail(jobName, JOB_GROUP_NAME);
89                                 
90                                 Class<Job> objJobClass = jobDetail.getJobClass();
91                                 String jobClass = objJobClass.getName();
92                                 removeJob(jobName);
93
94                                 addJob(jobName, jobClass, time,collectVo);
95                         }
96                         sucess = true;
97                 } catch (Exception e) {
98                         log.error("modifyJobTime fail cronExpression="+time,e);
99                         sucess = false;
100                 }
101                 return sucess ;
102         }
103
104         /**
105
106
107         /**
108          * @param jobName
109          */
110         public static boolean removeJob(String jobName) {
111                 boolean sucess = false;
112                 try {
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);
117                         sucess = true;
118                 } catch (Exception e) {
119                         sucess = false;
120                         log.error("remove job fail jobName="+jobName,e);
121                 }
122                 return sucess;
123         }
124
125         
126
127         /**
128          * 
129          * @return
130          */
131         public static boolean startJobs() {
132                 boolean sucess = false;
133                 try {
134                         Scheduler sched = gSchedulerFactory.getScheduler();
135                         sched.start();
136                         sucess = true;
137                 } catch (Exception e) {
138                         sucess = false;
139                         log.error("start jobs fail",e);
140                 }
141                 return sucess;
142         }
143
144         /**
145          * 
146          * @return
147          */
148         public static boolean shutdownJobs() {
149                 boolean sucess = false;
150                 try {
151                         Scheduler sched = gSchedulerFactory.getScheduler();
152                         if(!sched.isShutdown()) {
153                                 sched.shutdown();
154                         }
155                         sucess = true;
156                 } catch (Exception e) {
157                         sucess = false;
158                         log.error("shutdown jobs fail ",e);
159                 }
160                 
161                 return sucess;
162         }
163 }