View Javadoc
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   * Created with IntelliJ IDEA.
17   * User: ?
18   * Date: 3/5/13
19   * Time: 5:28 PM
20   * To change this template use File | Settings | File Templates.
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       This method is used to add the active job  to the scheduler.
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                      //To change body of catch statement use File | Settings | File Templates.
62                  }
63              }
64          }
65  
66      }
67  }