For sync purposes

Tried adding database concurrence
This commit is contained in:
Anthony committed 2018-02-16 23:04:24 -05:00
1 parent 7da01a64db
commit 182cb1aa9b
6 files changed
+102 -26

No files matched your search

@@ -5,6 +5,7 @@ import java.sql.SQLException;
public abstract class AbstractController { public abstract class AbstractController {
protected MysqlDatabase database; protected MysqlDatabase database;
private boolean isDoingSomething = false;
/** /**
* The controller name to be used in {@link DBController} get(String controller) method * The controller name to be used in {@link DBController} get(String controller) method
@@ -12,6 +13,22 @@ public abstract class AbstractController {
* @return String * @return String
*/ */
public abstract String getControllerName(); 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() { public void reconnect() {
database.reconnect(); database.reconnect();
@@ -6,6 +6,7 @@ import java.sql.SQLException;
import java.util.HashMap; import java.util.HashMap;
import java.util.Set; import java.util.Set;
import netneutrality.MusicBot;
import org.reflections.Reflections; import org.reflections.Reflections;
public class DBController { public class DBController {
@@ -34,7 +35,15 @@ public class DBController {
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); 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; return null;
@@ -69,7 +78,8 @@ public class DBController {
* Optional, will be called if the method {@link #get(String) get()} is used * Optional, will be called if the method {@link #get(String) get()} is used
*/ */
public static void init() { public static void init() {
loadControllers(); if (controllers.isEmpty())
loadControllers();
} }
/** /**
@@ -25,12 +25,12 @@ public class DBBlacklist extends AbstractController {
return database; return database;
} }
public int add(MBlacklist obj) { public void add(MBlacklist obj) {
try { try {
if (!isAlreadyBlacklisted(obj.getWord(), obj.getServerId())) { if (!isAlreadyBlacklisted(obj.getWord(), obj.getServerId())) {
int result = database.insert("INSERT INTO blacklist VALUES(?,?,?,?)", obj.getWord(), obj.getServerId(), int result = database.insert("INSERT INTO blacklist VALUES(?,?,?,?)", obj.getWord(), obj.getServerId(),
obj.isEnabled(), obj.getCreatorId()); obj.isEnabled(), obj.getCreatorId());
return result; end();
} else } else
throw new RuntimeException("Word is already blacklisted"); throw new RuntimeException("Word is already blacklisted");
} catch (SQLException e) { } catch (SQLException e) {
@@ -38,13 +38,14 @@ public class DBBlacklist extends AbstractController {
e.printStackTrace(); e.printStackTrace();
} }
return -1; end();
} }
public int delete(String word, String serverId) { public int delete(String word, String serverId) {
try { try {
if (isAlreadyBlacklisted(word, serverId)) { if (isAlreadyBlacklisted(word, serverId)) {
int result = database.delete("DELETE FROM blacklist WHERE word = ? AND serverId = ?", word, serverId); int result = database.delete("DELETE FROM blacklist WHERE word = ? AND serverId = ?", word, serverId);
end();
return result; return result;
} else } else
throw new RuntimeException("Is not blacklisted"); throw new RuntimeException("Is not blacklisted");
@@ -53,6 +54,7 @@ public class DBBlacklist extends AbstractController {
e.printStackTrace(); e.printStackTrace();
} }
end();
return -1; return -1;
} }
@@ -60,6 +62,7 @@ public class DBBlacklist extends AbstractController {
try { try {
if (isAlreadyBlacklisted(word, serverId)) { if (isAlreadyBlacklisted(word, serverId)) {
int result = database.update("UPDATE blacklist SET isEnabled = 1 WHERE word = ? AND serverId = ?", word, serverId); int result = database.update("UPDATE blacklist SET isEnabled = 1 WHERE word = ? AND serverId = ?", word, serverId);
end();
return result; return result;
} else } else
throw new RuntimeException("Is not blacklisted"); throw new RuntimeException("Is not blacklisted");
@@ -67,7 +70,8 @@ public class DBBlacklist extends AbstractController {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
} }
end();
return -1; return -1;
} }
@@ -75,6 +79,7 @@ public class DBBlacklist extends AbstractController {
try { try {
if (isAlreadyBlacklisted(word, serverId)) { if (isAlreadyBlacklisted(word, serverId)) {
int result = database.update("UPDATE blacklist SET isEnabled = 0 WHERE word = ? AND serverId = ?", word, serverId); int result = database.update("UPDATE blacklist SET isEnabled = 0 WHERE word = ? AND serverId = ?", word, serverId);
end();
return result; return result;
} else } else
throw new RuntimeException("Is not blacklisted"); throw new RuntimeException("Is not blacklisted");
@@ -83,6 +88,7 @@ public class DBBlacklist extends AbstractController {
e.printStackTrace(); e.printStackTrace();
} }
end();
return -1; return -1;
} }
@@ -92,8 +98,10 @@ public class DBBlacklist extends AbstractController {
ResultSet rs = database.prepareAndExecute("SELECT * FROM blacklist WHERE word = ? AND serverId = ?", word, serverId); ResultSet rs = database.prepareAndExecute("SELECT * FROM blacklist WHERE word = ? AND serverId = ?", word, serverId);
Object array[][] = database.convertToArray(rs); Object array[][] = database.convertToArray(rs);
if (database.getNbRow() != 0) { 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]); (String) array[1][1]);
end();
return blacklisted;
} }
} else } else
throw new RuntimeException("Is not blacklisted"); throw new RuntimeException("Is not blacklisted");
@@ -101,6 +109,7 @@ public class DBBlacklist extends AbstractController {
e.printStackTrace(); e.printStackTrace();
} }
end();
return null; return null;
} }
@@ -127,16 +136,21 @@ public class DBBlacklist extends AbstractController {
throw new RuntimeException("Blacklist is empty"); throw new RuntimeException("Blacklist is empty");
} }
end();
return output; return output;
} }
public boolean isAlreadyBlacklisted(String word, String serverId) throws SQLException { public boolean isAlreadyBlacklisted(String word, String serverId) throws SQLException {
ResultSet rs = database.prepareAndExecute("SELECT COUNT(*) FROM blacklist WHERE word = ? AND serverId = ?", word, serverId); ResultSet rs = database.prepareAndExecute("SELECT COUNT(*) FROM blacklist WHERE word = ? AND serverId = ?", word, serverId);
if (rs.next()) { if (rs.next()) {
if (rs.getInt(1) == 0) if (rs.getInt(1) == 0) {
end();
return false; return false;
}
} }
end();
return true; return true;
} }
@@ -31,12 +31,15 @@ public class DBMessage extends AbstractController {
LogHandler.log(e); LogHandler.log(e);
} }
end();
} }
public int logEdit(String messageId, String newMessage) { public int logEdit(String messageId, String newMessage) {
try { 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) { } catch (SQLException e) {
LogHandler.log(e); LogHandler.log(e);
} }
@@ -49,8 +52,12 @@ public class DBMessage extends AbstractController {
try { try {
ResultSet rs = database.prepareAndExecute("SELECT * FROM log_message WHERE messageId = ?", messageId); ResultSet rs = database.prepareAndExecute("SELECT * FROM log_message WHERE messageId = ?", messageId);
Object[][] array = database.convertToArray(rs); Object[][] array = database.convertToArray(rs);
if (database.getNbRow() != 0) 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]); 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) { } catch (SQLException e) {
LogHandler.log(e); LogHandler.log(e);
@@ -74,7 +81,8 @@ public class DBMessage extends AbstractController {
} catch (SQLException e) { } catch (SQLException e) {
LogHandler.log(e); LogHandler.log(e);
} }
end();
return messages; return messages;
} }
@@ -82,12 +90,16 @@ public class DBMessage extends AbstractController {
try { try {
ResultSet rs = database.prepareAndExecute("SELECT message FROM log_message WHERE messageId = ?", messageId); ResultSet rs = database.prepareAndExecute("SELECT message FROM log_message WHERE messageId = ?", messageId);
if (rs.next()) if (rs.next()) {
end();
return rs.getString(1); return rs.getString(1);
}
} catch (SQLException e) { } catch (SQLException e) {
LogHandler.log(e); LogHandler.log(e);
} }
end();
return "No message found"; return "No message found";
} }
@@ -95,12 +107,16 @@ public class DBMessage extends AbstractController {
try { try {
int result = database.insert("INSERT INTO logging VALUES(?,?,?)", serverId, channelId, true); int result = database.insert("INSERT INTO logging VALUES(?,?,?)", serverId, channelId, true);
if (result == 1) if (result == 1) {
end();
return true; return true;
}
} catch (SQLException e) { } catch (SQLException e) {
LogHandler.log(e); LogHandler.log(e);
} }
end();
return false; return false;
} }
@@ -108,12 +124,16 @@ public class DBMessage extends AbstractController {
try { try {
int result = database.update("UPDATE logging SET enabled = NOT enabled"); int result = database.update("UPDATE logging SET enabled = NOT enabled");
if (result == 1) if (result == 1) {
end();
return true; return true;
}
} catch (SQLException e) { } catch (SQLException e) {
LogHandler.log(e); LogHandler.log(e);
} }
end();
return false; return false;
} }
@@ -121,12 +141,16 @@ public class DBMessage extends AbstractController {
try { try {
ResultSet rs = database.prepareAndExecute("SELECT enabled FROM logging WHERE serverId = ? AND channelId = ?", serverId, channelId); 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); return rs.getBoolean(1);
}
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
} }
end();
return false; return false;
} }
@@ -20,13 +20,15 @@ public class DBSettings extends AbstractController {
try { try {
ResultSet rs = database.prepareAndExecute("SELECT channelId FROM logging WHERE serverId = ? AND enabled = 1", serverId); ResultSet rs = database.prepareAndExecute("SELECT channelId FROM logging WHERE serverId = ? AND enabled = 1", serverId);
if (rs.next()) { if (rs.next()) {
end();
return rs.getString(1); return rs.getString(1);
} }
} catch (SQLException e) { } catch (SQLException e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
} }
end();
return null; return null;
} }
@@ -34,6 +36,7 @@ public class DBSettings extends AbstractController {
try { try {
ResultSet rs = database.prepareAndExecute("SELECT token FROM settings"); ResultSet rs = database.prepareAndExecute("SELECT token FROM settings");
if (rs.next()) { if (rs.next()) {
end();
return rs.getString(1); return rs.getString(1);
} }
} catch (SQLException e) { } catch (SQLException e) {
@@ -41,6 +44,7 @@ public class DBSettings extends AbstractController {
e.printStackTrace(); e.printStackTrace();
} }
end();
return null; return null;
} }
@@ -48,6 +52,7 @@ public class DBSettings extends AbstractController {
try { try {
ResultSet rs = database.prepareAndExecute("SELECT selly_email FROM settings"); ResultSet rs = database.prepareAndExecute("SELECT selly_email FROM settings");
if (rs.next()) { if (rs.next()) {
end();
return rs.getString(1); return rs.getString(1);
} }
} catch (SQLException e) { } catch (SQLException e) {
@@ -55,6 +60,7 @@ public class DBSettings extends AbstractController {
e.printStackTrace(); e.printStackTrace();
} }
end();
return null; return null;
} }
@@ -62,6 +68,7 @@ public class DBSettings extends AbstractController {
try { try {
ResultSet rs = database.prepareAndExecute("SELECT selly_key FROM settings"); ResultSet rs = database.prepareAndExecute("SELECT selly_key FROM settings");
if (rs.next()) { if (rs.next()) {
end();
return rs.getString(1); return rs.getString(1);
} }
} catch (SQLException e) { } catch (SQLException e) {
@@ -69,6 +76,7 @@ public class DBSettings extends AbstractController {
e.printStackTrace(); e.printStackTrace();
} }
end();
return null; return null;
} }
@@ -46,10 +46,13 @@ public class NewCommandListener extends ListenerAdapter {
if (event.isFromType(ChannelType.TEXT)) { if (event.isFromType(ChannelType.TEXT)) {
((DBMessage) DBController.get("message")).log(event.getGuild().getName(), event.getTextChannel().getName(), new Thread(() -> {
event.getMember().getUser().getName(), ((DBMessage) DBController.get("message")).log(event.getGuild().getName(), event.getTextChannel().getName(),
event.getMessage().getCreationTime().format(DateTimeFormatter.ofPattern(Settings.DATETIMEFORMAT)), event.getMessage().getId(), event.getMember().getUser().getName(),
event.getMessage().getContentDisplay().trim()); event.getMessage().getCreationTime().format(DateTimeFormatter.ofPattern(Settings.DATETIMEFORMAT)), event.getMessage().getId(),
event.getMessage().getContentDisplay().trim());
}).start();
} }