package io.shockah.skylark.history; import java.text.SimpleDateFormat; import java.util.TimeZone; import org.pircbotx.Channel; import org.pircbotx.hooks.events.ActionEvent; import org.pircbotx.hooks.events.JoinEvent; import org.pircbotx.hooks.events.KickEvent; import org.pircbotx.hooks.events.MessageEvent; import org.pircbotx.hooks.events.ModeEvent; import org.pircbotx.hooks.events.NickChangeEvent; import org.pircbotx.hooks.events.NoticeEvent; import org.pircbotx.hooks.events.PartEvent; import org.pircbotx.hooks.events.QuitEvent; import org.pircbotx.hooks.events.UserModeEvent; import io.shockah.skylark.Bot; import io.shockah.skylark.commands.CommandsPlugin; import io.shockah.skylark.event.OutActionEvent; import io.shockah.skylark.event.OutMessageEvent; import io.shockah.skylark.event.OutNoticeEvent; import io.shockah.skylark.history.db.Line; import io.shockah.skylark.plugin.ListenerPlugin; import io.shockah.skylark.plugin.PluginManager; public class HistoryPlugin extends ListenerPlugin { @Dependency protected CommandsPlugin commandsPlugin; private HistoryCommand command; public SimpleDateFormat dateFormat; public HistoryPlugin(PluginManager manager, Info info) { super(manager, info); } @Override protected void onLoad() { dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); commandsPlugin.addNamedCommand(command = new HistoryCommand(this)); } @Override protected void onUnload() { commandsPlugin.removeNamedCommand(command); } public Line getLine(Channel channel, int id) { Line line = manager.app.databaseManager.get(Line.class, id); String server = channel.<Bot>getBot().manager.name; String channelName = channel.getName(); return line.server.equals(server) && line.channel.equals(channelName) ? line : null; } @Override protected void onMessage(MessageEvent e) { Line.createFrom(manager.app.databaseManager, e); } @Override protected void onOutMessage(OutMessageEvent e) { Line.createFrom(manager.app.databaseManager, e); } @Override protected void onAction(ActionEvent e) { if (e.getChannel() != null) Line.createFrom(manager.app.databaseManager, e); } @Override protected void onOutAction(OutActionEvent e) { if (e.getChannel() != null) Line.createFrom(manager.app.databaseManager, e); } @Override protected void onNotice(NoticeEvent e) { if (e.getChannel() != null) Line.createFrom(manager.app.databaseManager, e); } @Override protected void onOutNotice(OutNoticeEvent e) { if (e.getChannel() != null) Line.createFrom(manager.app.databaseManager, e); } @Override protected void onJoin(JoinEvent e) { Line.createFrom(manager.app.databaseManager, e); } @Override protected void onPart(PartEvent e) { Line.createFrom(manager.app.databaseManager, e); } @Override protected void onQuit(QuitEvent e) { Line.createFrom(manager.app.databaseManager, e); } @Override protected void onNickChange(NickChangeEvent e) { Line.createFrom(manager.app.databaseManager, e); } @Override protected void onKick(KickEvent e) { Line.createFrom(manager.app.databaseManager, e); } @Override protected void onMode(ModeEvent e) { if (e.getUser() != null || e.getUserHostmask() != null) Line.createFrom(manager.app.databaseManager, e); } @Override protected void onUserMode(UserModeEvent e) { Line.createFrom(manager.app.databaseManager, e); } }