/* * IDK Game Server by Steve Winfield * https://github.com/WinfieldSteve */ package org.stevewinfield.suja.idk.game.moderation; import org.apache.log4j.Logger; import org.magicwerk.brownies.collections.GapList; import org.stevewinfield.suja.idk.Bootloader; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.concurrent.ConcurrentHashMap; public class ModerationManager { private static final Logger logger = Logger.getLogger(ModerationManager.class); public ConcurrentHashMap<Integer, ModerationPresetMessage> getPresetMessages() { return presetMessages; } public ConcurrentHashMap<Integer, ModerationPresetAction> getPresetActions() { return presetActions; } public ModerationManager() { this.presetMessages = new ConcurrentHashMap<>(); this.presetActions = new ConcurrentHashMap<>(); try { int counter = 0; ResultSet row = Bootloader.getStorage().queryParams("SELECT * FROM moderation_presets").executeQuery(); while (row.next()) { final ModerationPresetMessage message = new ModerationPresetMessage(); message.set(row); this.presetMessages.put(message.getId(), message); counter++; } logger.info(counter + " Moderation Preset Message(s) loaded."); counter = 0; final GapList<ModerationPresetAction> subActions = new GapList<>(); row = Bootloader.getStorage().queryParams("SELECT * FROM moderation_preset_actions").executeQuery(); while (row.next()) { final ModerationPresetAction action = new ModerationPresetAction(); action.set(row); if (action.getParentId() < 0) { this.presetActions.put(action.getId(), action); counter++; } else { subActions.add(action); } } logger.info(counter + " Moderation Preset Action Categorie(s) loaded."); counter = 0; for (final ModerationPresetAction subAction : subActions) { if (this.presetActions.containsKey(subAction.getId())) { this.presetActions.get(subAction.getId()).addSubItem(subAction); counter++; } } logger.info(counter + " Moderation Preset Action(s) loaded."); } catch (final SQLException ex) { logger.error("SQL Exception", ex); } } public void logAction(final int moderatorId, final String logText) { try { final PreparedStatement statement = Bootloader.getStorage() .queryParams("INSERT INTO moderation_logs (moderator_id, log_text, timestamp) " + "VALUES (" + moderatorId + ", ?, " + Bootloader.getTimestamp() + ")" ); statement.setString(1, logText); statement.execute(); } catch (final SQLException ex) { logger.error("SQL Exception", ex); } } private final ConcurrentHashMap<Integer, ModerationPresetMessage> presetMessages; private final ConcurrentHashMap<Integer, ModerationPresetAction> presetActions; }