package core;
import polly.reminds.MSG;
import polly.reminds.MyPlugin;
import de.skuzzle.polly.sdk.FormatManager;
import de.skuzzle.polly.sdk.IrcManager;
import de.skuzzle.polly.sdk.Types.StringType;
import de.skuzzle.polly.sdk.User;
import de.skuzzle.polly.sdk.eventlistener.MessageAdapter;
import de.skuzzle.polly.sdk.eventlistener.MessageEvent;
import de.skuzzle.polly.sdk.eventlistener.MessageListener;
import de.skuzzle.polly.tools.concurrent.RunLater;
import entities.RemindEntity;
public class AutoSnoozeRunLater extends RunLater {
private final MessageListener listener;
private final IrcManager ircManager;
private final User forUser;
public AutoSnoozeRunLater(String name, final User forUser, long timespan,
final IrcManager ircManager, final RemindManager remindManager,
final FormatManager formatter) {
super(name, timespan);
this.ircManager = ircManager;
this.forUser = forUser;
this.listener = new MessageAdapter() {
@Override
public void privateMessage(MessageEvent e) {
final String nick = forUser.getCurrentNickName();
final String indicator = ((StringType) forUser.getAttribute(
MyPlugin.AUTO_SNOOZE_INDICATOR)).getValue();
if (e.getUser().getNickName().equals(nick)) {
AutoSnoozeRunLater.this.stop();
if (e.getMessage().equals(indicator)) {
try {
RemindEntity re = remindManager.snooze(forUser);
ircManager.sendMessage(nick, MSG.bind(MSG.snoozeSuccess,
formatter.formatDate(re.getDueDate()),
re.getId()), this);
} catch (Exception e1) {
e1.printStackTrace();
}
}
}
}
};
}
@Override
public void started() {
ircManager.addMessageListener(this.listener);
}
@Override
public void run() {
}
@Override
public void finished() {
this.ircManager.sendMessage(this.forUser.getCurrentNickName(),
MSG.autoSnoozeOff, this);
this.ircManager.removeMessageListener(this.listener);
}
}