Example #1
0
    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);
        }
      }
    }
  }
Example #4
0
    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");
      }
    }
  }
Example #8
0
    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;
  }