Refactored code

This commit is contained in:
Anthony Robert committed 2019-03-17 16:22:28 -04:00
1 parent 32d65af2cc
commit b249e89b56
20 files changed
+177 -208

No files matched your search

@@ -1,32 +0,0 @@
package netneutrality;
import net.dv8tion.jda.core.OnlineStatus;
import net.dv8tion.jda.core.managers.Presence;
public class StatusThread implements Runnable {
private Presence status;
public StatusThread(Presence pr) {
this.status = pr;
}
@Override
public void run() {
try {
while (true) {
status.setStatus(OnlineStatus.ONLINE);
Thread.sleep(10000);
status.setStatus(OnlineStatus.IDLE);
Thread.sleep(10000);
status.setStatus(OnlineStatus.DO_NOT_DISTURB);
Thread.sleep(10000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@@ -14,7 +14,7 @@ import java.util.concurrent.TimeUnit;
public class ThreadManager { public class ThreadManager {
public static final ExecutorService executor = Executors.newSingleThreadExecutor(); public static final ExecutorService executor = Executors.newSingleThreadExecutor();
public static ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); public static ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(2);
public static void shutdownExecutor() { public static void shutdownExecutor() {
try { try {
@@ -23,7 +23,7 @@ public class ThreadManager {
executor.awaitTermination(5, TimeUnit.SECONDS); executor.awaitTermination(5, TimeUnit.SECONDS);
} }
catch (InterruptedException e) { catch (InterruptedException e) {
System.err.println("[Executor] Running tasks interrupted!"); System.err.println("[Executor] Running tasks interrupted");
} }
finally { finally {
if (!executor.isTerminated()) { if (!executor.isTerminated()) {
@@ -21,25 +21,21 @@ public class PingCommand extends AbstractCommand {
@Override @Override
public boolean needAdmin() { public boolean needAdmin() {
// TODO Auto-generated method stub
return false; return false;
} }
@Override @Override
public boolean isEnabled() { public boolean isEnabled() {
// TODO Auto-generated method stub
return true; return true;
} }
@Override @Override
public String getCommand() { public String getCommand() {
// TODO Auto-generated method stub
return "ping"; return "ping";
} }
@Override @Override
public String[] getAlias() { public String[] getAlias() {
// TODO Auto-generated method stub
return new String[0]; return new String[0];
} }
@@ -68,25 +68,21 @@ public class BitcoinPriceCommand extends AbstractCommand {
@Override @Override
public boolean needAdmin() { public boolean needAdmin() {
// TODO Auto-generated method stub
return false; return false;
} }
@Override @Override
public boolean isEnabled() { public boolean isEnabled() {
// TODO Auto-generated method stub
return true; return true;
} }
@Override @Override
public String getCommand() { public String getCommand() {
// TODO Auto-generated method stub
return "bitcoin"; return "bitcoin";
} }
@Override @Override
public String[] getAlias() { public String[] getAlias() {
// TODO Auto-generated method stub
return new String[] {"btc"}; return new String[] {"btc"};
} }
@@ -60,25 +60,21 @@ public class EthereumPriceCommand extends AbstractCommand {
@Override @Override
public boolean needAdmin() { public boolean needAdmin() {
// TODO Auto-generated method stub
return false; return false;
} }
@Override @Override
public boolean isEnabled() { public boolean isEnabled() {
// TODO Auto-generated method stub
return true; return true;
} }
@Override @Override
public String getCommand() { public String getCommand() {
// TODO Auto-generated method stub
return "ethereum"; return "ethereum";
} }
@Override @Override
public String[] getAlias() { public String[] getAlias() {
// TODO Auto-generated method stub
return new String[] {"eth"}; return new String[] {"eth"};
} }
@@ -60,25 +60,21 @@ public class LitecoinPriceCommand extends AbstractCommand {
@Override @Override
public boolean needAdmin() { public boolean needAdmin() {
// TODO Auto-generated method stub
return false; return false;
} }
@Override @Override
public boolean isEnabled() { public boolean isEnabled() {
// TODO Auto-generated method stub
return true; return true;
} }
@Override @Override
public String getCommand() { public String getCommand() {
// TODO Auto-generated method stub
return "litecoin"; return "litecoin";
} }
@Override @Override
public String[] getAlias() { public String[] getAlias() {
// TODO Auto-generated method stub
return new String[] {"ltc"}; return new String[] {"ltc"};
} }
@@ -1,37 +1,26 @@
package netneutrality.command.message; package netneutrality.command.message;
import java.util.ArrayList;
import java.util.function.Consumer;
import net.dv8tion.jda.core.events.message.MessageReceivedEvent; import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
import netneutrality.command.AbstractCommand; import netneutrality.command.AbstractCommand;
import netneutrality.command.Visibility; import netneutrality.command.Visibility;
import netneutrality.db.DBController; import netneutrality.db.DBController;
import netneutrality.db.controllers.DBBlacklist; import netneutrality.db.controllers.DBBlacklist;
import netneutrality.db.models.MBlacklist; import netneutrality.db.models.MBlacklist;
import netneutrality.handler.LogHandler;
public class BlacklistCommand extends AbstractCommand { public class BlacklistCommand extends AbstractCommand {
public BlacklistCommand() {
// TODO Auto-generated constructor stub
}
@Override @Override
public boolean needAdmin() { public boolean needAdmin() {
// TODO Auto-generated method stub
return true; return true;
} }
@Override @Override
public boolean isEnabled() { public boolean isEnabled() {
// TODO Auto-generated method stub
return true; return true;
} }
@Override @Override
public String getCommand() { public String getCommand() {
// TODO Auto-generated method stub
return "blacklist"; return "blacklist";
} }
@@ -7,31 +7,23 @@ import netneutrality.utils.ChannelFunction;
public class PruneCommand extends AbstractCommand { public class PruneCommand extends AbstractCommand {
public PruneCommand() {
// TODO Auto-generated constructor stub
}
@Override @Override
public boolean needAdmin() { public boolean needAdmin() {
// TODO Auto-generated method stub
return true; return true;
} }
@Override @Override
public boolean isEnabled() { public boolean isEnabled() {
// TODO Auto-generated method stub
return true; return true;
} }
@Override @Override
public String getCommand() { public String getCommand() {
// TODO Auto-generated method stub
return "prune"; return "prune";
} }
@Override @Override
public String[] getAlias() { public String[] getAlias() {
// TODO Auto-generated method stub
return new String[] {"purge"}; return new String[] {"purge"};
} }
@@ -19,31 +19,23 @@ import netneutrality.utils.Settings;
public class DatabaseCommand extends AbstractCommand { public class DatabaseCommand extends AbstractCommand {
public DatabaseCommand() {
// TODO Auto-generated constructor stub
}
@Override @Override
public boolean needAdmin() { public boolean needAdmin() {
// TODO Auto-generated method stub
return true; return true;
} }
@Override @Override
public boolean isEnabled() { public boolean isEnabled() {
// TODO Auto-generated method stub
return true; return true;
} }
@Override @Override
public String getCommand() { public String getCommand() {
// TODO Auto-generated method stub
return "database"; return "database";
} }
@Override @Override
public String[] getAlias() { public String[] getAlias() {
// TODO Auto-generated method stub
return new String[] { "db" }; return new String[] { "db" };
} }
@@ -6,10 +6,6 @@ import netneutrality.command.Visibility;
public class NiggerCommand extends AbstractCommand { public class NiggerCommand extends AbstractCommand {
public NiggerCommand() {
}
@Override @Override
public String execute(MessageReceivedEvent event, String args) { public String execute(MessageReceivedEvent event, String args) {
event.getMessage().delete().queue(); event.getMessage().delete().queue();
@@ -20,25 +16,21 @@ public class NiggerCommand extends AbstractCommand {
@Override @Override
public boolean needAdmin() { public boolean needAdmin() {
// TODO Auto-generated method stub
return false; return false;
} }
@Override @Override
public boolean isEnabled() { public boolean isEnabled() {
// TODO Auto-generated method stub
return true; return true;
} }
@Override @Override
public String getCommand() { public String getCommand() {
// TODO Auto-generated method stub
return "nigger"; return "nigger";
} }
@Override @Override
public String[] getAlias() { public String[] getAlias() {
// TODO Auto-generated method stub
return new String[0]; return new String[0];
} }
@@ -6,31 +6,23 @@ import netneutrality.command.Visibility;
public class ShutdownCommand extends AbstractCommand { public class ShutdownCommand extends AbstractCommand {
public ShutdownCommand() {
// TODO Auto-generated constructor stub
}
@Override @Override
public boolean needAdmin() { public boolean needAdmin() {
// TODO Auto-generated method stub
return true; return true;
} }
@Override @Override
public boolean isEnabled() { public boolean isEnabled() {
// TODO Auto-generated method stub
return false; return false;
} }
@Override @Override
public String getCommand() { public String getCommand() {
// TODO Auto-generated method stub
return null; return null;
} }
@Override @Override
public String[] getAlias() { public String[] getAlias() {
// TODO Auto-generated method stub
return null; return null;
} }
@@ -5,7 +5,7 @@ public abstract class AbstractController {
protected MysqlDatabase database; protected MysqlDatabase database;
/** /**
* 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
* *
* @return String * @return String
*/ */
@@ -56,9 +56,7 @@ public class DBController {
public static void shutdown() { public static void shutdown() {
try { try {
database.close(); database.close();
} catch (SQLException e) { } catch (SQLException | NullPointerException ignored) { }
e.printStackTrace();
}
} }
/** /**
@@ -41,6 +41,8 @@ public class MysqlDatabase {
* @return {@link ResultSet} * @return {@link ResultSet}
*/ */
public ResultSet query(String query) { public ResultSet query(String query) {
MusicBot.LOGGER.debug("Query: " + query);
Statement stmt; Statement stmt;
try { try {
stmt = connection.createStatement(); stmt = connection.createStatement();
@@ -98,6 +100,8 @@ public class MysqlDatabase {
} }
private int executeUpdate(String sql, Object[] params) { private int executeUpdate(String sql, Object[] params) {
MusicBot.LOGGER.debug("Query: " + sql);
try { try {
PreparedStatement query = connection.prepareStatement(sql); PreparedStatement query = connection.prepareStatement(sql);
resolveParameters(query, params); resolveParameters(query, params);
@@ -118,6 +122,8 @@ public class MysqlDatabase {
* @return a ResultSet object, which can be converted to an model using {@link MysqlDatabase#convertToTableModel(ResultSet)} * @return a ResultSet object, which can be converted to an model using {@link MysqlDatabase#convertToTableModel(ResultSet)}
*/ */
public ResultSet prepareAndExecute(String sql, Object... params) { public ResultSet prepareAndExecute(String sql, Object... params) {
MusicBot.LOGGER.debug("Query: " + sql);
try { try {
PreparedStatement query = connection.prepareStatement(sql); PreparedStatement query = connection.prepareStatement(sql);
resolveParameters(query, params); resolveParameters(query, params);
@@ -14,129 +14,130 @@ import netneutrality.db.models.MTableModel;
public class DBBlacklist extends AbstractController { public class DBBlacklist extends AbstractController {
public DBBlacklist() { public DBBlacklist() {
} }
/** /**
* Returns an instance of {@link MysqlDatabase} with the database name as set in the {@link DBController} class * Returns an instance of {@link MysqlDatabase} with the database name as set in the {@link DBController} class
* *
* @return {@link MysqlDatabase} * @return {@link MysqlDatabase}
*/ */
public MysqlDatabase getDatabase() { public MysqlDatabase getDatabase() {
return database; return database;
} }
public void add(MBlacklist obj, Consumer<Boolean> success) { public void add(MBlacklist obj, Consumer<Boolean> success) {
ThreadManager.executor.submit(() -> { ThreadManager.executor.submit(() -> {
if (!isAlreadyBlacklisted(obj.getWord(), obj.getServerId())) { if (!isAlreadyBlacklisted(obj.getWord(), obj.getServerId())) {
database.insert("INSERT INTO blacklist VALUES(?,?,?,?)", obj.getWord(), obj.getServerId(), obj.isEnabled(), obj.getCreatorId()); database.insert("INSERT INTO blacklist VALUES(?,?,?,?)", obj.getWord(), obj.getServerId(), obj.isEnabled(), obj.getCreatorId());
success.accept(true); success.accept(true);
} else { } else {
success.accept(false); success.accept(false);
} }
});
}
public void delete(String word, String serverId, Consumer<Boolean> success) {
ThreadManager.executor.submit(() -> {
if (isAlreadyBlacklisted(word, serverId)) {
System.out.println("true");
database.delete("DELETE FROM blacklist WHERE word = ? AND serverId = ?", word, serverId);
success.accept(true);
} else {
success.accept(false);
}
});
}
public void enable(String word, String serverId, Consumer<Boolean> success) {
ThreadManager.executor.submit(() -> {
if (isAlreadyBlacklisted(word, serverId)) {
database.update("UPDATE blacklist SET isEnabled = 1 WHERE word = ? AND serverId = ?", word, serverId);
success.accept(true);
} else {
success.accept(false);
}
});
}
public void disable(String word, String serverId, Consumer<Boolean> success) {
ThreadManager.executor.submit(() -> {
if (isAlreadyBlacklisted(word, serverId)) {
database.update("UPDATE blacklist SET isEnabled = 0 WHERE word = ? AND serverId = ?", word, serverId);
success.accept(true);
} else {
success.accept(false);
}
});
}
public void getBlacklistForWord(String word, String serverId, Consumer<MBlacklist> success) {
ThreadManager.executor.submit(() -> {
MBlacklist blacklisted = null;
if (isAlreadyBlacklisted(word, serverId)) {
ResultSet rs = database.prepareAndExecute("SELECT * FROM blacklist WHERE word = ? AND serverId = ?", word, serverId);
MTableModel table = database.convertToTableModel(rs);
if (table.getNbRows() > 0) {
blacklisted = new MBlacklist((String) table.getRow(0).get(0), (Boolean) table.getRow(0).get(2), (String) table.getRow(0).get(3),
(String) table.getRow(0).get(1));
}
} else {
throw new RuntimeException("Is not blacklisted");
}
success.accept(blacklisted);
}); });
}
public void getBlacklistFromServer(String serverId, Consumer<ArrayList<MBlacklist>> success) { }
ThreadManager.executor.submit(() -> {
ArrayList<MBlacklist> output = new ArrayList<>();
try { public void delete(String word, String serverId, Consumer<Boolean> success) {
ResultSet rs = database.prepareAndExecute("SELECT * FROM blacklist WHERE serverId = ? AND isEnabled = 1", serverId); ThreadManager.executor.submit(() -> {
MTableModel model = MysqlDatabase.convertToTableModel(rs); if (isAlreadyBlacklisted(word, serverId)) {
System.out.println("true");
database.delete("DELETE FROM blacklist WHERE word = ? AND serverId = ?", word, serverId);
success.accept(true);
} else {
success.accept(false);
}
});
if (model.getNbRows() != 0) { }
for (int row = 0; row < model.getNbRows(); row++) {
output.add(new MBlacklist((String) model.getRow(row).get(0), (Boolean) model.getRow(row).get(2), (String) model.getRow(row).get(3),
(String) model.getRow(row).get(1)));
}
} else {
throw new RuntimeException("Blacklist is empty");
}
} catch (NullPointerException | IndexOutOfBoundsException ignored) { } public void enable(String word, String serverId, Consumer<Boolean> success) {
success.accept(output);
});
} ThreadManager.executor.submit(() -> {
if (isAlreadyBlacklisted(word, serverId)) {
database.update("UPDATE blacklist SET isEnabled = 1 WHERE word = ? AND serverId = ?", word, serverId);
success.accept(true);
} else {
success.accept(false);
}
});
}
public boolean isAlreadyBlacklisted(String word, String serverId) { public void disable(String word, String serverId, Consumer<Boolean> success) {
ResultSet rs = database.prepareAndExecute("SELECT COUNT(*) FROM blacklist WHERE word = ? AND serverId = ?", word, serverId); ThreadManager.executor.submit(() -> {
if (isAlreadyBlacklisted(word, serverId)) {
database.update("UPDATE blacklist SET isEnabled = 0 WHERE word = ? AND serverId = ?", word, serverId);
success.accept(true);
} else {
success.accept(false);
}
});
}
try { public void getBlacklistForWord(String word, String serverId, Consumer<MBlacklist> success) {
if (rs.next()) { ThreadManager.executor.submit(() -> {
return rs.getInt(1) != 0; MBlacklist blacklisted = null;
}
} catch (SQLException e) {
//TODO: error log
e.printStackTrace();
}
return false; if (isAlreadyBlacklisted(word, serverId)) {
} ResultSet rs = database.prepareAndExecute("SELECT * FROM blacklist WHERE word = ? AND serverId = ?", word, serverId);
MTableModel table = database.convertToTableModel(rs);
@Override if (table.getNbRows() > 0) {
public String getControllerName() { blacklisted = new MBlacklist((String) table.getRow(0).get(0), (Boolean) table.getRow(0).get(2), (String) table.getRow(0).get(3),
return "blacklist"; (String) table.getRow(0).get(1));
} }
}
success.accept(blacklisted);
});
}
public void getBlacklistFromServer(String serverId, Consumer<ArrayList<MBlacklist>> success) {
ThreadManager.executor.submit(() -> {
ArrayList<MBlacklist> output = new ArrayList<>();
try {
ResultSet rs = database.prepareAndExecute("SELECT * FROM blacklist WHERE serverId = ? AND isEnabled = 1", serverId);
MTableModel model = MysqlDatabase.convertToTableModel(rs);
if (model.getNbRows() != 0) {
for (int row = 0; row < model.getNbRows(); row++) {
output.add(new MBlacklist((String) model.getRow(row).get(0), (Boolean) model.getRow(row).get(2), (String) model.getRow(row).get(3),
(String) model.getRow(row).get(1)));
}
} else {
throw new RuntimeException("Blacklist is empty");
}
} catch (NullPointerException | IndexOutOfBoundsException ignored) { }
success.accept(output);
});
}
public boolean isAlreadyBlacklisted(String word, String serverId) {
ResultSet rs = database.prepareAndExecute("SELECT COUNT(*) FROM blacklist WHERE word = ? AND serverId = ?", word, serverId);
try {
if (rs.next()) {
return rs.getInt(1) != 0;
}
} catch (SQLException e) {
//TODO: error log
e.printStackTrace();
}
return false;
}
@Override
public String getControllerName() {
return "blacklist";
}
} }
@@ -38,6 +38,10 @@ public class MRowModel {
} }
} }
public int count() {
return row.size();
}
@Override @Override
public String toString() { public String toString() {
return row.toString(); return row.toString();
@@ -0,0 +1,21 @@
package netneutrality.handler;
/*
* Copyright (c) anthorob
*
* https://xtremcommunity.com/
* https://discord.gg/CdFcyQ
*/
import net.dv8tion.jda.core.events.guild.GuildJoinEvent;
import net.dv8tion.jda.core.hooks.ListenerAdapter;
public class ServerJoinHandler extends ListenerAdapter {
@Override
public void onGuildJoin(GuildJoinEvent event){
}
}
@@ -28,7 +28,7 @@ public class WebApi {
server.createContext("/guild", new GuildBrowser()); server.createContext("/guild", new GuildBrowser());
server.setExecutor(null); server.setExecutor(null);
server.start(); server.start();
MusicBot.LOGGER.debug("Web server started at [" + server.getAddress().getAddress().getAddress().toString() + "]"); MusicBot.LOGGER.debug("Web server started at [" + server.getAddress().getAddress().toString() + "]");
} }
+1 -1
View File
@@ -2,7 +2,7 @@
<Configuration status="WARN" xmlns="http://logging.apache.org/log4j/2.0/config"> <Configuration status="WARN" xmlns="http://logging.apache.org/log4j/2.0/config">
<Appenders> <Appenders>
<Console name="Console" target="SYSTEM_OUT"> <Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%-5level] %msg%n" /> <PatternLayout pattern="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} %highlight{${LOG_LEVEL_PATTERN:-%5p}}{FATAL=red blink, ERROR=red, WARN=yellow bold, INFO=green, DEBUG=green bold, TRACE=blue} [%15.15t] %style{%-40.40C}{cyan} : %m%n" />
</Console> </Console>
</Appenders> </Appenders>
<Loggers> <Loggers>
@@ -0,0 +1,30 @@
package netneutrality.db;
/*
* Copyright (c) anthorob
*
* https://xtremcommunity.com/
* https://discord.gg/CdFcyQ
*/
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
public class MysqlDatabaseTest {
MysqlDatabase db;
@Before
public void setUp() throws Exception {
db = new MysqlDatabase("discord");
}
@Test
public void exists() {
Assert.assertTrue(db.exists("settings", "skey", "prefix"));
}
}