001    /**
002     * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portal.kernel.scheduler;
016    
017    import com.liferay.portal.kernel.messaging.Message;
018    import com.liferay.portal.kernel.scheduler.messaging.SchedulerResponse;
019    import com.liferay.portal.kernel.security.pacl.permission.PortalRuntimePermission;
020    import com.liferay.portal.kernel.util.ObjectValuePair;
021    import com.liferay.registry.Registry;
022    import com.liferay.registry.RegistryUtil;
023    import com.liferay.registry.ServiceTracker;
024    
025    import java.util.Calendar;
026    import java.util.Date;
027    import java.util.List;
028    
029    import javax.portlet.PortletRequest;
030    
031    /**
032     * @author Michael C. Han
033     */
034    public class SchedulerEngineHelperUtil {
035    
036            public static void addJob(
037                            Trigger trigger, StorageType storageType, String description,
038                            String destinationName, Message message,
039                            String messageListenerClassName, String portletId,
040                            int exceptionsMaxSize)
041                    throws SchedulerException {
042    
043                    getSchedulerEngineHelper().addJob(
044                            trigger, storageType, description, destinationName, message,
045                            messageListenerClassName, portletId, exceptionsMaxSize);
046            }
047    
048            public static void addJob(
049                            Trigger trigger, StorageType storageType, String description,
050                            String destinationName, Object payload,
051                            String messageListenerClassName, String portletId,
052                            int exceptionsMaxSize)
053                    throws SchedulerException {
054    
055                    getSchedulerEngineHelper().addJob(
056                            trigger, storageType, description, destinationName, payload,
057                            messageListenerClassName, portletId, exceptionsMaxSize);
058            }
059    
060            public static void addScriptingJob(
061                            Trigger trigger, StorageType storageType, String description,
062                            String language, String script, int exceptionsMaxSize)
063                    throws SchedulerException {
064    
065                    getSchedulerEngineHelper().addScriptingJob(
066                            trigger, storageType, description, language, script,
067                            exceptionsMaxSize);
068            }
069    
070            public static void auditSchedulerJobs(
071                            Message message, TriggerState triggerState)
072                    throws SchedulerException {
073    
074                    getSchedulerEngineHelper().auditSchedulerJobs(message, triggerState);
075            }
076    
077            public static void delete(
078                            SchedulerEntry schedulerEntry, StorageType storageType)
079                    throws SchedulerException {
080    
081                    getSchedulerEngineHelper().delete(schedulerEntry, storageType);
082            }
083    
084            public static void delete(String groupName, StorageType storageType)
085                    throws SchedulerException {
086    
087                    getSchedulerEngineHelper().delete(groupName, storageType);
088            }
089    
090            public static void delete(
091                            String jobName, String groupName, StorageType storageType)
092                    throws SchedulerException {
093    
094                    getSchedulerEngineHelper().delete(jobName, groupName, storageType);
095            }
096    
097            public static String getCronText(
098                    Calendar calendar, boolean timeZoneSensitive) {
099    
100                    return getSchedulerEngineHelper().getCronText(
101                            calendar, timeZoneSensitive);
102            }
103    
104            public static String getCronText(
105                    PortletRequest portletRequest, Calendar calendar,
106                    boolean timeZoneSensitive, int recurrenceType) {
107    
108                    return getSchedulerEngineHelper().getCronText(
109                            portletRequest, calendar, timeZoneSensitive, recurrenceType);
110            }
111    
112            public static Date getEndTime(SchedulerResponse schedulerResponse) {
113                    return getSchedulerEngineHelper().getEndTime(schedulerResponse);
114            }
115    
116            public static Date getEndTime(
117                            String jobName, String groupName, StorageType storageType)
118                    throws SchedulerException {
119    
120                    return getSchedulerEngineHelper().getEndTime(
121                            jobName, groupName, storageType);
122            }
123    
124            public static Date getFinalFireTime(SchedulerResponse schedulerResponse) {
125                    return getSchedulerEngineHelper().getFinalFireTime(schedulerResponse);
126            }
127    
128            public static Date getFinalFireTime(
129                            String jobName, String groupName, StorageType storageType)
130                    throws SchedulerException {
131    
132                    return getSchedulerEngineHelper().getFinalFireTime(
133                            jobName, groupName, storageType);
134            }
135    
136            public static ObjectValuePair<Exception, Date>[] getJobExceptions(
137                    SchedulerResponse schedulerResponse) {
138    
139                    return getSchedulerEngineHelper().getJobExceptions(schedulerResponse);
140            }
141    
142            public static ObjectValuePair<Exception, Date>[] getJobExceptions(
143                            String jobName, String groupName, StorageType storageType)
144                    throws SchedulerException {
145    
146                    return getSchedulerEngineHelper().getJobExceptions(
147                            jobName, groupName, storageType);
148            }
149    
150            public static TriggerState getJobState(
151                    SchedulerResponse schedulerResponse) {
152    
153                    return getSchedulerEngineHelper().getJobState(schedulerResponse);
154            }
155    
156            public static TriggerState getJobState(
157                            String jobName, String groupName, StorageType storageType)
158                    throws SchedulerException {
159    
160                    return getSchedulerEngineHelper().getJobState(
161                            jobName, groupName, storageType);
162            }
163    
164            public static Date getNextFireTime(SchedulerResponse schedulerResponse) {
165                    return getSchedulerEngineHelper().getNextFireTime(schedulerResponse);
166            }
167    
168            public static Date getNextFireTime(
169                            String jobName, String groupName, StorageType storageType)
170                    throws SchedulerException {
171    
172                    return getSchedulerEngineHelper().getNextFireTime(
173                            jobName, groupName, storageType);
174            }
175    
176            public static Date getPreviousFireTime(
177                    SchedulerResponse schedulerResponse) {
178    
179                    return getSchedulerEngineHelper().getPreviousFireTime(
180                            schedulerResponse);
181            }
182    
183            public static Date getPreviousFireTime(
184                            String jobName, String groupName, StorageType storageType)
185                    throws SchedulerException {
186    
187                    return getSchedulerEngineHelper().getPreviousFireTime(
188                            jobName, groupName, storageType);
189            }
190    
191            public static SchedulerResponse getScheduledJob(
192                            String jobName, String groupName, StorageType storageType)
193                    throws SchedulerException {
194    
195                    return getSchedulerEngineHelper().getScheduledJob(
196                            jobName, groupName, storageType);
197            }
198    
199            public static List<SchedulerResponse> getScheduledJobs()
200                    throws SchedulerException {
201    
202                    return getSchedulerEngineHelper().getScheduledJobs();
203            }
204    
205            public static List<SchedulerResponse> getScheduledJobs(
206                            StorageType storageType)
207                    throws SchedulerException {
208    
209                    return getSchedulerEngineHelper().getScheduledJobs(storageType);
210            }
211    
212            public static List<SchedulerResponse> getScheduledJobs(
213                            String groupName, StorageType storageType)
214                    throws SchedulerException {
215    
216                    return getSchedulerEngineHelper().getScheduledJobs(
217                            groupName, storageType);
218            }
219    
220            public static SchedulerEngineHelper getSchedulerEngineHelper() {
221                    PortalRuntimePermission.checkGetBeanProperty(
222                            SchedulerEngineHelperUtil.class);
223    
224                    return _instance._serviceTracker.getService();
225            }
226    
227            public static Date getStartTime(SchedulerResponse schedulerResponse) {
228                    return getSchedulerEngineHelper().getStartTime(schedulerResponse);
229            }
230    
231            public static Date getStartTime(
232                            String jobName, String groupName, StorageType storageType)
233                    throws SchedulerException {
234    
235                    return getSchedulerEngineHelper().getStartTime(
236                            jobName, groupName, storageType);
237            }
238    
239            public static boolean isClusteredSchedulerEngine() {
240                    return getSchedulerEngineHelper().isClusteredSchedulerEngine();
241            }
242    
243            public static void pause(String groupName, StorageType storageType)
244                    throws SchedulerException {
245    
246                    getSchedulerEngineHelper().pause(groupName, storageType);
247            }
248    
249            public static void pause(
250                            String jobName, String groupName, StorageType storageType)
251                    throws SchedulerException {
252    
253                    getSchedulerEngineHelper().pause(jobName, groupName, storageType);
254            }
255    
256            public static void resume(String groupName, StorageType storageType)
257                    throws SchedulerException {
258    
259                    getSchedulerEngineHelper().resume(groupName, storageType);
260            }
261    
262            public static void resume(
263                            String jobName, String groupName, StorageType storageType)
264                    throws SchedulerException {
265    
266                    getSchedulerEngineHelper().resume(jobName, groupName, storageType);
267            }
268    
269            public static void schedule(
270                            SchedulerEntry schedulerEntry, StorageType storageType,
271                            String portletId, int exceptionsMaxSize)
272                    throws SchedulerException {
273    
274                    getSchedulerEngineHelper().schedule(
275                            schedulerEntry, storageType, portletId, exceptionsMaxSize);
276            }
277    
278            public static void schedule(
279                            Trigger trigger, StorageType storageType, String description,
280                            String destinationName, Message message, int exceptionsMaxSize)
281                    throws SchedulerException {
282    
283                    getSchedulerEngineHelper().schedule(
284                            trigger, storageType, description, destinationName, message,
285                            exceptionsMaxSize);
286            }
287    
288            public static void schedule(
289                            Trigger trigger, StorageType storageType, String description,
290                            String destinationName, Object payload, int exceptionsMaxSize)
291                    throws SchedulerException {
292    
293                    getSchedulerEngineHelper().schedule(
294                            trigger, storageType, description, destinationName, payload,
295                            exceptionsMaxSize);
296            }
297    
298            public static void shutdown() throws SchedulerException {
299                    getSchedulerEngineHelper().shutdown();
300            }
301    
302            public static void start() throws SchedulerException {
303                    getSchedulerEngineHelper().start();
304            }
305    
306            public static void suppressError(
307                            String jobName, String groupName, StorageType storageType)
308                    throws SchedulerException {
309    
310                    getSchedulerEngineHelper().suppressError(
311                            jobName, groupName, storageType);
312            }
313    
314            public static void unschedule(
315                            SchedulerEntry schedulerEntry, StorageType storageType)
316                    throws SchedulerException {
317    
318                    getSchedulerEngineHelper().unschedule(schedulerEntry, storageType);
319            }
320    
321            public static void unschedule(String groupName, StorageType storageType)
322                    throws SchedulerException {
323    
324                    getSchedulerEngineHelper().unschedule(groupName, storageType);
325            }
326    
327            public static void unschedule(
328                            String jobName, String groupName, StorageType storageType)
329                    throws SchedulerException {
330    
331                    getSchedulerEngineHelper().unschedule(jobName, groupName, storageType);
332            }
333    
334            public static void update(
335                            String jobName, String groupName, StorageType storageType,
336                            String description, String language, String script,
337                            int exceptionsMaxSize)
338                    throws SchedulerException {
339    
340                    getSchedulerEngineHelper().update(
341                            jobName, groupName, storageType, description, language, script,
342                            exceptionsMaxSize);
343            }
344    
345            public static void update(Trigger trigger, StorageType storageType)
346                    throws SchedulerException {
347    
348                    getSchedulerEngineHelper().update(trigger, storageType);
349            }
350    
351            private SchedulerEngineHelperUtil() {
352                    Registry registry = RegistryUtil.getRegistry();
353    
354                    _serviceTracker = registry.trackServices(SchedulerEngineHelper.class);
355    
356                    _serviceTracker.open();
357            }
358    
359            private static final SchedulerEngineHelperUtil _instance =
360                    new SchedulerEngineHelperUtil();
361    
362            private final ServiceTracker<SchedulerEngineHelper, SchedulerEngineHelper>
363                    _serviceTracker;
364    
365    }