diff --git a/src/main/java/com/redstoner/redstonerBot/managers/DataManager.java b/src/main/java/com/redstoner/redstonerBot/managers/DataManager.java index 56c6081..87f09fc 100644 --- a/src/main/java/com/redstoner/redstonerBot/managers/DataManager.java +++ b/src/main/java/com/redstoner/redstonerBot/managers/DataManager.java @@ -14,34 +14,24 @@ import java.util.Map; public class DataManager implements Manager { private static final Logger logger = LoggerFactory.getLogger(DataManager.class); - private static final String[] requiredTables = { "config", "opt_in", "rules", "rule_agree_reactions" }; - - private static Map config = new HashMap<>(); + private static final String[] requiredTables = { "config", "opt_in", "rules", "rule_sections", "rule_agree_reactions" }; public boolean start() { logger.info("Data Manager starting..."); if (checkConnection()) { - logger.info("Loading config..."); - - if (!loadConfig()) { - logger.error("Data Manager failed to load config!"); - return false; - } - logger.info("Data Manager started!"); return true; - } else { - logger.error("Data Manager failed to start!"); - return false; } + + logger.error("Data Manager failed to start!"); + return false; + } public boolean stop() { logger.info("Data Manager stopping..."); - config.clear(); - logger.info("Data Manager stopped!"); return true; } @@ -64,7 +54,7 @@ public class DataManager implements Manager { Class.forName("com.mysql.cj.jdbc.Driver"); Connection conn = getConnection(); - ResultSet rs = conn.prepareStatement("show tables").executeQuery(); + ResultSet rs = conn.prepareStatement("SHOW TABLES").executeQuery(); List tables = new ArrayList<>(); @@ -89,7 +79,23 @@ public class DataManager implements Manager { } public static String getConfigValue(String name) { - return config.get(name); + try { + Connection conn = getConnection(); + PreparedStatement ps = conn.prepareStatement("SELECT * FROM config WHERE name=?"); + + ps.setString(1, name); + + ResultSet rs = ps.executeQuery(); + rs.next(); + + String value = rs.getString(2); + + conn.close(); + return value; + } catch (SQLException e) { + logger.error("SQL error:", e); + return null; + } } public static boolean setConfigValue(String name, String value) { @@ -107,10 +113,7 @@ public class DataManager implements Manager { boolean succ = ps.execute(); - if (succ) { - config.put(name, value); - } - + conn.close(); return succ; } catch (SQLException e) { logger.error("SQL error:", e); @@ -118,31 +121,33 @@ public class DataManager implements Manager { } } - public static boolean loadConfig() { + public static Map getRuleSections() { try { Connection conn = getConnection(); - ResultSet rs = conn.prepareStatement("SELECT * FROM config").executeQuery(); + ResultSet rs = conn.prepareStatement("SELECT * FROM rule_sections").executeQuery(); - config.clear(); + Map sections = new HashMap<>(); while (rs.next()) { - String name = rs.getString(1); - String value = rs.getString(2); - - config.put(name, value); + sections.put(rs.getInt(1), rs.getString(2)); } - return true; + conn.close(); + return sections; } catch (SQLException e) { logger.error("SQL error:", e); - return false; + return new HashMap<>(); } } - public static List getRules() { + public static List getRules(int sectionId) { try { - Connection conn = getConnection(); - ResultSet rs = conn.prepareStatement("SELECT * FROM rules").executeQuery(); + Connection conn = getConnection(); + PreparedStatement ps = conn.prepareStatement("SELECT * FROM rules WHERE section_id=?"); + + ps.setInt(1, sectionId); + + ResultSet rs = ps.executeQuery(); List rules = new ArrayList<>(); @@ -150,6 +155,7 @@ public class DataManager implements Manager { rules.add(rs.getString(2)); } + conn.close(); return rules; } catch (SQLException e) { logger.error("SQL error:", e); @@ -168,6 +174,7 @@ public class DataManager implements Manager { reactions.put(rs.getString(3), rs.getString(2)); } + conn.close(); return reactions; } catch (SQLException e) { logger.error("SQL error:", e); @@ -192,6 +199,7 @@ public class DataManager implements Manager { optins.add(optin); } + conn.close(); return optins; } catch (SQLException e) { logger.error("SQL error:", e);