diff --git a/src/main/java/netneutrality/db/MysqlDatabase.java b/src/main/java/netneutrality/db/MysqlDatabase.java index 1ab401f..a3be18d 100644 --- a/src/main/java/netneutrality/db/MysqlDatabase.java +++ b/src/main/java/netneutrality/db/MysqlDatabase.java @@ -62,9 +62,7 @@ public class MysqlDatabase { * @param query The SQL query to execute * @return {@link ResultSet} */ - public ResultSet query(String query) { - logger.debug("Query: " + query); - + protected ResultSet query(String query) { Statement stmt; try { stmt = connection.createStatement(); @@ -84,7 +82,7 @@ public class MysqlDatabase { * @param params The parameters to include in the query * @return an integer of how many row were affected */ - public synchronized int update(String sql, Object... params) { + protected synchronized int update(String sql, Object... params) { return executeUpdate(sql, params); } @@ -96,7 +94,7 @@ public class MysqlDatabase { * @param params The parameters to include in the query * @return an integer of how many row were affected */ - public synchronized int insert(String sql, Object... params) { + protected synchronized int insert(String sql, Object... params) { return executeUpdate(sql, params); } @@ -108,7 +106,7 @@ public class MysqlDatabase { * @param params The parameters to include in the query * @return an integer of how many row were affected */ - public synchronized int delete(String sql, Object... params) { + protected synchronized int delete(String sql, Object... params) { return executeUpdate(sql, params); } @@ -139,7 +137,7 @@ public class MysqlDatabase { * @param params The parameters to include in the query * @return a ResultSet object, which can be converted to a model using {@link MysqlDatabase#convertToTableModel(ResultSet)} */ - public synchronized ResultSet prepareAndExecute(String sql, Object... params) { + protected synchronized ResultSet prepareAndExecute(String sql, Object... params) { try { PreparedStatement query = connection.prepareStatement(sql); @@ -212,7 +210,7 @@ public class MysqlDatabase { * @throws SQLException */ public void close() throws SQLException { - logger.info("Closing database..."); + System.out.println("Closing database..."); connection.close(); } @@ -250,8 +248,9 @@ public class MysqlDatabase { * @param rs The ResultSet returned by the SELECT query * @return a {@link MTableModel} with the appropriate column and rows */ - public static MTableModel convertToTableModel(ResultSet rs, String tableName) { + protected static MTableModel convertToTableModel(ResultSet rs, String tableName) { MTableModel table = new MTableModel(); + table.setName(tableName); try { ResultSetMetaData metadata = rs.getMetaData(); @@ -275,33 +274,4 @@ public class MysqlDatabase { return table; } - /** - * @param rs The ResultSet returned by the SELECT query - * @return a {@link MTableModel} with the appropriate column and rows - */ - public static MTableModel convertToTableModel(ResultSet rs) { - MTableModel table = new MTableModel(); - - try { - ResultSetMetaData metadata = rs.getMetaData(); - - for (int i = 1; i < metadata.getColumnCount() + 1; i++) { - table.addColumn(metadata.getColumnName(i)); - } - - while (rs.next()) { - MRowModel row = new MRowModel(); - for (int i = 0; i < metadata.getColumnCount(); i++) { - row.addColumnToRow(rs.getObject(i + 1)); - } - table.addRow(row); - } - - } catch (SQLException e) { - e.printStackTrace(); - } - - return table; - } - } diff --git a/src/main/java/netneutrality/db/controllers/DBGuild.java b/src/main/java/netneutrality/db/controllers/DBGuild.java index 84edf01..cca67e1 100644 --- a/src/main/java/netneutrality/db/controllers/DBGuild.java +++ b/src/main/java/netneutrality/db/controllers/DBGuild.java @@ -5,11 +5,16 @@ package netneutrality.db.controllers;/* * https://discord.gg/CdFcyQ */ +import net.dv8tion.jda.api.entities.Guild; import netneutrality.db.AbstractController; public class DBGuild extends AbstractController { - + public void insertGuildInDB(Guild g) { + if (!database.exists("guilds", "guild_id", g.getId())) { + database.prepareAndExecuteAsync("INSERT INTO guilds VALUES(?, ?, ?)", g.getId(), "0", null).blocking(); + } + } @Override public String getControllerName() { diff --git a/src/main/java/netneutrality/db/controllers/DBLogging.java b/src/main/java/netneutrality/db/controllers/DBLogging.java index 41805f4..d7fc6b4 100644 --- a/src/main/java/netneutrality/db/controllers/DBLogging.java +++ b/src/main/java/netneutrality/db/controllers/DBLogging.java @@ -13,6 +13,7 @@ import netneutrality.MusicBot; import netneutrality.ThreadManager; import netneutrality.db.AbstractController; import netneutrality.db.DBController; +import netneutrality.db.models.MTableModel; import netneutrality.handler.LogHandler; import java.sql.ResultSet; @@ -21,27 +22,9 @@ import java.util.function.Consumer; public class DBLogging extends AbstractController { - public void logGuild(Guild g) { - ThreadManager.getExecutor("db-action").submit(() -> { - if (!database.exists("guilds", "guild_id", g.getId())) { - database.insert("INSERT INTO guilds VALUES(?, ?, ?)", g.getId(), g.getName(), g.getOwner().getUser().getName()); - } - }); - } - public void getLoggingChannel(String serverId, Consumer success) { - - ThreadManager.getExecutor("db-action").submit(() -> { - TextChannel txt = null; - ResultSet rs = database.prepareAndExecute("SELECT channelId FROM logging WHERE serverId = ?", serverId); - - try { - if (rs.next()) { - txt = MusicBot.getJDA().getGuildById(serverId).getTextChannelById(rs.getString(1)); - } - } catch (SQLException e) { - e.printStackTrace(); - } + database.prepareAndExecuteAsync("SELECT channelId FROM logging WHERE serverId = ?", serverId).async((table) -> { + TextChannel txt = MusicBot.getJDA().getGuildById(serverId).getTextChannelById((String) table.getRow(0).get(0)); success.accept(txt); }); @@ -49,26 +32,17 @@ public class DBLogging extends AbstractController { } public void setupLog(String serverId, String channelId) { - database.insert("INSERT INTO logging VALUES(?,?,?)", serverId, channelId, true); + database.prepareAndExecuteAsync("INSERT INTO logging VALUES(?,?,?)", serverId, channelId, true).blocking(); } public void toggleLog(String serverId, String channelId) { - database.update("UPDATE logging SET enabled = NOT enabled"); + database.prepareAndExecuteAsync("UPDATE logging SET enabled = NOT enabled WHERE serverId = ? AND channelId = ?", serverId, channelId).blocking(); } public boolean isLoggingEnabled(String serverId, String channelId) { + MTableModel table = database.prepareAndExecuteAsync("SELECT enabled FROM logging WHERE serverId = ? AND channelId = ?", serverId, channelId).blocking(); - try { - ResultSet rs = database.prepareAndExecute("SELECT enabled FROM logging WHERE serverId = ? AND channelId = ?", serverId, channelId); - if (rs.next()) { - return rs.getBoolean(1); - } - - } catch (SQLException e) { - e.printStackTrace(); - } - - return false; + return Boolean.parseBoolean((String) table.getRow(0).get(0)); } @Override diff --git a/src/main/java/netneutrality/db/controllers/DBMessage.java b/src/main/java/netneutrality/db/controllers/DBMessage.java index 7b32ec9..7386ac1 100644 --- a/src/main/java/netneutrality/db/controllers/DBMessage.java +++ b/src/main/java/netneutrality/db/controllers/DBMessage.java @@ -36,15 +36,14 @@ public class DBMessage extends AbstractController { } public void log(Guild guild, TextChannel channel, User author, Message message) { - String servername = guild.getId(); - String channelname = channel.getName(); - String username = author.getName(); + String serverid = guild.getId(); + String channelid = channel.getId(); + String userid = author.getId(); String datesent = message.getTimeCreated().format(DateTimeFormatter.ofPattern(Settings.getInstance().DATETIMEFORMAT)); String messageid = message.getId(); String msg = message.getContentRaw().trim(); - database.prepareAndExecuteAsync("INSERT INTO log_message VALUES(?,?,?,?,?,?,?)", servername, channelname, username, datesent, messageid, msg, null).async(); - + database.prepareAndExecuteAsync("INSERT INTO log_message VALUES(?,?,?,?,?,?,?)", serverid, channelid, userid, datesent, messageid, msg, null).async(); } public void logEdit(String messageId, String newMessage) { @@ -53,18 +52,16 @@ public class DBMessage extends AbstractController { } public MMessage getMessage(String messageId) { - ResultSet rs = database.prepareAndExecute("SELECT * FROM log_message WHERE messageId = ?", messageId); - MTableModel table = MysqlDatabase.convertToTableModel(rs); + MTableModel table = database.prepareAndExecuteAsync("SELECT * FROM log_message WHERE messageId = ?", messageId).blocking(); if (table.getNbRows() > 0) { return new MMessage(table.getRowModel(0)); } - return null; } public void getMessagesFromUser(String username, String serverName, int max, Consumer> success) { - database.prepareAndExecuteAsync("SELECT * FROM log_message WHERE userName = ? AND serverName = ? ORDER BY dateSent DESC LIMIT ?", username, serverName, max).async(table -> { + database.prepareAndExecuteAsync("SELECT * FROM log_message WHERE userId = ? AND serverId = ? ORDER BY dateSent DESC LIMIT ?", username, serverName, max).async(table -> { ArrayList messages = new ArrayList<>(); if (table.getNbRows() > 0) { @@ -82,32 +79,20 @@ public class DBMessage extends AbstractController { public ArrayList getMessagesFromUser(String username, String serverName, int max) { ArrayList messages = new ArrayList<>(); - ResultSet rs = database.prepareAndExecute("SELECT * FROM log_message WHERE userName = ? AND serverName = ? ORDER BY dateSent DESC LIMIT ?", username, serverName, max); - MTableModel table = MysqlDatabase.convertToTableModel(rs); + MTableModel table = database.prepareAndExecuteAsync("SELECT * FROM log_message WHERE userId = ? AND serverId = ? ORDER BY dateSent DESC LIMIT ?", username, serverName, max).blocking();; if (table.getNbRows() > 0) { for (int row = 0; row < max; row++) { messages.add(new MMessage(table.getRowModel(row))); } } - return messages; } public String getMessageString(String messageId) { + MTableModel table = database.prepareAndExecuteAsync("SELECT message FROM log_message WHERE messageId = ?", messageId).blocking(); - try { - ResultSet rs = database.prepareAndExecute("SELECT message FROM log_message WHERE messageId = ?", messageId); - if (rs.next()) { - return rs.getString(1); - } - - } catch (SQLException e) { - logger.error(e.getMessage()); - LogHandler.log(e); - } - - return "No message found"; + return (String) table.getRowModel(0).getItem(0); } diff --git a/src/main/java/netneutrality/db/models/MMessage.java b/src/main/java/netneutrality/db/models/MMessage.java index 251c323..c8a50a8 100644 --- a/src/main/java/netneutrality/db/models/MMessage.java +++ b/src/main/java/netneutrality/db/models/MMessage.java @@ -2,27 +2,16 @@ package netneutrality.db.models; public class MMessage { - private String serverName; - private String channelName; - private String sender; - private String dateSent; - private String messageId; - private String message; - private String editedMessage; - - public MMessage(String serverName, String channelName, String sender, String dateSent, String messageId, - String message) { - this.serverName = serverName; - this.channelName = channelName; - this.sender = sender; - this.dateSent = dateSent; - this.messageId = messageId; - this.message = message; - this.editedMessage = ""; - } + private final String serverId; + private final String channelName; + private final String sender; + private final String dateSent; + private final String messageId; + private final String message; + private final String editedMessage; public MMessage(MRowModel row) { - this.serverName = (String) row.getItem(0); + this.serverId = (String) row.getItem(0); this.channelName = (String) row.getItem(1); this.sender = (String) row.getItem(2); this.dateSent = (String) row.getItem(3); @@ -31,75 +20,37 @@ public class MMessage { this.editedMessage = ""; } - public MMessage(Object serverName, Object channelName, Object sender, Object dateSent, Object messageId, Object message) { - this.serverName = (String) serverName; - this.channelName = (String) channelName; - this.sender = (String) sender; - this.dateSent = (String) dateSent; - this.messageId = (String) messageId; - this.message = (String) message; - this.editedMessage = ""; - } - - public String getServerName() { - return serverName; - } - - public void setServerName(String serverName) { - this.serverName = serverName; + public String getServerId() { + return serverId; } public String getChannelName() { return channelName; } - public void setChannelName(String channelName) { - this.channelName = channelName; - } - public String getSender() { return sender; } - public void setSender(String sender) { - this.sender = sender; - } - public String getDateSent() { return dateSent; } - public void setDateSent(String dateSent) { - this.dateSent = dateSent; - } - public String getMessageId() { return messageId; } - public void setMessageId(String messageId) { - this.messageId = messageId; - } - public String getMessage() { return message; } - public void setMessage(String message) { - this.message = message; - } - public String getEditedMessage() { return editedMessage; } - public void setEditedMessage(String editedMessage) { - this.editedMessage = editedMessage; - } - @Override public String toString() { - return "MMessage [serverName=" + serverName + ", channelName=" + channelName + ", sender=" + sender + return "MMessage [serverName=" + serverId + ", channelName=" + channelName + ", sender=" + sender + ", dateSent=" + dateSent + ", messageId=" + messageId + ", message=" + message + ", editedMessage=" + editedMessage + "]"; } diff --git a/src/main/java/netneutrality/handler/EditHandler.java b/src/main/java/netneutrality/handler/EditHandler.java index ab81501..6a991cc 100644 --- a/src/main/java/netneutrality/handler/EditHandler.java +++ b/src/main/java/netneutrality/handler/EditHandler.java @@ -9,6 +9,7 @@ import netneutrality.db.DBController; import netneutrality.db.MysqlDatabase; import netneutrality.db.controllers.DBMessage; import netneutrality.db.controllers.DBSettings; +import netneutrality.db.models.MTableModel; public class EditHandler extends ListenerAdapter { @@ -17,7 +18,9 @@ public class EditHandler extends ListenerAdapter { if (event.getAuthor().isBot()) return; - Object logChannel = MysqlDatabase.convertToTableModel(DBController.get().prepareAndExecute("SELECT channelId FROM logging WHERE serverId = ? AND enabled = 1", event.getGuild().getId())).getRowModel(0).getItem(0); + MTableModel table = DBController.get().prepareAndExecuteAsync("SELECT channelId FROM logging WHERE serverId = ? AND enabled = 1", event.getGuild().getId()).blocking(); + + Object logChannel = table.getRowModel(0).getItem(0); if (logChannel != null) { String originalMessage = ((DBMessage) DBController.get("message")).getMessageString(event.getMessage().getId()); ((DBMessage) DBController.get("message")).logEdit(event.getMessage().getId(), event.getMessage().getContentDisplay()); diff --git a/src/main/java/netneutrality/handler/NewCommandListener.java b/src/main/java/netneutrality/handler/NewCommandListener.java index fd86c05..df15bb9 100644 --- a/src/main/java/netneutrality/handler/NewCommandListener.java +++ b/src/main/java/netneutrality/handler/NewCommandListener.java @@ -50,6 +50,7 @@ public class NewCommandListener extends ListenerAdapter { if (msg.startsWith(Settings.getInstance().get("BOT_PREFIX", "$"))) { msg = msg.substring(Settings.getInstance().get("BOT_PREFIX", "$").length()); String cmd = msg.split(" ", 2)[0]; + String[] args = msg.replaceFirst("(" + cmd + ")( )?", "").split(" "); if (CommandManager.commands.containsKey(cmd) || CommandManager.commandsAlias.containsKey(cmd)) { @@ -62,7 +63,7 @@ public class NewCommandListener extends ListenerAdapter { } } - c.execute(event, msg.replaceFirst("(" + cmd + ")( )?", "")); + c.execute(event, args); } } } else { diff --git a/src/main/java/netneutrality/handler/ServerJoinHandler.java b/src/main/java/netneutrality/handler/ServerJoinHandler.java index 7b33992..ccffa70 100644 --- a/src/main/java/netneutrality/handler/ServerJoinHandler.java +++ b/src/main/java/netneutrality/handler/ServerJoinHandler.java @@ -9,13 +9,17 @@ package netneutrality.handler; import net.dv8tion.jda.api.events.guild.GuildJoinEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; +import netneutrality.db.DBController; +import netneutrality.db.controllers.DBGuild; import org.jetbrains.annotations.NotNull; public class ServerJoinHandler extends ListenerAdapter { @Override public void onGuildJoin(@NotNull GuildJoinEvent event){ - + if (!DBController.get().exists("guilds", "guild_id", event.getGuild().getId())) { + ((DBGuild) DBController.get("guild")).insertGuildInDB(event.getGuild()); + } }