KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > pentaho > plugin > quartz > SchedulerAdminComponent


1 /*
2  * Copyright 2006 Pentaho Corporation. All rights reserved.
3  * This software was developed by Pentaho Corporation and is provided under the terms
4  * of the Mozilla Public License, Version 1.1, or any later version. You may not use
5  * this file except in compliance with the license. If you need a copy of the license,
6  * please go to http://www.mozilla.org/MPL/MPL-1.1.txt. The Original Code is the Pentaho
7  * BI Platform. The Initial Developer is Pentaho Corporation.
8  *
9  * Software distributed under the Mozilla Public License is distributed on an "AS IS"
10  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. Please refer to
11  * the license for the specific language governing your rights and limitations.
12  *
13  * Created Aug 12, 2005
14  * @author wseyler
15  */

16
17 package org.pentaho.plugin.quartz;
18
19 import java.util.ArrayList JavaDoc;
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 /**
28  * @author wseyler
29  *
30  * TODO To change the template for this generated type comment go to Window -
31  * Preferences - Java - Code Style - Code Templates
32  */

33 public class SchedulerAdminComponent extends ComponentBase {
34
35     /**
36      *
37      */

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 JavaDoc RESUME_SCHEDULER_ACTION_STR = "resumeScheduler"; //$NON-NLS-1$
51

52     private static final String JavaDoc SUSPEND_SCHEDULER_ACTION_STR = "suspendScheduler"; //$NON-NLS-1$
53

54     private static final String JavaDoc GET_JOB_NAMES_ACTION_STR = "getJobNames"; //$NON-NLS-1$
55

56     private static final String JavaDoc GET_IS_SCHEDULER_PAUSED_ACTION_STR = "isSchedulerPaused"; //$NON-NLS-1$
57

58     private static final String JavaDoc SCHEDULER_ACTION_STR = "schedulerAction"; //$NON-NLS-1$
59

60     private Scheduler sched = null;
61
62     /*
63      * (non-Javadoc)
64      *
65      * @see org.pentaho.component.IComponent#init()
66      */

67     public boolean init() {
68         try {
69             sched = QuartzSystemListener.getSchedulerInstance();
70         } catch (Exception JavaDoc e) {
71             error(Messages.getErrorString("JobSchedulerComponent.ERROR_0001_NoScheduler"), e); //$NON-NLS-1$
72
return false;
73         }
74         return true;
75     }
76
77     /*
78      * (non-Javadoc)
79      *
80      * @see org.pentaho.component.ComponentBase#validateAction()
81      */

82     protected boolean validateAction() {
83         return isDefinedInput(SCHEDULER_ACTION_STR);
84     }
85
86     /*
87      * (non-Javadoc)
88      *
89      * @see org.pentaho.component.ComponentBase#validateSystemSettings()
90      */

91     protected boolean validateSystemSettings() {
92         return true;
93     }
94
95     /*
96      * (non-Javadoc)
97      *
98      * @see org.pentaho.component.ComponentBase#done()
99      */

100     public void done() {
101         sched = null;
102     }
103
104     /*
105      * (non-Javadoc)
106      *
107      * @see org.pentaho.component.ComponentBase#executeAction()
108      */

109     protected boolean executeAction() {
110
111         String JavaDoc 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     /**
144      * @return
145      */

146     private boolean doIsSchedulerPaused() {
147         if (feedbackAllowed()) {
148             try {
149                 String JavaDoc resultBool = sched.isInStandbyMode() ? Messages.getString("SchedulerAdminComponent.CODE_true") : Messages.getString("SchedulerAdminComponent.CODE_false"); //$NON-NLS-1$ //$NON-NLS-2$
150
createFeedbackParameter("isPaused", Messages.getString("SchedulerAdminComponent.USER_IS_PAUSED"), "", resultBool, true); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
151
return true;
152             } catch (SchedulerException e) {
153                 error(Messages.getErrorString("SchedulerAdminComponent.ERROR_0001_SchedulerError"), e); //$NON-NLS-1$
154
return false;
155             }
156         }
157         return false;
158     }
159
160     /**
161      * @return
162      */

163     private boolean doGetJobNames() {
164         if (feedbackAllowed()) {
165             try {
166                 String JavaDoc[] jobNames = sched.getJobNames(Scheduler.DEFAULT_GROUP);
167                 ArrayList JavaDoc values = new ArrayList JavaDoc();
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); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
172
return true;
173             } catch (SchedulerException e) {
174                 error(Messages.getErrorString("SchedulerAdminComponent.ERROR_0001_SchedulerError"), e); //$NON-NLS-1$
175
return false;
176             }
177         }
178         return false;
179     }
180
181     /**
182      * @return
183      */

184     private boolean doResumeAll() {
185         try {
186             sched.resumeAll();
187         } catch (SchedulerException e) {
188             error(Messages.getErrorString("SchedulerAdminComponent.ERROR_0001_SchedulerError"), e); //$NON-NLS-1$
189
return false;
190         }
191         return true;
192     }
193
194     /**
195      * @return
196      */

197     private boolean doPauseAll() {
198         try {
199             sched.pauseAll();
200         } catch (SchedulerException e) {
201             error(Messages.getErrorString("SchedulerAdminComponent.ERROR_0001_SchedulerError"), e); //$NON-NLS-1$
202
return false;
203         }
204         return true;
205     }
206
207     /*
208      * (non-Javadoc)
209      *
210      * @see org.pentaho.core.system.PentahoBase#getLogger()
211      */

212     public Log getLogger() {
213         return LogFactory.getLog(SchedulerAdminComponent.class);
214     }
215
216 }
217
Popular Tags