package commands;
import java.util.Collections;
import java.util.List;
import polly.reminds.MSG;
import polly.reminds.MyPlugin;
import core.RemindFormatter;
import core.RemindManager;
import de.skuzzle.polly.sdk.FormatManager;
import de.skuzzle.polly.sdk.MyPolly;
import de.skuzzle.polly.sdk.Signature;
import de.skuzzle.polly.sdk.User;
import de.skuzzle.polly.sdk.exceptions.DuplicatedSignatureException;
import entities.RemindEntity;
public class MyRemindsCommand extends AbstractRemindCommand {
protected final static RemindFormatter FORMATTER = new RemindFormatter() {
@Override
protected String formatRemind(RemindEntity remind, FormatManager formatter) {
final String msg;
if (remind.isMail()) {
msg = MSG.myRemindFormatRemindMail;
} else {
msg = MSG.myRemindFormatRemind;
}
return MSG.bind(msg, remind.getId(),
remind.getForUser(),
remind.getMessage(),
formatter.formatDate(remind.getDueDate()),
formatter.formatDate(remind.getLeaveDate()),
remind.getFromUser());
}
@Override
protected String formatMessage(RemindEntity remind, FormatManager formatter) {
return MSG.bind(MSG.myRemindFormatMessage, remind.getId(),
remind.getForUser(), remind.getMessage(),
formatter.formatDate(remind.getLeaveDate()),
remind.getFromUser());
}
};
public MyRemindsCommand(MyPolly polly, RemindManager manager)
throws DuplicatedSignatureException {
super(polly, manager, "myreminds"); //$NON-NLS-1$
this.createSignature(MSG.myRemindSig0Desc, MyPlugin.MY_REMINDS_PERMISSION);
this.setRegisteredOnly();
this.setHelpText(MSG.myRemindHelp);
}
@Override
protected boolean executeOnBoth(User executer, String channel,
Signature signature) {
if (this.match(signature, 0)) {
List<RemindEntity> reminds =
this.remindManager.getDatabaseWrapper().getMyRemindsForUser(
executer.getCurrentNickName());
if (reminds.isEmpty()) {
this.reply(executer, MSG.myRemindNoRemind);
}
Collections.sort(reminds);
for (RemindEntity remind : reminds) {
this.reply(executer, FORMATTER.format(remind,
this.getMyPolly().formatting()));
}
}
return false;
}
}