/** * Copyright (C) 2011-2013,2017 Nicolas Vinot * Copyright (C) 2017 Christian Pierre MOMON * * This file is part of (April) Hebdobot. * * Hebdobot is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Hebdobot is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with Hebdobot. If not, see */ package org.april.hebdobot.cron; import org.apache.commons.lang3.StringUtils; import org.april.hebdobot.bot.Hebdobot; import org.quartz.JobExecutionContext; import org.quartz.Trigger; import org.quartz.Trigger.CompletedExecutionInstruction; import org.quartz.TriggerListener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * The Class Job. */ public class CronListener implements TriggerListener { private static final Logger logger = LoggerFactory.getLogger(CronListener.class); private CronValue cron; private Hebdobot bot; /** * Instantiates a new cron listener. * * @param bot * the bot * @param cron * the cron */ public CronListener(final Hebdobot bot, final CronValue cron) { if (cron == null) { throw new IllegalArgumentException("Null parameter cron."); } else if (bot == null) { throw new IllegalArgumentException("Null parameter bot."); } else { this.bot = bot; this.cron = cron; } } /* (non-Javadoc) * @see org.quartz.TriggerListener#getName() */ @Override public String getName() { return this.cron.getName(); } /* (non-Javadoc) * @see org.quartz.TriggerListener#triggerComplete(org.quartz.Trigger, org.quartz.JobExecutionContext, org.quartz.Trigger.CompletedExecutionInstruction) */ @Override public void triggerComplete(final Trigger trigger, final JobExecutionContext context, final CompletedExecutionInstruction triggerInstructionCode) { } /* (non-Javadoc) * @see org.quartz.TriggerListener#triggerFired(org.quartz.Trigger, org.quartz.JobExecutionContext) */ @Override public void triggerFired(final Trigger trigger, final JobExecutionContext context) { logger.info("CRON FIRE " + context.getTrigger().getDescription()); if (StringUtils.isBlank(this.cron.getIrcMessage())) { logger.info("No IRC message so no notify."); } else { this.bot.notifyIrc(this.cron.getIrcMessage()); } if (StringUtils.isBlank(this.cron.getTwitterMessage())) { logger.info("No Twitter message so no notify."); } else { this.bot.notifyTwitter(this.cron.getTwitterMessage(), this.cron.getImageFile()); } } /* (non-Javadoc) * @see org.quartz.TriggerListener#triggerMisfired(org.quartz.Trigger) */ @Override public void triggerMisfired(final Trigger trigger) { } /* (non-Javadoc) * @see org.quartz.TriggerListener#vetoJobExecution(org.quartz.Trigger, org.quartz.JobExecutionContext) */ @Override public boolean vetoJobExecution(final Trigger trigger, final JobExecutionContext context) { return false; } }