1 16 17 package org.pentaho.plugin.quartz; 18 19 import java.util.ArrayList ; 20 import org.apache.commons.logging.Log; 21 import org.apache.commons.logging.LogFactory; 22 import org.pentaho.messages.Messages; 23 import org.pentaho.plugin.ComponentBase; 24 import org.quartz.Scheduler; 25 import org.quartz.SchedulerException; 26 27 33 public class SchedulerAdminComponent extends ComponentBase { 34 35 38 private static final long serialVersionUID = 5003948074206255569L; 39 40 private static final int INVALID_SCHEDULER_ACTION = -1; 41 42 private static final int SUSPEND_SCHEDULER_ACTION = 0; 43 44 private static final int RESUME_SCHEDULER_ACTION = 1; 45 46 private static final int GET_JOB_NAMES_ACTION = 2; 47 48 private static final int GET_IS_SCHEDULER_PAUSED_ACTION = 3; 49 50 private static final String RESUME_SCHEDULER_ACTION_STR = "resumeScheduler"; 52 private static final String SUSPEND_SCHEDULER_ACTION_STR = "suspendScheduler"; 54 private static final String GET_JOB_NAMES_ACTION_STR = "getJobNames"; 56 private static final String GET_IS_SCHEDULER_PAUSED_ACTION_STR = "isSchedulerPaused"; 58 private static final String SCHEDULER_ACTION_STR = "schedulerAction"; 60 private Scheduler sched = null; 61 62 67 public boolean init() { 68 try { 69 sched = QuartzSystemListener.getSchedulerInstance(); 70 } catch (Exception e) { 71 error(Messages.getErrorString("JobSchedulerComponent.ERROR_0001_NoScheduler"), e); return false; 73 } 74 return true; 75 } 76 77 82 protected boolean validateAction() { 83 return isDefinedInput(SCHEDULER_ACTION_STR); 84 } 85 86 91 protected boolean validateSystemSettings() { 92 return true; 93 } 94 95 100 public void done() { 101 sched = null; 102 } 103 104 109 protected boolean executeAction() { 110 111 String jobAction = getInputStringValue(SCHEDULER_ACTION_STR); 112 int jobType; 113 if (SUSPEND_SCHEDULER_ACTION_STR.equals(jobAction)) { 114 jobType = SUSPEND_SCHEDULER_ACTION; 115 } else if (RESUME_SCHEDULER_ACTION_STR.equals(jobAction)) { 116 jobType = RESUME_SCHEDULER_ACTION; 117 } else if (GET_JOB_NAMES_ACTION_STR.equals(jobAction)) { 118 jobType = GET_JOB_NAMES_ACTION; 119 } else if (GET_IS_SCHEDULER_PAUSED_ACTION_STR.equals(jobAction)) { 120 jobType = GET_IS_SCHEDULER_PAUSED_ACTION; 121 } else { 122 jobType = INVALID_SCHEDULER_ACTION; 123 } 124 125 if (jobType == INVALID_SCHEDULER_ACTION) { 126 return false; 127 } 128 129 switch (jobType) { 130 case SUSPEND_SCHEDULER_ACTION: 131 return doPauseAll(); 132 case RESUME_SCHEDULER_ACTION: 133 return doResumeAll(); 134 case GET_JOB_NAMES_ACTION: 135 return doGetJobNames(); 136 case GET_IS_SCHEDULER_PAUSED_ACTION: 137 return doIsSchedulerPaused(); 138 default: 139 return false; 140 } 141 } 142 143 146 private boolean doIsSchedulerPaused() { 147 if (feedbackAllowed()) { 148 try { 149 String resultBool = sched.isInStandbyMode() ? Messages.getString("SchedulerAdminComponent.CODE_true") : Messages.getString("SchedulerAdminComponent.CODE_false"); createFeedbackParameter("isPaused", Messages.getString("SchedulerAdminComponent.USER_IS_PAUSED"), "", resultBool, true); return true; 152 } catch (SchedulerException e) { 153 error(Messages.getErrorString("SchedulerAdminComponent.ERROR_0001_SchedulerError"), e); return false; 155 } 156 } 157 return false; 158 } 159 160 163 private boolean doGetJobNames() { 164 if (feedbackAllowed()) { 165 try { 166 String [] jobNames = sched.getJobNames(Scheduler.DEFAULT_GROUP); 167 ArrayList values = new ArrayList (); 168 for (int i = 0; i < jobNames.length; i++) { 169 values.add(jobNames[i]); 170 } 171 createFeedbackParameter("jobNames", Messages.getString("SchedulerAdminComponent.USER_JOB_NAMES"), "", null, values, null, null); return true; 173 } catch (SchedulerException e) { 174 error(Messages.getErrorString("SchedulerAdminComponent.ERROR_0001_SchedulerError"), e); return false; 176 } 177 } 178 return false; 179 } 180 181 184 private boolean doResumeAll() { 185 try { 186 sched.resumeAll(); 187 } catch (SchedulerException e) { 188 error(Messages.getErrorString("SchedulerAdminComponent.ERROR_0001_SchedulerError"), e); return false; 190 } 191 return true; 192 } 193 194 197 private boolean doPauseAll() { 198 try { 199 sched.pauseAll(); 200 } catch (SchedulerException e) { 201 error(Messages.getErrorString("SchedulerAdminComponent.ERROR_0001_SchedulerError"), e); return false; 203 } 204 return true; 205 } 206 207 212 public Log getLogger() { 213 return LogFactory.getLog(SchedulerAdminComponent.class); 214 } 215 216 } 217 | Popular Tags |