001package org.kuali.ole.deliver.service; 002 003import org.apache.log4j.Logger; 004import org.kuali.ole.deliver.bo.OleBatchJobBo; 005import org.kuali.rice.core.api.resourceloader.GlobalResourceLoader; 006import org.kuali.rice.krad.service.KRADServiceLocator; 007import org.quartz.JobDetail; 008import org.quartz.impl.StdScheduler; 009import org.springframework.scheduling.quartz.CronTriggerBean; 010 011import java.util.HashMap; 012import java.util.List; 013import java.util.Map; 014 015/** 016 * Created with IntelliJ IDEA. 017 * User: ? 018 * Date: 3/5/13 019 * Time: 5:28 PM 020 * To change this template use File | Settings | File Templates. 021 */ 022public class OleBatchJobService { 023 024 private static final Logger LOG = Logger.getLogger(OleBatchJobService.class); 025 026 public OleBatchJobService() { 027 addAvailableJobsToScheduler(); 028 } 029 030 /* 031 This method is used to add the active job to the scheduler. 032 */ 033 public void addAvailableJobsToScheduler() { 034 035 Map<String, String> batchMap = new HashMap<String, String>(); 036 batchMap.put("jobEnableStatus", "true"); 037 List<OleBatchJobBo> oleDeliverBatchJobBoList = (List<OleBatchJobBo>) KRADServiceLocator.getBusinessObjectService().findMatching(OleBatchJobBo.class, batchMap); 038 StdScheduler scheduler = (StdScheduler) GlobalResourceLoader.getService("scheduler"); 039 040 if (oleDeliverBatchJobBoList.size() > 0) { 041 for (OleBatchJobBo oleDeliverBatchJobBo : oleDeliverBatchJobBoList) { 042 043 try { 044 JobDetail jobDetail = (JobDetail) GlobalResourceLoader.getService(oleDeliverBatchJobBo.getJobTriggerName()); 045 CronTriggerBean cronTriggerBean = new CronTriggerBean(); 046 cronTriggerBean.setName(oleDeliverBatchJobBo.getJobTriggerName() + "Trigger"); 047 cronTriggerBean.setCronExpression(oleDeliverBatchJobBo.getJobCronExpression()); 048 cronTriggerBean.setJobName(jobDetail.getName()); 049 cronTriggerBean.setJobGroup(jobDetail.getGroup()); 050 cronTriggerBean.setJobDetail(jobDetail); 051 try { 052 scheduler.scheduleJob(jobDetail, cronTriggerBean); 053 if (LOG.isInfoEnabled()){ 054 LOG.info(jobDetail.getName() + " job is scheduled"); 055 } 056 } catch (Exception e) { 057 scheduler.rescheduleJob(oleDeliverBatchJobBo.getJobTriggerName(), jobDetail.getName(), cronTriggerBean); 058 } 059 } catch (Exception e) { 060 LOG.error(e.getMessage() + " : Unable to schedule the job", e); 061 //To change body of catch statement use File | Settings | File Templates. 062 } 063 } 064 } 065 066 } 067}