1 package org.kuali.ole.deliver.service;
2
3 import org.apache.log4j.Logger;
4 import org.kuali.ole.deliver.bo.OleBatchJobBo;
5 import org.kuali.rice.core.api.resourceloader.GlobalResourceLoader;
6 import org.kuali.rice.krad.service.KRADServiceLocator;
7 import org.quartz.JobDetail;
8 import org.quartz.impl.StdScheduler;
9 import org.springframework.scheduling.quartz.CronTriggerBean;
10
11 import java.util.HashMap;
12 import java.util.List;
13 import java.util.Map;
14
15
16
17
18
19
20
21
22 public class OleBatchJobService {
23
24 private static final Logger LOG = Logger.getLogger(OleBatchJobService.class);
25
26 public OleBatchJobService() {
27 addAvailableJobsToScheduler();
28 }
29
30
31
32
33 public void addAvailableJobsToScheduler() {
34
35 Map<String, String> batchMap = new HashMap<String, String>();
36 batchMap.put("jobEnableStatus", "true");
37 List<OleBatchJobBo> oleDeliverBatchJobBoList = (List<OleBatchJobBo>) KRADServiceLocator.getBusinessObjectService().findMatching(OleBatchJobBo.class, batchMap);
38 StdScheduler scheduler = (StdScheduler) GlobalResourceLoader.getService("scheduler");
39
40 if (oleDeliverBatchJobBoList.size() > 0) {
41 for (OleBatchJobBo oleDeliverBatchJobBo : oleDeliverBatchJobBoList) {
42
43 try {
44 JobDetail jobDetail = (JobDetail) GlobalResourceLoader.getService(oleDeliverBatchJobBo.getJobTriggerName());
45 CronTriggerBean cronTriggerBean = new CronTriggerBean();
46 cronTriggerBean.setName(oleDeliverBatchJobBo.getJobTriggerName() + "Trigger");
47 cronTriggerBean.setCronExpression(oleDeliverBatchJobBo.getJobCronExpression());
48 cronTriggerBean.setJobName(jobDetail.getName());
49 cronTriggerBean.setJobGroup(jobDetail.getGroup());
50 cronTriggerBean.setJobDetail(jobDetail);
51 try {
52 scheduler.scheduleJob(jobDetail, cronTriggerBean);
53 if (LOG.isInfoEnabled()){
54 LOG.info(jobDetail.getName() + " job is scheduled");
55 }
56 } catch (Exception e) {
57 scheduler.rescheduleJob(oleDeliverBatchJobBo.getJobTriggerName(), jobDetail.getName(), cronTriggerBean);
58 }
59 } catch (Exception e) {
60 LOG.error(e.getMessage() + " : Unable to schedule the job", e);
61
62 }
63 }
64 }
65
66 }
67 }