package core; import de.skuzzle.polly.sdk.IrcManager; import de.skuzzle.polly.sdk.MailManager; import de.skuzzle.polly.sdk.User; import de.skuzzle.polly.sdk.eventlistener.MessageEvent; import de.skuzzle.polly.sdk.eventlistener.MessageListener; import de.skuzzle.polly.sdk.exceptions.EMailException; import de.skuzzle.polly.sdk.time.Milliseconds; import de.skuzzle.polly.tools.concurrent.RunLater; public class MailRunLater extends RunLater implements MessageListener { private final static long DELAY = Milliseconds.fromSeconds(30); private final User user; private final IrcManager irc; private final MailManager mails; private final String subject; private final String message; private final String receiver; public MailRunLater(User user, IrcManager irc, MailManager mails, String subject, String message, String receiver) { super("MAIL_DELAY_" + user.getName(), DELAY); //$NON-NLS-1$ this.user = user; this.irc = irc; this.mails = mails;; this.subject = subject; this.message = message; this.receiver = receiver; irc.addMessageListener(this); } @Override public void run() { try { this.mails.sendMail(this.receiver, this.subject, this.message); } catch (EMailException e) { e.printStackTrace(); } } @Override public void finished() { this.irc.removeMessageListener(this); } @Override public void interrupted() { this.irc.removeMessageListener(this); } private void checkActivity(MessageEvent e) { if (e.getUser().getNickName().equals(this.user.getCurrentNickName())) { this.stop(); } } @Override public void publicMessage(MessageEvent e) { this.checkActivity(e); } @Override public void privateMessage(MessageEvent e) { this.checkActivity(e); } @Override public void actionMessage(MessageEvent e) { this.checkActivity(e); } @Override public void noticeMessage(MessageEvent e) { this.checkActivity(e); } }