From 182cb1aa9b754dde23a313510496e0eea6e55888 Mon Sep 17 00:00:00 2001 From: Anthony Date: Fri, 16 Feb 2018 23:04:24 -0500 Subject: [PATCH] For sync purposes Tried adding database concurrence --- .../netneutrality/db/AbstractController.java | 17 +++++++ .../java/netneutrality/db/DBController.java | 14 +++++- .../db/controllers/DBBlacklist.java | 28 ++++++++--- .../db/controllers/DBMessage.java | 48 ++++++++++++++----- .../db/controllers/DBSettings.java | 10 +++- .../handler/NewCommandListener.java | 11 +++-- 6 files changed, 102 insertions(+), 26 deletions(-) diff --git a/src/main/java/netneutrality/db/AbstractController.java b/src/main/java/netneutrality/db/AbstractController.java index 01883ed..a63bbf7 100644 --- a/src/main/java/netneutrality/db/AbstractController.java +++ b/src/main/java/netneutrality/db/AbstractController.java @@ -5,6 +5,7 @@ import java.sql.SQLException; public abstract class AbstractController { protected MysqlDatabase database; + private boolean isDoingSomething = false; /** * The controller name to be used in {@link DBController} get(String controller) method @@ -12,6 +13,22 @@ public abstract class AbstractController { * @return String */ public abstract String getControllerName(); + + public boolean isDoingSomething() { + return isDoingSomething; + } + + public AbstractController start() { + System.out.println("Starting task.."); + isDoingSomething = true; + return this; + } + + public AbstractController end() { + System.out.println("Ended task!"); + isDoingSomething = false; + return this; + } public void reconnect() { database.reconnect(); diff --git a/src/main/java/netneutrality/db/DBController.java b/src/main/java/netneutrality/db/DBController.java index f6e4597..0923d3e 100644 --- a/src/main/java/netneutrality/db/DBController.java +++ b/src/main/java/netneutrality/db/DBController.java @@ -6,6 +6,7 @@ import java.sql.SQLException; import java.util.HashMap; import java.util.Set; +import netneutrality.MusicBot; import org.reflections.Reflections; public class DBController { @@ -34,7 +35,15 @@ public class DBController { } catch (SQLException e) { e.printStackTrace(); } - return controllers.get(controller); + + MusicBot.LOGGER.debug("Getting controller " + controllers.get(controller).getControllerName()); + do { + System.out.println("task is running"); + if (!controllers.get(controller).isDoingSomething()) { + return controllers.get(controller).start(); + } + } while (true); + } return null; @@ -69,7 +78,8 @@ public class DBController { * Optional, will be called if the method {@link #get(String) get()} is used */ public static void init() { - loadControllers(); + if (controllers.isEmpty()) + loadControllers(); } /** diff --git a/src/main/java/netneutrality/db/controllers/DBBlacklist.java b/src/main/java/netneutrality/db/controllers/DBBlacklist.java index f05efdd..15da918 100644 --- a/src/main/java/netneutrality/db/controllers/DBBlacklist.java +++ b/src/main/java/netneutrality/db/controllers/DBBlacklist.java @@ -25,12 +25,12 @@ public class DBBlacklist extends AbstractController { return database; } - public int add(MBlacklist obj) { + public void add(MBlacklist obj) { try { if (!isAlreadyBlacklisted(obj.getWord(), obj.getServerId())) { int result = database.insert("INSERT INTO blacklist VALUES(?,?,?,?)", obj.getWord(), obj.getServerId(), obj.isEnabled(), obj.getCreatorId()); - return result; + end(); } else throw new RuntimeException("Word is already blacklisted"); } catch (SQLException e) { @@ -38,13 +38,14 @@ public class DBBlacklist extends AbstractController { e.printStackTrace(); } - return -1; + end(); } public int delete(String word, String serverId) { try { if (isAlreadyBlacklisted(word, serverId)) { int result = database.delete("DELETE FROM blacklist WHERE word = ? AND serverId = ?", word, serverId); + end(); return result; } else throw new RuntimeException("Is not blacklisted"); @@ -53,6 +54,7 @@ public class DBBlacklist extends AbstractController { e.printStackTrace(); } + end(); return -1; } @@ -60,6 +62,7 @@ public class DBBlacklist extends AbstractController { try { if (isAlreadyBlacklisted(word, serverId)) { int result = database.update("UPDATE blacklist SET isEnabled = 1 WHERE word = ? AND serverId = ?", word, serverId); + end(); return result; } else throw new RuntimeException("Is not blacklisted"); @@ -67,7 +70,8 @@ public class DBBlacklist extends AbstractController { // TODO Auto-generated catch block e.printStackTrace(); } - + + end(); return -1; } @@ -75,6 +79,7 @@ public class DBBlacklist extends AbstractController { try { if (isAlreadyBlacklisted(word, serverId)) { int result = database.update("UPDATE blacklist SET isEnabled = 0 WHERE word = ? AND serverId = ?", word, serverId); + end(); return result; } else throw new RuntimeException("Is not blacklisted"); @@ -83,6 +88,7 @@ public class DBBlacklist extends AbstractController { e.printStackTrace(); } + end(); return -1; } @@ -92,8 +98,10 @@ public class DBBlacklist extends AbstractController { ResultSet rs = database.prepareAndExecute("SELECT * FROM blacklist WHERE word = ? AND serverId = ?", word, serverId); Object array[][] = database.convertToArray(rs); if (database.getNbRow() != 0) { - return new MBlacklist((String) array[1][0], (Boolean) array[1][2], (String) array[1][3], + MBlacklist blacklisted = new MBlacklist((String) array[1][0], (Boolean) array[1][2], (String) array[1][3], (String) array[1][1]); + end(); + return blacklisted; } } else throw new RuntimeException("Is not blacklisted"); @@ -101,6 +109,7 @@ public class DBBlacklist extends AbstractController { e.printStackTrace(); } + end(); return null; } @@ -127,16 +136,21 @@ public class DBBlacklist extends AbstractController { throw new RuntimeException("Blacklist is empty"); } + end(); return output; } public boolean isAlreadyBlacklisted(String word, String serverId) throws SQLException { ResultSet rs = database.prepareAndExecute("SELECT COUNT(*) FROM blacklist WHERE word = ? AND serverId = ?", word, serverId); if (rs.next()) { - if (rs.getInt(1) == 0) + if (rs.getInt(1) == 0) { + end(); return false; + } + } - + + end(); return true; } diff --git a/src/main/java/netneutrality/db/controllers/DBMessage.java b/src/main/java/netneutrality/db/controllers/DBMessage.java index e96f130..2ac56bd 100644 --- a/src/main/java/netneutrality/db/controllers/DBMessage.java +++ b/src/main/java/netneutrality/db/controllers/DBMessage.java @@ -31,12 +31,15 @@ public class DBMessage extends AbstractController { LogHandler.log(e); } + end(); } public int logEdit(String messageId, String newMessage) { try { - return database.update("UPDATE log_message SET editedMessage = ? WHERE messageId = ?", newMessage, messageId); + int result = database.update("UPDATE log_message SET editedMessage = ? WHERE messageId = ?", newMessage, messageId); + end(); + return result; } catch (SQLException e) { LogHandler.log(e); } @@ -49,8 +52,12 @@ public class DBMessage extends AbstractController { try { ResultSet rs = database.prepareAndExecute("SELECT * FROM log_message WHERE messageId = ?", messageId); Object[][] array = database.convertToArray(rs); - if (database.getNbRow() != 0) - return new MMessage(array[1][0], array[1][1], array[1][2], array[1][3], array[1][4], array[1][5]); + if (database.getNbRow() != 0) { + MMessage message = new MMessage(array[1][0], array[1][1], array[1][2], array[1][3], array[1][4], array[1][5]); + end(); + return message; + } + } catch (SQLException e) { LogHandler.log(e); @@ -74,7 +81,8 @@ public class DBMessage extends AbstractController { } catch (SQLException e) { LogHandler.log(e); } - + + end(); return messages; } @@ -82,12 +90,16 @@ public class DBMessage extends AbstractController { try { ResultSet rs = database.prepareAndExecute("SELECT message FROM log_message WHERE messageId = ?", messageId); - if (rs.next()) + if (rs.next()) { + end(); return rs.getString(1); + } + } catch (SQLException e) { LogHandler.log(e); } - + + end(); return "No message found"; } @@ -95,12 +107,16 @@ public class DBMessage extends AbstractController { try { int result = database.insert("INSERT INTO logging VALUES(?,?,?)", serverId, channelId, true); - if (result == 1) + if (result == 1) { + end(); return true; + } + } catch (SQLException e) { LogHandler.log(e); } - + + end(); return false; } @@ -108,12 +124,16 @@ public class DBMessage extends AbstractController { try { int result = database.update("UPDATE logging SET enabled = NOT enabled"); - if (result == 1) + if (result == 1) { + end(); return true; + } + } catch (SQLException e) { LogHandler.log(e); } - + + end(); return false; } @@ -121,12 +141,16 @@ public class DBMessage extends AbstractController { try { ResultSet rs = database.prepareAndExecute("SELECT enabled FROM logging WHERE serverId = ? AND channelId = ?", serverId, channelId); - if (rs.next()) + if (rs.next()) { + end(); return rs.getBoolean(1); + } + } catch (SQLException e) { e.printStackTrace(); } - + + end(); return false; } diff --git a/src/main/java/netneutrality/db/controllers/DBSettings.java b/src/main/java/netneutrality/db/controllers/DBSettings.java index 0a7cb7c..e546560 100644 --- a/src/main/java/netneutrality/db/controllers/DBSettings.java +++ b/src/main/java/netneutrality/db/controllers/DBSettings.java @@ -20,13 +20,15 @@ public class DBSettings extends AbstractController { try { ResultSet rs = database.prepareAndExecute("SELECT channelId FROM logging WHERE serverId = ? AND enabled = 1", serverId); if (rs.next()) { + end(); return rs.getString(1); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } - + + end(); return null; } @@ -34,6 +36,7 @@ public class DBSettings extends AbstractController { try { ResultSet rs = database.prepareAndExecute("SELECT token FROM settings"); if (rs.next()) { + end(); return rs.getString(1); } } catch (SQLException e) { @@ -41,6 +44,7 @@ public class DBSettings extends AbstractController { e.printStackTrace(); } + end(); return null; } @@ -48,6 +52,7 @@ public class DBSettings extends AbstractController { try { ResultSet rs = database.prepareAndExecute("SELECT selly_email FROM settings"); if (rs.next()) { + end(); return rs.getString(1); } } catch (SQLException e) { @@ -55,6 +60,7 @@ public class DBSettings extends AbstractController { e.printStackTrace(); } + end(); return null; } @@ -62,6 +68,7 @@ public class DBSettings extends AbstractController { try { ResultSet rs = database.prepareAndExecute("SELECT selly_key FROM settings"); if (rs.next()) { + end(); return rs.getString(1); } } catch (SQLException e) { @@ -69,6 +76,7 @@ public class DBSettings extends AbstractController { e.printStackTrace(); } + end(); return null; } diff --git a/src/main/java/netneutrality/handler/NewCommandListener.java b/src/main/java/netneutrality/handler/NewCommandListener.java index e925357..f23d5dd 100644 --- a/src/main/java/netneutrality/handler/NewCommandListener.java +++ b/src/main/java/netneutrality/handler/NewCommandListener.java @@ -46,10 +46,13 @@ public class NewCommandListener extends ListenerAdapter { if (event.isFromType(ChannelType.TEXT)) { - ((DBMessage) DBController.get("message")).log(event.getGuild().getName(), event.getTextChannel().getName(), - event.getMember().getUser().getName(), - event.getMessage().getCreationTime().format(DateTimeFormatter.ofPattern(Settings.DATETIMEFORMAT)), event.getMessage().getId(), - event.getMessage().getContentDisplay().trim()); + new Thread(() -> { + ((DBMessage) DBController.get("message")).log(event.getGuild().getName(), event.getTextChannel().getName(), + event.getMember().getUser().getName(), + event.getMessage().getCreationTime().format(DateTimeFormatter.ofPattern(Settings.DATETIMEFORMAT)), event.getMessage().getId(), + event.getMessage().getContentDisplay().trim()); + }).start(); + }