Modify groupId for ems driver
[vfc/nfvo/driver/ems.git] / ems / boco / src / main / java / org / onap / 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.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.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                 } catch (Exception e) {
64                         log.error("add job fail cronExpression="+time,e);
65                         sucess = false;
66                 }
67                 return sucess;
68         }
69
70
71
72         /**
73          * @param jobName
74          * @param time
75          */
76         @SuppressWarnings("unchecked")
77         public static boolean modifyJobTime(String jobName, String time,CollectVo collectVo) {
78                 boolean sucess = false;
79                 try {
80                         Scheduler sched = gSchedulerFactory.getScheduler();
81                         CronTrigger trigger = (CronTrigger) sched.getTrigger(jobName, TRIGGER_GROUP_NAME);
82                         if(trigger == null) {
83                                 return false;
84                         }
85                         String oldTime = trigger.getCronExpression();
86                         if (!oldTime.equalsIgnoreCase(time)) {
87                                 JobDetail jobDetail = sched.getJobDetail(jobName, JOB_GROUP_NAME);
88                                 
89                                 Class<Job> objJobClass = jobDetail.getJobClass();
90                                 String jobClass = objJobClass.getName();
91                                 removeJob(jobName);
92
93                                 addJob(jobName, jobClass, time,collectVo);
94                         }
95                         sucess = true;
96                 } catch (Exception e) {
97                         log.error("modifyJobTime fail cronExpression="+time,e);
98                         sucess = false;
99                 }
100                 return sucess ;
101         }
102
103         /**
104
105
106         /**
107          * @param jobName
108          */
109         public static boolean removeJob(String jobName) {
110                 boolean sucess = false;
111                 try {
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);
116                         sucess = true;
117                 } catch (Exception e) {
118                         sucess = false;
119                         log.error("remove job fail jobName="+jobName,e);
120                 }
121                 return sucess;
122         }
123
124         
125
126         /**
127          * 
128          * @return
129          */
130         public static boolean startJobs() {
131                 boolean sucess = false;
132                 try {
133                         Scheduler sched = gSchedulerFactory.getScheduler();
134                         sched.start();
135                         sucess = true;
136                 } catch (Exception e) {
137                         sucess = false;
138                         log.error("start jobs fail",e);
139                 }
140                 return sucess;
141         }
142
143         /**
144          * 
145          * @return
146          */
147         public static boolean shutdownJobs() {
148                 boolean sucess = false;
149                 try {
150                         Scheduler sched = gSchedulerFactory.getScheduler();
151                         if(!sched.isShutdown()) {
152                                 sched.shutdown();
153                         }
154                         sucess = true;
155                 } catch (Exception e) {
156                         sucess = false;
157                         log.error("shutdown jobs fail ",e);
158                 }
159                 
160                 return sucess;
161         }
162 }