List of usage examples for com.liferay.portal.kernel.scheduler SchedulerEntry getTrigger
public Trigger getTrigger();
From source file:de.uhh.l2g.plugins.util.PortletScheduler.java
License:Open Source License
/** * Reads Scheduler entries from Portlet Preferences * /*from w ww. j a v a 2 s . com*/ * WARN: This will disable Multiple Quartz Jobs (Triggers) per Listener Feature * * @param schedulerClassName * @param portletId */ public void initScheduler(String schedulerClassName, ServiceContext serviceContext) { Portlet portlet = PortletLocalServiceUtil.getPortletById(serviceContext.getPortletId()); List<SchedulerEntry> jobs = new LinkedList<SchedulerEntry>(); List<SchedulerEntry> duplicates = new LinkedList<SchedulerEntry>(); LOG.info("Initializing schedulers for " + schedulerClassName + " " + portletId); this.schedulerClassName = schedulerClassName; this.portletId = serviceContext.getPortletId(); // Load Quartz Job (Unique for ClassName!) assembleMessageFromResponses(); // Fetch List of Schedulers started on portlet initialization (maybe we // do have a Trigger,...) jobs = portlet.getSchedulerEntries(); for (SchedulerEntry job : jobs) { // Grab first scheduler associated with given Class if (job.getEventListenerClass().equalsIgnoreCase(this.schedulerClassName)) { if (this.schedulerEntry == null) { LOG.info(job.toString()); this.schedulerEntry = job; // Get Trigger try { this.generalTrigger = job.getTrigger(); if (this.generalTrigger != null) { // Try persisting our Trigger in DB String currentCron = GetterUtil .getString(this.generalTrigger.getTriggerContent().toString()); this.triggerState = SchedulerEngineHelperUtil.getJobState(job.getEventListenerClass(), job.getEventListenerClass(), this.getStorageType()); String persistCron = ScheduledThreadLocalServiceUtil .getCronBySchedulerName(job.getEventListenerClass()); if (persistCron == null || persistCron.isEmpty()) ScheduledThreadLocalServiceUtil.addScheduledThread(schedulerClassName, currentCron, serviceContext); // Overwrite if we encounter new value (assume // PortletScheduler Names are unique) if (!persistCron.equals(currentCron) && !currentCron.isEmpty()) ScheduledThreadLocalServiceUtil.updateScheduledThread(schedulerClassName, currentCron, serviceContext); } } catch (SchedulerException t) { LOG.warn(t); } catch (SystemException e) { LOG.warn("Failed Loading Persitence - Recovery of Triggers will fail", e); } catch (PortalException e) { LOG.warn("", e); } } else { // Collect duplicate SchedulerEntries LOG.warn("Multiple runnging Jobs found for same Scheduled Task! Removing ... " + job); duplicates.add(job); } } } // remove duplicates jobs.removeAll(duplicates); // Check if we got what we've been looking for if (schedulerEntry == null) { LOG.warn("No SchedulerEntry found for this Job. Generating new Entry..."); assembleEntryFromSettings(portletId, this.triggerState); } }