private StorageType _getStorageType(String groupName) { int pos = groupName.indexOf(CharPool.POUND); String storageTypeString = groupName.substring(0, pos); return StorageType.valueOf(storageTypeString); }
public final void addJob( String jobName, String groupName, StorageType storageType, org.quartz.Trigger trigger) { JobKey jobKey = new JobKey(jobName, groupName); JobBuilder jobBuilder = JobBuilder.newJob(MessageSenderJob.class); jobBuilder = jobBuilder.withIdentity(jobKey); JobDetail jobDetail = jobBuilder.build(); JobDataMap jobDataMap = jobDetail.getJobDataMap(); jobDataMap.put(SchedulerEngine.MESSAGE, _jsonFactory.serialize(new Message())); jobDataMap.put(SchedulerEngine.DESTINATION_NAME, _TEST_DESTINATION_NAME); jobDataMap.put(SchedulerEngine.STORAGE_TYPE, storageType.toString()); JobState jobState = new JobState(TriggerState.NORMAL); jobState.addException(new Exception(), new Date()); jobDataMap.put(SchedulerEngine.JOB_STATE, JobStateSerializeUtil.serialize(jobState)); _jobs.put(jobKey, new Tuple(jobDetail, trigger, TriggerState.NORMAL)); }
public static void scheduleJobAction(PortletRequest request, String action) throws SchedulerException, ParseException { // Checking all the rows to see which are selected String rowSelection; for (int i = 0; (rowSelection = request.getParameter(PARAMETER_JOB_SELECTED + i)) != null; i++) { boolean rowSelected = GetterUtil.get(rowSelection, false); if (rowSelected) { String jobName = ParamUtil.getString(request, PARAMETER_JOB_NAME + i); String groupName = ParamUtil.getString(request, PARAMETER_JOB_GROUP + i); String storageTypeText = ParamUtil.getString(request, PARAMETER_STORAGE_TYPE + i); StorageType storageType = StorageType.valueOf(storageTypeText); // Log debug messages if (_log.isDebugEnabled()) { _log.debug( String.format( LOG_JOB_FORMAT, action, LOG_ACTION_MSG, jobName, groupName, storageType)); } if (action.equals(ACTION_PAUSE)) { SchedulerEngineHelperUtil.pause(jobName, groupName, storageType); } else if (action.equals(ACTION_RESUME)) { SchedulerEngineHelperUtil.resume(jobName, groupName, storageType); } else if (action.equals(ACTION_RUN)) { runScheduledJob(jobName, groupName); } } } }
private String _namespaceGroupName(String groupName, StorageType storageType) { String namespaceGroupName = storageType.toString(); namespaceGroupName = namespaceGroupName.concat(StringPool.POUND).concat(groupName); return namespaceGroupName; }
protected SchedulerResponse getScheduledJob(Scheduler scheduler, JobKey jobKey) throws Exception { JobDetail jobDetail = scheduler.getJobDetail(jobKey); if (jobDetail == null) { return null; } SchedulerResponse schedulerResponse = new SchedulerResponse(); JobDataMap jobDataMap = jobDetail.getJobDataMap(); String description = jobDataMap.getString(SchedulerEngine.DESCRIPTION); schedulerResponse.setDescription(description); String destinationName = jobDataMap.getString(SchedulerEngine.DESTINATION_NAME); schedulerResponse.setDestinationName(destinationName); Message message = getMessage(jobDataMap); JobState jobState = getJobState(jobDataMap); message.put(SchedulerEngine.JOB_STATE, jobState); schedulerResponse.setMessage(message); StorageType storageType = StorageType.valueOf(jobDataMap.getString(SchedulerEngine.STORAGE_TYPE)); schedulerResponse.setStorageType(storageType); String jobName = jobKey.getName(); String groupName = jobKey.getGroup(); TriggerKey triggerKey = new TriggerKey(jobName, groupName); Trigger trigger = scheduler.getTrigger(triggerKey); if (trigger == null) { schedulerResponse.setGroupName(groupName); schedulerResponse.setJobName(jobName); return schedulerResponse; } message.put(SchedulerEngine.END_TIME, trigger.getEndTime()); message.put(SchedulerEngine.FINAL_FIRE_TIME, trigger.getFinalFireTime()); message.put(SchedulerEngine.NEXT_FIRE_TIME, trigger.getNextFireTime()); message.put(SchedulerEngine.PREVIOUS_FIRE_TIME, trigger.getPreviousFireTime()); message.put(SchedulerEngine.START_TIME, trigger.getStartTime()); schedulerResponse.setTrigger(new QuartzTrigger(trigger)); return schedulerResponse; }
public static SchedulerJobBean getSchedulerJob(SchedulerResponse schedulerResponse) { TriggerState triggerState = SchedulerEngineHelperUtil.getJobState(schedulerResponse); Date startTime = SchedulerEngineHelperUtil.getStartTime(schedulerResponse); Date endTime = SchedulerEngineHelperUtil.getEndTime(schedulerResponse); Date previousFireTime = SchedulerEngineHelperUtil.getPreviousFireTime(schedulerResponse); Date nextFireTime = SchedulerEngineHelperUtil.getNextFireTime(schedulerResponse); StorageType storageType = schedulerResponse.getStorageType(); SchedulerJobBean schedulerJobBean = new SchedulerJobBeanImpl(); schedulerJobBean.setJobName(schedulerResponse.getJobName()); schedulerJobBean.setGroupName(schedulerResponse.getGroupName()); schedulerJobBean.setTriggerState( triggerState == null ? SchedulerJobBean.NULL_VALUE_DISPLAY : triggerState.toString()); schedulerJobBean.setStartTime(startTime); schedulerJobBean.setEndTime(endTime); schedulerJobBean.setPreviousFireTime(previousFireTime); schedulerJobBean.setNextFireTime(nextFireTime); schedulerJobBean.setStorageType( storageType == null ? SchedulerJobBean.NULL_VALUE_DISPLAY : storageType.toString().trim()); return schedulerJobBean; }
protected void schedule( Scheduler scheduler, StorageType storageType, Trigger trigger, String description, String destinationName, Message message) throws Exception { if (_jsonFactory == null) { throw new IllegalStateException("JSON factory not initialized"); } try { JobBuilder jobBuilder = JobBuilder.newJob(MessageSenderJob.class); jobBuilder.withIdentity(trigger.getJobKey()); jobBuilder.storeDurably(); JobDetail jobDetail = jobBuilder.build(); JobDataMap jobDataMap = jobDetail.getJobDataMap(); jobDataMap.put(SchedulerEngine.DESCRIPTION, description); jobDataMap.put(SchedulerEngine.DESTINATION_NAME, destinationName); jobDataMap.put(SchedulerEngine.MESSAGE, _jsonFactory.serialize(message)); jobDataMap.put(SchedulerEngine.STORAGE_TYPE, storageType.toString()); JobState jobState = new JobState( TriggerState.NORMAL, message.getInteger(SchedulerEngine.EXCEPTIONS_MAX_SIZE)); jobDataMap.put(SchedulerEngine.JOB_STATE, JobStateSerializeUtil.serialize(jobState)); unregisterMessageListener(scheduler, trigger.getJobKey()); synchronized (this) { scheduler.deleteJob(trigger.getJobKey()); scheduler.scheduleJob(jobDetail, trigger); } } catch (ObjectAlreadyExistsException oaee) { if (_log.isInfoEnabled()) { _log.info("Message is already scheduled"); } } }
public List<SchedulerResponse> getScheduledJobs(StorageType storageType) throws SchedulerException { List<SchedulerResponse> schedulerResponses = new ArrayList<SchedulerResponse>(); for (SchedulerResponse schedulerResponse : _defaultJobs.values()) { if (storageType.equals(schedulerResponse.getStorageType())) { schedulerResponses.add(schedulerResponse); } } if (schedulerResponses.isEmpty()) { throw new SchedulerException("No jobs with type " + storageType); } return schedulerResponses; }
protected SchedulerResponse getScheduledJob(Scheduler scheduler, JobKey jobKey) throws Exception { JobDetail jobDetail = scheduler.getJobDetail(jobKey); if (jobDetail == null) { return null; } SchedulerResponse schedulerResponse = new SchedulerResponse(); JobDataMap jobDataMap = jobDetail.getJobDataMap(); String description = jobDataMap.getString(SchedulerEngine.DESCRIPTION); schedulerResponse.setDescription(description); String destinationName = jobDataMap.getString(SchedulerEngine.DESTINATION_NAME); schedulerResponse.setDestinationName(destinationName); Message message = getMessage(jobDataMap); JobState jobState = getJobState(jobDataMap); message.put(SchedulerEngine.JOB_STATE, jobState); schedulerResponse.setMessage(message); StorageType storageType = StorageType.valueOf(jobDataMap.getString(SchedulerEngine.STORAGE_TYPE)); schedulerResponse.setStorageType(storageType); String jobName = jobKey.getName(); String groupName = jobKey.getGroup(); TriggerKey triggerKey = new TriggerKey(jobName, groupName); Trigger trigger = scheduler.getTrigger(triggerKey); if (trigger == null) { schedulerResponse.setGroupName(groupName); schedulerResponse.setJobName(jobName); return schedulerResponse; } message.put(SchedulerEngine.END_TIME, trigger.getEndTime()); message.put(SchedulerEngine.FINAL_FIRE_TIME, trigger.getFinalFireTime()); message.put(SchedulerEngine.NEXT_FIRE_TIME, trigger.getNextFireTime()); message.put(SchedulerEngine.PREVIOUS_FIRE_TIME, trigger.getPreviousFireTime()); message.put(SchedulerEngine.START_TIME, trigger.getStartTime()); if (trigger instanceof CalendarIntervalTrigger) { CalendarIntervalTrigger calendarIntervalTrigger = CalendarIntervalTrigger.class.cast(trigger); IntervalUnit intervalUnit = calendarIntervalTrigger.getRepeatIntervalUnit(); schedulerResponse.setTrigger( new IntervalTrigger( jobName, groupName, calendarIntervalTrigger.getStartTime(), calendarIntervalTrigger.getEndTime(), calendarIntervalTrigger.getRepeatInterval(), TimeUnit.valueOf(intervalUnit.name()))); } else if (trigger instanceof CronTrigger) { CronTrigger cronTrigger = CronTrigger.class.cast(trigger); schedulerResponse.setTrigger( new com.liferay.portal.kernel.scheduler.CronTrigger( jobName, groupName, cronTrigger.getStartTime(), cronTrigger.getEndTime(), cronTrigger.getCronExpression())); } else if (trigger instanceof SimpleTrigger) { SimpleTrigger simpleTrigger = SimpleTrigger.class.cast(trigger); schedulerResponse.setTrigger( new IntervalTrigger( jobName, groupName, simpleTrigger.getStartTime(), simpleTrigger.getEndTime(), (int) simpleTrigger.getRepeatInterval(), TimeUnit.MILLISECOND)); } return schedulerResponse; }