diff --git a/Plan/src/main/java/com/djrapitops/plan/ShutdownHook.java b/Plan/src/main/java/com/djrapitops/plan/ShutdownHook.java index f45b3f366..e6d7b227e 100644 --- a/Plan/src/main/java/com/djrapitops/plan/ShutdownHook.java +++ b/Plan/src/main/java/com/djrapitops/plan/ShutdownHook.java @@ -4,12 +4,12 @@ */ package com.djrapitops.plan; -import com.djrapitops.plan.api.exceptions.DatabaseInitException; +import com.djrapitops.plan.api.exceptions.database.DBInitException; import com.djrapitops.plan.data.Actions; import com.djrapitops.plan.data.container.Action; import com.djrapitops.plan.data.container.Session; -import com.djrapitops.plan.system.database.databases.SQLDB; -import com.djrapitops.plan.system.database.tables.SessionsTable; +import com.djrapitops.plan.system.database.databases.sql.SQLDB; +import com.djrapitops.plan.system.database.databases.sql.tables.SessionsTable; import com.djrapitops.plan.systems.cache.DataCache; import com.djrapitops.plan.systems.cache.SessionCache; import com.djrapitops.plan.utilities.MiscUtils; @@ -58,7 +58,7 @@ public class ShutdownHook extends Thread { saveFirstSessionInformation(now); saveActiveSessions(activeSessions, now); - } catch (DatabaseInitException e) { + } catch (DBInitException e) { Log.toLog(this.getClass().getName(), e); } finally { if (db != null) { diff --git a/Plan/src/main/java/com/djrapitops/plan/api/API.java b/Plan/src/main/java/com/djrapitops/plan/api/API.java index 87c056a39..82bb40bcf 100644 --- a/Plan/src/main/java/com/djrapitops/plan/api/API.java +++ b/Plan/src/main/java/com/djrapitops/plan/api/API.java @@ -2,8 +2,10 @@ package com.djrapitops.plan.api; import com.djrapitops.plan.Plan; import com.djrapitops.plan.api.exceptions.ParseException; +import com.djrapitops.plan.api.exceptions.database.DBException; import com.djrapitops.plan.data.AnalysisData; import com.djrapitops.plan.data.plugin.PluginData; +import com.djrapitops.plan.system.database.databases.Database; import com.djrapitops.plan.systems.info.BukkitInformationManager; import com.djrapitops.plan.utilities.uuid.UUIDUtility; import com.djrapitops.plugin.utilities.Verify; @@ -11,6 +13,7 @@ import org.bukkit.OfflinePlayer; import java.sql.SQLException; import java.util.Collection; +import java.util.Collections; import java.util.UUID; import static org.bukkit.Bukkit.getOfflinePlayer; @@ -198,7 +201,7 @@ public class API { * @throws IllegalArgumentException If uuid is null. * @throws IllegalStateException If the player has not played on the server before. */ - public String getPlayerName(UUID uuid) throws SQLException { + public String getPlayerName(UUID uuid) { Verify.nullCheck(uuid); String playerName = plugin.getDB().getUsersTable().getPlayerName(uuid); if (playerName != null) { @@ -248,7 +251,11 @@ public class API { * @throws SQLException If database error occurs. * @since 3.4.2 */ - public Collection getSavedUUIDs() throws SQLException { - return plugin.getDB().getSavedUUIDs(); + public Collection getSavedUUIDs() { + try { + return Database.getActive().fetch().getSavedUUIDs(); + } catch (DBException e) { + return Collections.EMPTY_SET; + } } } diff --git a/Plan/src/main/java/com/djrapitops/plan/api/PlanAPI.java b/Plan/src/main/java/com/djrapitops/plan/api/PlanAPI.java index e6c36f03a..554e0f1f3 100644 --- a/Plan/src/main/java/com/djrapitops/plan/api/PlanAPI.java +++ b/Plan/src/main/java/com/djrapitops/plan/api/PlanAPI.java @@ -5,6 +5,10 @@ package com.djrapitops.plan.api; import com.djrapitops.plan.data.plugin.PluginData; +import com.djrapitops.plan.system.database.databases.operation.FetchOperations; + +import java.util.Map; +import java.util.UUID; /** * //TODO Class Javadoc Comment @@ -18,4 +22,8 @@ public interface PlanAPI { } void registerPluginData(PluginData pluginData); + + Map getKnownUsernames(); + + FetchOperations fetchFromPlanDB(); } \ No newline at end of file diff --git a/Plan/src/main/java/com/djrapitops/plan/api/exceptions/DBCreateTableException.java b/Plan/src/main/java/com/djrapitops/plan/api/exceptions/database/DBCreateTableException.java similarity index 81% rename from Plan/src/main/java/com/djrapitops/plan/api/exceptions/DBCreateTableException.java rename to Plan/src/main/java/com/djrapitops/plan/api/exceptions/database/DBCreateTableException.java index 0b8085feb..4ca76fe6a 100644 --- a/Plan/src/main/java/com/djrapitops/plan/api/exceptions/DBCreateTableException.java +++ b/Plan/src/main/java/com/djrapitops/plan/api/exceptions/database/DBCreateTableException.java @@ -2,14 +2,14 @@ * Licence is provided in the jar as license.yml also here: * https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml */ -package com.djrapitops.plan.api.exceptions; +package com.djrapitops.plan.api.exceptions.database; /** * Thrown when something goes wrong with creating tables with {@code Table#createTable}. * * @author Rsl1122 */ -public class DBCreateTableException extends DatabaseInitException { +public class DBCreateTableException extends DBInitException { public DBCreateTableException(String tableName, String message, Throwable cause) { super(tableName + ": " + message, cause); diff --git a/Plan/src/main/java/com/djrapitops/plan/api/exceptions/DatabaseException.java b/Plan/src/main/java/com/djrapitops/plan/api/exceptions/database/DBException.java similarity index 59% rename from Plan/src/main/java/com/djrapitops/plan/api/exceptions/DatabaseException.java rename to Plan/src/main/java/com/djrapitops/plan/api/exceptions/database/DBException.java index a754b0d71..d275f598b 100644 --- a/Plan/src/main/java/com/djrapitops/plan/api/exceptions/DatabaseException.java +++ b/Plan/src/main/java/com/djrapitops/plan/api/exceptions/database/DBException.java @@ -2,24 +2,24 @@ * Licence is provided in the jar as license.yml also here: * https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml */ -package com.djrapitops.plan.api.exceptions; +package com.djrapitops.plan.api.exceptions.database; /** * Thrown when something goes wrong with the Database, generic exception. * * @author Rsl1122 */ -public class DatabaseException extends Exception { +public class DBException extends Exception { - public DatabaseException(String message, Throwable cause) { + public DBException(String message, Throwable cause) { super(message, cause); } - public DatabaseException(Throwable cause) { + public DBException(Throwable cause) { super(cause); } - public DatabaseException(String message) { + public DBException(String message) { super(message); } } \ No newline at end of file diff --git a/Plan/src/main/java/com/djrapitops/plan/api/exceptions/DatabaseInitException.java b/Plan/src/main/java/com/djrapitops/plan/api/exceptions/database/DBInitException.java similarity index 56% rename from Plan/src/main/java/com/djrapitops/plan/api/exceptions/DatabaseInitException.java rename to Plan/src/main/java/com/djrapitops/plan/api/exceptions/database/DBInitException.java index 042e1657e..a70acf1b5 100644 --- a/Plan/src/main/java/com/djrapitops/plan/api/exceptions/DatabaseInitException.java +++ b/Plan/src/main/java/com/djrapitops/plan/api/exceptions/database/DBInitException.java @@ -2,24 +2,24 @@ * Licence is provided in the jar as license.yml also here: * https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml */ -package com.djrapitops.plan.api.exceptions; +package com.djrapitops.plan.api.exceptions.database; /** * Thrown when something goes wrong with {@code Database#init}. * * @author Rsl1122 */ -public class DatabaseInitException extends DatabaseException { +public class DBInitException extends FatalDBException { - public DatabaseInitException(String message, Throwable cause) { + public DBInitException(String message, Throwable cause) { super(message, cause); } - public DatabaseInitException(Throwable cause) { + public DBInitException(Throwable cause) { super(cause); } - public DatabaseInitException(String message) { + public DBInitException(String message) { super(message); } } \ No newline at end of file diff --git a/Plan/src/main/java/com/djrapitops/plan/api/exceptions/DBNoDataException.java b/Plan/src/main/java/com/djrapitops/plan/api/exceptions/database/DBNoDataException.java similarity index 71% rename from Plan/src/main/java/com/djrapitops/plan/api/exceptions/DBNoDataException.java rename to Plan/src/main/java/com/djrapitops/plan/api/exceptions/database/DBNoDataException.java index 6e2ae2d9a..71effcbe4 100644 --- a/Plan/src/main/java/com/djrapitops/plan/api/exceptions/DBNoDataException.java +++ b/Plan/src/main/java/com/djrapitops/plan/api/exceptions/database/DBNoDataException.java @@ -1,6 +1,6 @@ -package com.djrapitops.plan.api.exceptions; +package com.djrapitops.plan.api.exceptions.database; -public class DBNoDataException extends DatabaseException { +public class DBNoDataException extends DBException { public DBNoDataException(String message, Throwable cause) { super(message, cause); diff --git a/Plan/src/main/java/com/djrapitops/plan/api/exceptions/database/FatalDBException.java b/Plan/src/main/java/com/djrapitops/plan/api/exceptions/database/FatalDBException.java new file mode 100644 index 000000000..c0ec4bcd0 --- /dev/null +++ b/Plan/src/main/java/com/djrapitops/plan/api/exceptions/database/FatalDBException.java @@ -0,0 +1,16 @@ +package com.djrapitops.plan.api.exceptions.database; + +public class FatalDBException extends DBException { + + public FatalDBException(String message, Throwable cause) { + super(message, cause); + } + + public FatalDBException(Throwable cause) { + super(cause); + } + + public FatalDBException(String message) { + super(message); + } +} diff --git a/Plan/src/main/java/com/djrapitops/plan/api/exceptions/WebAPIConnectionFailException.java b/Plan/src/main/java/com/djrapitops/plan/api/exceptions/webapi/WebAPIConnectionFailException.java similarity index 91% rename from Plan/src/main/java/com/djrapitops/plan/api/exceptions/WebAPIConnectionFailException.java rename to Plan/src/main/java/com/djrapitops/plan/api/exceptions/webapi/WebAPIConnectionFailException.java index 13bbb4096..a7a675d3c 100644 --- a/Plan/src/main/java/com/djrapitops/plan/api/exceptions/WebAPIConnectionFailException.java +++ b/Plan/src/main/java/com/djrapitops/plan/api/exceptions/webapi/WebAPIConnectionFailException.java @@ -2,7 +2,7 @@ * Licence is provided in the jar as license.yml also here: * https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml */ -package com.djrapitops.plan.api.exceptions; +package com.djrapitops.plan.api.exceptions.webapi; /** * Thrown when WebAPI fails to connect to an address. diff --git a/Plan/src/main/java/com/djrapitops/plan/api/exceptions/WebAPIException.java b/Plan/src/main/java/com/djrapitops/plan/api/exceptions/webapi/WebAPIException.java similarity index 92% rename from Plan/src/main/java/com/djrapitops/plan/api/exceptions/WebAPIException.java rename to Plan/src/main/java/com/djrapitops/plan/api/exceptions/webapi/WebAPIException.java index b084f0a62..175b15d41 100644 --- a/Plan/src/main/java/com/djrapitops/plan/api/exceptions/WebAPIException.java +++ b/Plan/src/main/java/com/djrapitops/plan/api/exceptions/webapi/WebAPIException.java @@ -2,7 +2,7 @@ * Licence is provided in the jar as license.yml also here: * https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml */ -package com.djrapitops.plan.api.exceptions; +package com.djrapitops.plan.api.exceptions.webapi; /** * Thrown when WebAPI POST-request fails, general Exception. diff --git a/Plan/src/main/java/com/djrapitops/plan/api/exceptions/WebAPIFailException.java b/Plan/src/main/java/com/djrapitops/plan/api/exceptions/webapi/WebAPIFailException.java similarity index 92% rename from Plan/src/main/java/com/djrapitops/plan/api/exceptions/WebAPIFailException.java rename to Plan/src/main/java/com/djrapitops/plan/api/exceptions/webapi/WebAPIFailException.java index c575b8810..acc8fd428 100644 --- a/Plan/src/main/java/com/djrapitops/plan/api/exceptions/WebAPIFailException.java +++ b/Plan/src/main/java/com/djrapitops/plan/api/exceptions/webapi/WebAPIFailException.java @@ -2,7 +2,7 @@ * Licence is provided in the jar as license.yml also here: * https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml */ -package com.djrapitops.plan.api.exceptions; +package com.djrapitops.plan.api.exceptions.webapi; /** * Group of WebAPIExceptions that can be considered a failed connection state on some occasions. diff --git a/Plan/src/main/java/com/djrapitops/plan/api/exceptions/WebAPIForbiddenException.java b/Plan/src/main/java/com/djrapitops/plan/api/exceptions/webapi/WebAPIForbiddenException.java similarity index 88% rename from Plan/src/main/java/com/djrapitops/plan/api/exceptions/WebAPIForbiddenException.java rename to Plan/src/main/java/com/djrapitops/plan/api/exceptions/webapi/WebAPIForbiddenException.java index 51ca8b31e..4dc6c0b48 100644 --- a/Plan/src/main/java/com/djrapitops/plan/api/exceptions/WebAPIForbiddenException.java +++ b/Plan/src/main/java/com/djrapitops/plan/api/exceptions/webapi/WebAPIForbiddenException.java @@ -2,7 +2,7 @@ * Licence is provided in the jar as license.yml also here: * https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml */ -package com.djrapitops.plan.api.exceptions; +package com.djrapitops.plan.api.exceptions.webapi; /** * Thrown when WebAPI gets a 403 response. diff --git a/Plan/src/main/java/com/djrapitops/plan/api/exceptions/WebAPIInternalErrorException.java b/Plan/src/main/java/com/djrapitops/plan/api/exceptions/webapi/WebAPIInternalErrorException.java similarity index 90% rename from Plan/src/main/java/com/djrapitops/plan/api/exceptions/WebAPIInternalErrorException.java rename to Plan/src/main/java/com/djrapitops/plan/api/exceptions/webapi/WebAPIInternalErrorException.java index ba5825c82..144240a73 100644 --- a/Plan/src/main/java/com/djrapitops/plan/api/exceptions/WebAPIInternalErrorException.java +++ b/Plan/src/main/java/com/djrapitops/plan/api/exceptions/webapi/WebAPIInternalErrorException.java @@ -2,7 +2,7 @@ * Licence is provided in the jar as license.yml also here: * https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml */ -package com.djrapitops.plan.api.exceptions; +package com.djrapitops.plan.api.exceptions.webapi; /** * Thrown when WebAPI returns 404, usually when response is supposed to be false. diff --git a/Plan/src/main/java/com/djrapitops/plan/api/exceptions/WebAPINotFoundException.java b/Plan/src/main/java/com/djrapitops/plan/api/exceptions/webapi/WebAPINotFoundException.java similarity index 89% rename from Plan/src/main/java/com/djrapitops/plan/api/exceptions/WebAPINotFoundException.java rename to Plan/src/main/java/com/djrapitops/plan/api/exceptions/webapi/WebAPINotFoundException.java index e0adfa710..762f264f7 100644 --- a/Plan/src/main/java/com/djrapitops/plan/api/exceptions/WebAPINotFoundException.java +++ b/Plan/src/main/java/com/djrapitops/plan/api/exceptions/webapi/WebAPINotFoundException.java @@ -2,7 +2,7 @@ * Licence is provided in the jar as license.yml also here: * https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml */ -package com.djrapitops.plan.api.exceptions; +package com.djrapitops.plan.api.exceptions.webapi; /** * Thrown when WebAPI returns 404, usually when response is supposed to be false. diff --git a/Plan/src/main/java/com/djrapitops/plan/command/ConditionUtils.java b/Plan/src/main/java/com/djrapitops/plan/command/ConditionUtils.java index 2cc744783..e4ddc38f1 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/ConditionUtils.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/ConditionUtils.java @@ -1,12 +1,5 @@ package com.djrapitops.plan.command; -import com.djrapitops.plan.Plan; -import com.djrapitops.plan.PlanBungee; -import com.djrapitops.plugin.api.Check; -import com.djrapitops.plugin.utilities.Verify; - -import java.util.UUID; - /** * This class contains methods used by commands * @@ -21,23 +14,4 @@ public class ConditionUtils { private ConditionUtils() { throw new IllegalStateException("Utility class"); } - - /** - * Condition if the player has played. - * - * @param uuid UUID of player - * @return has the player played before, false if uuid is null. - */ - public static boolean playerHasPlayed(UUID uuid) { - if (Verify.containsNull(uuid)) { - return false; - } - boolean hasPlayed; - if (Check.isBukkitAvailable()) { - hasPlayed = Plan.getInstance().getServer().getOfflinePlayer(uuid).hasPlayedBefore(); - } else { - hasPlayed = PlanBungee.getInstance().getDB().wasSeenBefore(uuid); - } - return hasPlayed; - } } diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/DevCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/DevCommand.java index e0673b018..9e094e45b 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/DevCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/DevCommand.java @@ -5,7 +5,7 @@ package com.djrapitops.plan.command.commands; import com.djrapitops.plan.Plan; -import com.djrapitops.plan.api.exceptions.WebAPIException; +import com.djrapitops.plan.api.exceptions.webapi.WebAPIException; import com.djrapitops.plan.settings.locale.Locale; import com.djrapitops.plan.settings.locale.Msg; import com.djrapitops.plan.system.webserver.webapi.WebAPI; diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/InspectCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/InspectCommand.java index 0cba2c0c7..8822ee8e4 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/InspectCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/InspectCommand.java @@ -1,9 +1,11 @@ package com.djrapitops.plan.command.commands; import com.djrapitops.plan.Plan; -import com.djrapitops.plan.command.ConditionUtils; +import com.djrapitops.plan.api.exceptions.database.DBException; +import com.djrapitops.plan.api.exceptions.database.FatalDBException; import com.djrapitops.plan.settings.locale.Locale; import com.djrapitops.plan.settings.locale.Msg; +import com.djrapitops.plan.system.database.databases.Database; import com.djrapitops.plan.system.processing.processors.info.InspectCacheRequestProcessor; import com.djrapitops.plan.system.settings.Permissions; import com.djrapitops.plan.utilities.Condition; @@ -19,7 +21,6 @@ import com.djrapitops.plugin.task.RunnableFactory; import com.djrapitops.plugin.utilities.Verify; import org.bukkit.ChatColor; -import java.sql.SQLException; import java.util.UUID; /** @@ -66,26 +67,29 @@ public class InspectCommand extends SubCommand { @Override public void run() { try { + Database activeDB = Database.getActive(); UUID uuid = UUIDUtility.getUUIDOf(playerName); if (!Condition.isTrue(Verify.notNull(uuid), Locale.get(Msg.CMD_FAIL_USERNAME_NOT_VALID).toString(), sender)) { return; } - if (!Condition.isTrue(ConditionUtils.playerHasPlayed(uuid), Locale.get(Msg.CMD_FAIL_USERNAME_NOT_SEEN).toString(), sender)) { - return; - } - if (!Condition.isTrue(plugin.getDB().wasSeenBefore(uuid), Locale.get(Msg.CMD_FAIL_USERNAME_NOT_KNOWN).toString(), sender)) { + if (!Condition.isTrue(activeDB.check().isPlayerRegistered(uuid), Locale.get(Msg.CMD_FAIL_USERNAME_NOT_KNOWN).toString(), sender)) { return; } if (CommandUtils.isPlayer(sender) && plugin.getWebServer().isAuthRequired()) { - boolean senderHasWebUser = plugin.getDB().getSecurityTable().userExists(sender.getName()); + boolean senderHasWebUser = activeDB.check().doesWebUserExists(sender.getName()); + if (!senderHasWebUser) { sender.sendMessage(ChatColor.YELLOW + "[Plan] You might not have a web user, use /plan register "); } } - plugin.addToProcessQueue(new InspectCacheRequestProcessor(uuid, sender, playerName)); - } catch (SQLException ex) { - Log.toLog(this.getClass().getName(), ex); + } catch (DBException ex) { + if (ex instanceof FatalDBException) { + Log.toLog(this.getClass().getName(), ex); + sender.sendMessage(ChatColor.RED + "Fatal database exception occurred: " + ex.getMessage()); + } else { + sender.sendMessage(ChatColor.YELLOW + "Non-Fatal database exception occurred: " + ex.getMessage()); + } } finally { this.cancel(); } diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/QInspectCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/QInspectCommand.java index ed249757e..ad4a8ca52 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/QInspectCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/QInspectCommand.java @@ -1,10 +1,12 @@ package com.djrapitops.plan.command.commands; import com.djrapitops.plan.PlanPlugin; +import com.djrapitops.plan.api.exceptions.database.DBException; import com.djrapitops.plan.data.PlayerProfile; import com.djrapitops.plan.data.element.ActivityIndex; import com.djrapitops.plan.settings.locale.Locale; import com.djrapitops.plan.settings.locale.Msg; +import com.djrapitops.plan.system.database.databases.Database; import com.djrapitops.plan.system.settings.Permissions; import com.djrapitops.plan.utilities.Condition; import com.djrapitops.plan.utilities.FormatUtils; @@ -20,7 +22,6 @@ import com.djrapitops.plugin.task.AbsRunnable; import com.djrapitops.plugin.task.RunnableFactory; import com.djrapitops.plugin.utilities.Verify; -import java.sql.SQLException; import java.util.UUID; /** @@ -71,15 +72,16 @@ public class QInspectCommand extends SubCommand { if (!Condition.isTrue(Verify.notNull(uuid), Locale.get(Msg.CMD_FAIL_USERNAME_NOT_VALID).toString(), sender)) { return; } - if (!Condition.isTrue(plugin.getDB().wasSeenBefore(uuid), Locale.get(Msg.CMD_FAIL_USERNAME_NOT_KNOWN).toString(), sender)) { + Database database = Database.getActive(); + if (!Condition.isTrue(database.check().isPlayerRegistered(uuid), Locale.get(Msg.CMD_FAIL_USERNAME_NOT_KNOWN).toString(), sender)) { return; } - PlayerProfile playerProfile = plugin.getDB().getPlayerProfile(uuid); + PlayerProfile playerProfile = database.fetch().getPlayerProfile(uuid); sendMsgs(sender, playerProfile); - } catch (SQLException ex) { + } catch (DBException ex) { Log.toLog(this.getClass().getName(), ex); } finally { this.cancel(); diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/RegisterCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/RegisterCommand.java index 08f54df60..d0e5ed92a 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/RegisterCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/RegisterCommand.java @@ -4,7 +4,7 @@ import com.djrapitops.plan.PlanPlugin; import com.djrapitops.plan.data.WebUser; import com.djrapitops.plan.settings.locale.Locale; import com.djrapitops.plan.settings.locale.Msg; -import com.djrapitops.plan.system.database.tables.SecurityTable; +import com.djrapitops.plan.system.database.databases.sql.tables.SecurityTable; import com.djrapitops.plan.system.settings.Permissions; import com.djrapitops.plan.utilities.Condition; import com.djrapitops.plan.utilities.PassEncryptUtil; diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageBackupCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageBackupCommand.java index bbbbca750..0463ca3ea 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageBackupCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageBackupCommand.java @@ -1,7 +1,7 @@ package com.djrapitops.plan.command.commands.manage; import com.djrapitops.plan.Plan; -import com.djrapitops.plan.api.exceptions.DatabaseInitException; +import com.djrapitops.plan.api.exceptions.database.DBInitException; import com.djrapitops.plan.settings.locale.Locale; import com.djrapitops.plan.settings.locale.Msg; import com.djrapitops.plan.system.database.databases.Database; @@ -63,7 +63,7 @@ public class ManageBackupCommand extends SubCommand { } Log.debug("Backup", "Start"); runBackupTask(sender, args, database); - } catch (DatabaseInitException | NullPointerException e) { + } catch (DBInitException | NullPointerException e) { sender.sendMessage(Locale.get(Msg.MANAGE_FAIL_FAULTY_DB).toString()); } finally { Log.logDebug("Backup"); diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageClearCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageClearCommand.java index 18162f16c..dcefe343a 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageClearCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageClearCommand.java @@ -1,7 +1,8 @@ package com.djrapitops.plan.command.commands.manage; import com.djrapitops.plan.Plan; -import com.djrapitops.plan.api.exceptions.DatabaseInitException; +import com.djrapitops.plan.api.exceptions.database.DBException; +import com.djrapitops.plan.api.exceptions.database.DBInitException; import com.djrapitops.plan.data.container.Session; import com.djrapitops.plan.settings.locale.Locale; import com.djrapitops.plan.settings.locale.Msg; @@ -20,8 +21,6 @@ import com.djrapitops.plugin.task.AbsRunnable; import com.djrapitops.plugin.task.RunnableFactory; import com.djrapitops.plugin.utilities.Verify; -import java.sql.SQLException; - /** * This manage subcommand is used to clear a database of all data. * @@ -73,7 +72,7 @@ public class ManageClearCommand extends SubCommand { try { Database database = ManageUtils.getDB(dbName); runClearTask(sender, database); - } catch (DatabaseInitException e) { + } catch (DBInitException e) { sender.sendMessage(Locale.get(Msg.MANAGE_FAIL_FAULTY_DB).toString()); } return true; @@ -86,7 +85,7 @@ public class ManageClearCommand extends SubCommand { try { sender.sendMessage(Locale.get(Msg.MANAGE_INFO_START).parse()); - database.removeAllData(); + database.remove().everything(); DataCache dataCache = plugin.getDataCache(); long now = MiscUtils.getTime(); @@ -96,7 +95,7 @@ public class ManageClearCommand extends SubCommand { new Session(now, player.getWorld().getName(), player.getGameMode().name())) ); sender.sendMessage(Locale.get(Msg.MANAGE_INFO_CLEAR_SUCCESS).toString()); - } catch (SQLException e) { + } catch (DBException e) { sender.sendMessage(Locale.get(Msg.MANAGE_INFO_FAIL).toString()); Log.toLog(this.getClass().getSimpleName() + "/" + this.getTaskName(), e); } finally { diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageHotswapCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageHotswapCommand.java index 4a5112cb9..d19c5a4f1 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageHotswapCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageHotswapCommand.java @@ -76,7 +76,6 @@ public class ManageHotswapCommand extends SubCommand { assert database != null; - database.getVersion(); //Test db connection } catch (Exception e) { Log.toLog(this.getClass().getName(), e); diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageRemoveCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageRemoveCommand.java index 3738efed8..d034451b7 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageRemoveCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageRemoveCommand.java @@ -1,9 +1,11 @@ package com.djrapitops.plan.command.commands.manage; import com.djrapitops.plan.Plan; +import com.djrapitops.plan.api.exceptions.database.DBException; import com.djrapitops.plan.data.container.Session; import com.djrapitops.plan.settings.locale.Locale; import com.djrapitops.plan.settings.locale.Msg; +import com.djrapitops.plan.system.database.databases.Database; import com.djrapitops.plan.system.settings.Permissions; import com.djrapitops.plan.systems.cache.DataCache; import com.djrapitops.plan.systems.cache.SessionCache; @@ -19,7 +21,6 @@ import com.djrapitops.plugin.task.RunnableFactory; import com.djrapitops.plugin.utilities.Verify; import org.bukkit.entity.Player; -import java.sql.SQLException; import java.util.UUID; import static org.bukkit.Bukkit.getPlayer; @@ -80,7 +81,8 @@ public class ManageRemoveCommand extends SubCommand { } message = Locale.get(Msg.CMD_FAIL_USERNAME_NOT_KNOWN).toString(); - if (!Condition.isTrue(plugin.getDB().wasSeenBefore(uuid), message, sender)) { + Database database = Database.getActive(); + if (!Condition.isTrue(database.check().isPlayerRegistered(uuid), message, sender)) { return; } @@ -90,20 +92,19 @@ public class ManageRemoveCommand extends SubCommand { } sender.sendMessage(Locale.get(Msg.MANAGE_INFO_START).parse()); - try { - plugin.getDB().removeAccount(uuid); - DataCache dataCache = plugin.getDataCache(); - Player player = getPlayer(uuid); - if (player != null) { - SessionCache.getActiveSessions().remove(uuid); - dataCache.cacheSession(uuid, new Session(MiscUtils.getTime(), player.getWorld().getName(), player.getGameMode().name())); - } - sender.sendMessage(Locale.get(Msg.MANAGE_INFO_REMOVE_SUCCESS).parse(playerName, plugin.getDB().getConfigName())); - } catch (SQLException e) { - Log.toLog(this.getClass().getName(), e); - sender.sendMessage(Locale.get(Msg.MANAGE_INFO_FAIL).toString()); + database.remove().player(uuid); + + DataCache dataCache = plugin.getDataCache(); + Player player = getPlayer(uuid); + if (player != null) { + SessionCache.getActiveSessions().remove(uuid); + dataCache.cacheSession(uuid, new Session(MiscUtils.getTime(), player.getWorld().getName(), player.getGameMode().name())); } + sender.sendMessage(Locale.get(Msg.MANAGE_INFO_REMOVE_SUCCESS).parse(playerName, plugin.getDB().getConfigName())); + } catch (DBException e) { + Log.toLog(this.getClass().getName(), e); + sender.sendMessage(Locale.get(Msg.MANAGE_INFO_FAIL).toString()); } finally { this.cancel(); } diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageRestoreCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageRestoreCommand.java index 4f3bab355..2f0ea5e35 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageRestoreCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageRestoreCommand.java @@ -4,7 +4,7 @@ import com.djrapitops.plan.Plan; import com.djrapitops.plan.settings.locale.Locale; import com.djrapitops.plan.settings.locale.Msg; import com.djrapitops.plan.system.database.databases.Database; -import com.djrapitops.plan.system.database.databases.SQLiteDB; +import com.djrapitops.plan.system.database.databases.sql.SQLiteDB; import com.djrapitops.plan.system.settings.Permissions; import com.djrapitops.plan.utilities.Condition; import com.djrapitops.plan.utilities.ManageUtils; diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageSetupCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageSetupCommand.java index 5f3b0bcff..2dea24910 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageSetupCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageSetupCommand.java @@ -1,8 +1,8 @@ package com.djrapitops.plan.command.commands.manage; import com.djrapitops.plan.Plan; -import com.djrapitops.plan.api.exceptions.WebAPIException; -import com.djrapitops.plan.api.exceptions.WebAPIForbiddenException; +import com.djrapitops.plan.api.exceptions.webapi.WebAPIException; +import com.djrapitops.plan.api.exceptions.webapi.WebAPIForbiddenException; import com.djrapitops.plan.settings.locale.Locale; import com.djrapitops.plan.settings.locale.Msg; import com.djrapitops.plan.system.settings.Permissions; diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/webuser/WebCheckCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/webuser/WebCheckCommand.java index 18dcb5f9c..387bcb7c3 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/webuser/WebCheckCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/webuser/WebCheckCommand.java @@ -4,7 +4,7 @@ import com.djrapitops.plan.PlanPlugin; import com.djrapitops.plan.data.WebUser; import com.djrapitops.plan.settings.locale.Locale; import com.djrapitops.plan.settings.locale.Msg; -import com.djrapitops.plan.system.database.tables.SecurityTable; +import com.djrapitops.plan.system.database.databases.sql.tables.SecurityTable; import com.djrapitops.plan.system.settings.Permissions; import com.djrapitops.plan.utilities.Condition; import com.djrapitops.plugin.api.utility.log.Log; diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/webuser/WebDeleteCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/webuser/WebDeleteCommand.java index b1190782e..3029b142a 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/webuser/WebDeleteCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/webuser/WebDeleteCommand.java @@ -3,7 +3,7 @@ package com.djrapitops.plan.command.commands.webuser; import com.djrapitops.plan.PlanPlugin; import com.djrapitops.plan.settings.locale.Locale; import com.djrapitops.plan.settings.locale.Msg; -import com.djrapitops.plan.system.database.tables.SecurityTable; +import com.djrapitops.plan.system.database.databases.sql.tables.SecurityTable; import com.djrapitops.plan.system.settings.Permissions; import com.djrapitops.plan.utilities.Condition; import com.djrapitops.plugin.api.utility.log.Log; diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/BukkitDBSystem.java b/Plan/src/main/java/com/djrapitops/plan/system/database/BukkitDBSystem.java index c22470f2c..d092cafce 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/BukkitDBSystem.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/BukkitDBSystem.java @@ -4,9 +4,9 @@ */ package com.djrapitops.plan.system.database; -import com.djrapitops.plan.api.exceptions.DatabaseInitException; -import com.djrapitops.plan.system.database.databases.MySQLDB; -import com.djrapitops.plan.system.database.databases.SQLiteDB; +import com.djrapitops.plan.api.exceptions.database.DBInitException; +import com.djrapitops.plan.system.database.databases.sql.MySQLDB; +import com.djrapitops.plan.system.database.databases.sql.SQLiteDB; import com.djrapitops.plan.system.settings.Settings; /** @@ -17,7 +17,7 @@ import com.djrapitops.plan.system.settings.Settings; public class BukkitDBSystem extends DBSystem { @Override - protected void initDatabase() throws DatabaseInitException { + protected void initDatabase() throws DBInitException { databases.add(new MySQLDB()); databases.add(new SQLiteDB()); diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/BungeeDBSystem.java b/Plan/src/main/java/com/djrapitops/plan/system/database/BungeeDBSystem.java index 8c216fbd3..0e205fab8 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/BungeeDBSystem.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/BungeeDBSystem.java @@ -4,8 +4,8 @@ */ package com.djrapitops.plan.system.database; -import com.djrapitops.plan.api.exceptions.DatabaseInitException; -import com.djrapitops.plan.system.database.databases.MySQLDB; +import com.djrapitops.plan.api.exceptions.database.DBInitException; +import com.djrapitops.plan.system.database.databases.sql.MySQLDB; /** * //TODO Class Javadoc Comment @@ -15,7 +15,7 @@ import com.djrapitops.plan.system.database.databases.MySQLDB; public class BungeeDBSystem extends DBSystem { @Override - protected void initDatabase() throws DatabaseInitException { + protected void initDatabase() throws DBInitException { db = new MySQLDB(); databases.add(db); db.init(); diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/DBSystem.java b/Plan/src/main/java/com/djrapitops/plan/system/database/DBSystem.java index 32f5f5d90..387a446e3 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/DBSystem.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/DBSystem.java @@ -4,14 +4,14 @@ */ package com.djrapitops.plan.system.database; -import com.djrapitops.plan.api.exceptions.DatabaseInitException; import com.djrapitops.plan.api.exceptions.EnableException; +import com.djrapitops.plan.api.exceptions.database.DBInitException; import com.djrapitops.plan.settings.locale.Locale; import com.djrapitops.plan.settings.locale.Msg; import com.djrapitops.plan.system.PlanSystem; import com.djrapitops.plan.system.SubSystem; import com.djrapitops.plan.system.database.databases.Database; -import com.djrapitops.plan.system.database.databases.SQLDB; +import com.djrapitops.plan.system.database.databases.sql.SQLDB; import com.djrapitops.plan.utilities.NullCheck; import com.djrapitops.plugin.api.Benchmark; import com.djrapitops.plugin.api.utility.log.Log; @@ -50,12 +50,12 @@ public abstract class DBSystem implements SubSystem { db.scheduleClean(10L); Log.info(Locale.get(Msg.ENABLE_DB_INFO).parse(db.getConfigName())); Benchmark.stop("Systems", "Init Database"); - } catch (DatabaseInitException e) { + } catch (DBInitException e) { throw new EnableException(db.getName() + "-Database failed to initialize", e); } } - protected abstract void initDatabase() throws DatabaseInitException; + protected abstract void initDatabase() throws DBInitException; public Set getDatabases() { return databases; @@ -80,14 +80,14 @@ public abstract class DBSystem implements SubSystem { return db; } - public SQLDB getActiveDatabase(String dbName) throws DatabaseInitException { - for (SQLDB database : DBSystem.getInstance().getDatabases()) { + public SQLDB getActiveDatabase(String dbName) throws DBInitException { + for (SQLDB database : getDatabases()) { String dbConfigName = database.getConfigName(); if (Verify.equalsIgnoreCase(dbName, dbConfigName)) { database.init(); return database; } } - throw new DatabaseInitException(Locale.get(Msg.ENABLE_FAIL_WRONG_DB) + " " + dbName); + throw new DBInitException(Locale.get(Msg.ENABLE_FAIL_WRONG_DB) + " " + dbName); } } \ No newline at end of file diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/Database.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/Database.java index 38bfa691d..aa861498d 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/Database.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/Database.java @@ -1,18 +1,14 @@ package com.djrapitops.plan.system.database.databases; -import com.djrapitops.plan.api.exceptions.DatabaseInitException; -import com.djrapitops.plan.data.PlayerProfile; -import com.djrapitops.plan.data.ServerProfile; +import com.djrapitops.plan.api.exceptions.database.DBException; +import com.djrapitops.plan.api.exceptions.database.DBInitException; import com.djrapitops.plan.system.database.DBSystem; -import com.djrapitops.plan.system.database.tables.*; +import com.djrapitops.plan.system.database.databases.operation.BackupOperations; +import com.djrapitops.plan.system.database.databases.operation.CheckOperations; +import com.djrapitops.plan.system.database.databases.operation.FetchOperations; +import com.djrapitops.plan.system.database.databases.operation.RemoveOperations; import com.djrapitops.plan.utilities.NullCheck; -import java.sql.Connection; -import java.sql.SQLException; -import java.util.Map; -import java.util.Set; -import java.util.UUID; - /** * Abstract class representing a Database. *

@@ -23,42 +19,23 @@ import java.util.UUID; */ public abstract class Database { - protected UsersTable usersTable; - protected UserInfoTable userInfoTable; - protected ActionsTable actionsTable; - protected KillsTable killsTable; - protected NicknamesTable nicknamesTable; - protected SessionsTable sessionsTable; - protected IPsTable ipsTable; - protected CommandUseTable commandUseTable; - protected TPSTable tpsTable; - protected VersionTable versionTable; - protected SecurityTable securityTable; - protected WorldTable worldTable; - protected WorldTimesTable worldTimesTable; - protected ServerTable serverTable; + private boolean open; - public static Database getInstance() { + public static Database getActive() { Database database = DBSystem.getInstance().getActiveDatabase(); NullCheck.check(database, new IllegalStateException("Database was not initialized.")); return database; } - /** - * Initiates the database. - * - * @throws DatabaseInitException if SQLException or other exception occurs. - */ - public void init() throws DatabaseInitException { - } + public abstract void init() throws DBInitException; - /** - * Condition if the user is saved in the database. - * - * @param uuid UUID of the user. - * @return true/false - */ - public abstract boolean wasSeenBefore(UUID uuid); + public abstract BackupOperations backup(); + + public abstract CheckOperations check(); + + public abstract FetchOperations fetch(); + + public abstract RemoveOperations remove(); /** * Used to get the name of the database type. @@ -80,146 +57,9 @@ public abstract class Database { return getName().toLowerCase().trim(); } - public abstract boolean isNewDatabase() throws SQLException; + public abstract void close() throws DBException; - /** - * Used to get the database schema version. - * - * @return Integer starting from 0, incremented by one when schema is - * updated. - * @throws SQLException If a database error occurs. - */ - public abstract int getVersion() throws SQLException; - - /** - * Used to set the database schema version. - * - * @param version Integer starting from 0, incremented by one when schema is - * updated. - * @throws SQLException If a database error occurs. - */ - public abstract void setVersion(int version) throws SQLException; - - /** - * Closes the database and it's resources. - * - * @throws SQLException If a database error occurs. - */ - public abstract void close() throws SQLException; - - /** - * Returns a connection to the MySQL connection pool. - *

- * On SQLite does nothing. - * - * @param connection Connection to return. - * @throws SQLException DB Error - */ - public abstract void returnToPool(Connection connection) throws SQLException; - - /** - * Removes all data related to an account from the database. - * - * @param uuid UUID of the account. - * @throws SQLException If a database error occurs. - */ - @Deprecated - public abstract void removeAccount(UUID uuid) throws SQLException; - - /** - * Used to clear all data from the database. - *

- * Uses DELETE * FROM table. - * - * @throws SQLException if remove fails. - */ - @Deprecated - public abstract void removeAllData() throws SQLException; - - /** - * Used to fetch the saved UUIDs in the users table. - * - * @return Set of saved UUIDs - * @throws SQLException If a database error occurs. - */ - @Deprecated - public Set getSavedUUIDs() throws SQLException { - return usersTable.getSavedUUIDs(); - } - - /** - * Used to get the Command usage mep. - * - * @return String command (key), Integer times used - * @throws SQLException If a database error occurs. - */ - @Deprecated - public Map getCommandUse() throws SQLException { - return commandUseTable.getCommandUse(); - } - - - public abstract void commit(Connection connection) throws SQLException; - - public boolean isUsingMySQL() { - return "mysql".equals(getConfigName()); - } - - @Deprecated - public abstract PlayerProfile getPlayerProfile(UUID uuid) throws SQLException; - - @Deprecated - public abstract ServerProfile getServerProfile(UUID serverUUID) throws SQLException; - - public UsersTable getUsersTable() { - return usersTable; - } - - public SessionsTable getSessionsTable() { - return sessionsTable; - } - - public KillsTable getKillsTable() { - return killsTable; - } - - public IPsTable getIpsTable() { - return ipsTable; - } - - public NicknamesTable getNicknamesTable() { - return nicknamesTable; - } - - public CommandUseTable getCommandUseTable() { - return commandUseTable; - } - - public TPSTable getTpsTable() { - return tpsTable; - } - - public SecurityTable getSecurityTable() { - return securityTable; - } - - public WorldTable getWorldTable() { - return worldTable; - } - - public WorldTimesTable getWorldTimesTable() { - return worldTimesTable; - } - - public ServerTable getServerTable() { - return serverTable; - } - - public ActionsTable getActionsTable() { - return actionsTable; - } - - public UserInfoTable getUserInfoTable() { - return userInfoTable; + public boolean isOpen() { + return open; } } diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/operation/BackupOperations.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/operation/BackupOperations.java index 1f3b10615..be20d5e97 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/operation/BackupOperations.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/operation/BackupOperations.java @@ -1,11 +1,12 @@ package com.djrapitops.plan.system.database.databases.operation; +import com.djrapitops.plan.api.exceptions.database.DBException; import com.djrapitops.plan.system.database.databases.Database; public interface BackupOperations { - void backup(Database toDatabase); + void backup(Database toDatabase) throws DBException; + + void restore(Database fromDatabase) throws DBException; - void restore(Database fromDatabase); - } diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/operation/CheckOperations.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/operation/CheckOperations.java index bc37f7c46..ff8ecb763 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/operation/CheckOperations.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/operation/CheckOperations.java @@ -1,12 +1,15 @@ package com.djrapitops.plan.system.database.databases.operation; +import com.djrapitops.plan.api.exceptions.database.DBException; + import java.util.UUID; public interface CheckOperations { - boolean wasSeenBefore(UUID player); + boolean isPlayerRegistered(UUID player) throws DBException; - boolean wasSeenBefore(UUID player, UUID server); - + boolean isPlayerRegistered(UUID player, UUID server) throws DBException; + + boolean doesWebUserExists(String username) throws DBException; } diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/operation/FetchOperations.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/operation/FetchOperations.java index 8d44728a5..af75bc269 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/operation/FetchOperations.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/operation/FetchOperations.java @@ -1,19 +1,22 @@ package com.djrapitops.plan.system.database.databases.operation; +import com.djrapitops.plan.api.exceptions.database.DBException; import com.djrapitops.plan.data.PlayerProfile; import com.djrapitops.plan.data.ServerProfile; -import java.sql.SQLException; +import java.util.Map; import java.util.Set; import java.util.UUID; public interface FetchOperations { - ServerProfile getServerProfile(UUID serverUUID) throws SQLException; + ServerProfile getServerProfile(UUID serverUUID) throws DBException; - PlayerProfile getPlayerProfile(UUID uuid) throws SQLException; + PlayerProfile getPlayerProfile(UUID uuid) throws DBException; - Set getSavedUUIDs() throws SQLException; + Set getSavedUUIDs() throws DBException; - Set getSavedUUIDs(UUID server) throws SQLException; + Set getSavedUUIDs(UUID server) throws DBException; + + Map getServerNames() throws DBException; } diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/operation/RemoveOperations.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/operation/RemoveOperations.java index 3355faf96..672351821 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/operation/RemoveOperations.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/operation/RemoveOperations.java @@ -1,19 +1,18 @@ package com.djrapitops.plan.system.database.databases.operation; -import com.djrapitops.plan.api.exceptions.DBNoDataException; +import com.djrapitops.plan.api.exceptions.database.DBException; -import java.sql.SQLException; import java.util.UUID; public interface RemoveOperations { - void removePlayer(UUID uuid) throws SQLException, DBNoDataException; + void player(UUID uuid) throws DBException; - void removePlayer(UUID player, UUID server) throws SQLException, DBNoDataException; + void player(UUID player, UUID server) throws DBException; - void removeServer(UUID serverUUID) throws SQLException, DBNoDataException; + void server(UUID serverUUID) throws DBException; - void removeAll() throws SQLException, DBNoDataException; + void everything() throws DBException; - void removeWebUser(String name) throws SQLException, DBNoDataException; + void webUser(String name) throws DBException; } diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/ErrorUtil.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/ErrorUtil.java new file mode 100644 index 000000000..ef2b9abbd --- /dev/null +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/ErrorUtil.java @@ -0,0 +1,33 @@ +package com.djrapitops.plan.system.database.databases.sql; + +import com.djrapitops.plan.api.exceptions.database.DBException; +import com.djrapitops.plan.api.exceptions.database.FatalDBException; + +import java.sql.SQLException; + +public class ErrorUtil { + + private ErrorUtil() { + } + + public static DBException getExceptionFor(SQLException e) { + String message = e.getMessage(); + if (message.contains("Communications link failure")) { + return new FatalDBException("MySQL-connection failed", e); + } else if (message.contains("syntax")) { + return new FatalDBException("There is an error in SQL syntax", e); + } else if (message.contains("duplicate key")) { + return new FatalDBException("An SQL save method attempts to save duplicates.", e); + } + return new DBException(e); + } + + public static FatalDBException getFatalExceptionFor(SQLException e) { + DBException normalException = getExceptionFor(e); + if (normalException instanceof FatalDBException) { + return (FatalDBException) normalException; + } else { + return new FatalDBException(normalException.getCause()); + } + } +} diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/MySQLDB.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/MySQLDB.java similarity index 96% rename from Plan/src/main/java/com/djrapitops/plan/system/database/databases/MySQLDB.java rename to Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/MySQLDB.java index 8837f11bf..50dfa5940 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/MySQLDB.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/MySQLDB.java @@ -1,4 +1,4 @@ -package com.djrapitops.plan.system.database.databases; +package com.djrapitops.plan.system.database.databases.sql; import com.djrapitops.plan.system.settings.Settings; import com.djrapitops.plugin.api.utility.log.Log; diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/SQLBackupOps.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/SQLBackupOps.java new file mode 100644 index 000000000..87a02138f --- /dev/null +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/SQLBackupOps.java @@ -0,0 +1,21 @@ +package com.djrapitops.plan.system.database.databases.sql; + +import com.djrapitops.plan.system.database.databases.Database; +import com.djrapitops.plan.system.database.databases.operation.BackupOperations; + +public class SQLBackupOps implements BackupOperations { + + private final SQLDB db; + + public SQLBackupOps(SQLDB db) { + this.db = db; + } + + @Override + public void backup(Database toDatabase) { + } + + @Override + public void restore(Database fromDatabase) { + } +} diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/SQLCheckOps.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/SQLCheckOps.java new file mode 100644 index 000000000..efa912c6f --- /dev/null +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/SQLCheckOps.java @@ -0,0 +1,43 @@ +package com.djrapitops.plan.system.database.databases.sql; + +import com.djrapitops.plan.api.exceptions.database.DBException; +import com.djrapitops.plan.system.database.databases.operation.CheckOperations; + +import java.sql.SQLException; +import java.util.UUID; + +public class SQLCheckOps implements CheckOperations { + + private final SQLDB db; + + public SQLCheckOps(SQLDB db) { + this.db = db; + } + + @Override + public boolean isPlayerRegistered(UUID player) throws DBException { + try { + return db.getUsersTable().isRegistered(player); + } catch (SQLException e) { + throw ErrorUtil.getExceptionFor(e); + } + } + + @Override + public boolean isPlayerRegistered(UUID player, UUID server) throws DBException { + try { + return db.getUserInfoTable().isRegistered(player, server); + } catch (SQLException e) { + throw ErrorUtil.getExceptionFor(e); + } + } + + @Override + public boolean doesWebUserExists(String username) throws DBException { + try { + return db.getSecurityTable().userExists(username); + } catch (SQLException e) { + throw ErrorUtil.getExceptionFor(e); + } + } +} diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/SQLDB.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/SQLDB.java similarity index 71% rename from Plan/src/main/java/com/djrapitops/plan/system/database/databases/SQLDB.java rename to Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/SQLDB.java index 2ed862a89..1136281a6 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/SQLDB.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/SQLDB.java @@ -1,11 +1,16 @@ -package com.djrapitops.plan.system.database.databases; +package com.djrapitops.plan.system.database.databases.sql; -import com.djrapitops.plan.api.exceptions.DatabaseInitException; +import com.djrapitops.plan.api.exceptions.database.DBInitException; import com.djrapitops.plan.data.PlayerProfile; import com.djrapitops.plan.data.ServerProfile; import com.djrapitops.plan.data.container.*; -import com.djrapitops.plan.system.database.tables.*; -import com.djrapitops.plan.system.database.tables.move.Version8TransferTable; +import com.djrapitops.plan.system.database.databases.Database; +import com.djrapitops.plan.system.database.databases.operation.BackupOperations; +import com.djrapitops.plan.system.database.databases.operation.CheckOperations; +import com.djrapitops.plan.system.database.databases.operation.FetchOperations; +import com.djrapitops.plan.system.database.databases.operation.RemoveOperations; +import com.djrapitops.plan.system.database.databases.sql.tables.*; +import com.djrapitops.plan.system.database.databases.sql.tables.move.Version8TransferTable; import com.djrapitops.plan.utilities.MiscUtils; import com.djrapitops.plugin.api.Benchmark; import com.djrapitops.plugin.api.TimeAmount; @@ -27,6 +32,26 @@ import java.util.*; */ public abstract class SQLDB extends Database { + private final UsersTable usersTable; + private final UserInfoTable userInfoTable; + private final ActionsTable actionsTable; + private final KillsTable killsTable; + private final NicknamesTable nicknamesTable; + private final SessionsTable sessionsTable; + private final IPsTable ipsTable; + private final CommandUseTable commandUseTable; + private final TPSTable tpsTable; + private final VersionTable versionTable; + private final SecurityTable securityTable; + private final WorldTable worldTable; + private final WorldTimesTable worldTimesTable; + private final ServerTable serverTable; + + private final SQLBackupOps backupOps; + private final SQLCheckOps checkOps; + private final SQLFetchOps fetchOps; + private final SQLRemoveOps removeOps; + private final boolean usingMySQL; private boolean open = false; private ITask dbCleanTask; @@ -34,22 +59,27 @@ public abstract class SQLDB extends Database { public SQLDB() { usingMySQL = getName().equals("MySQL"); - versionTable = new VersionTable(this, usingMySQL); - serverTable = new ServerTable(this, usingMySQL); - securityTable = new SecurityTable(this, usingMySQL); + versionTable = new VersionTable(this); + serverTable = new ServerTable(this); + securityTable = new SecurityTable(this); - commandUseTable = new CommandUseTable(this, usingMySQL); - tpsTable = new TPSTable(this, usingMySQL); + commandUseTable = new CommandUseTable(this); + tpsTable = new TPSTable(this); - usersTable = new UsersTable(this, usingMySQL); - userInfoTable = new UserInfoTable(this, usingMySQL); - actionsTable = new ActionsTable(this, usingMySQL); - ipsTable = new IPsTable(this, usingMySQL); - nicknamesTable = new NicknamesTable(this, usingMySQL); - sessionsTable = new SessionsTable(this, usingMySQL); - killsTable = new KillsTable(this, usingMySQL); - worldTable = new WorldTable(this, usingMySQL); - worldTimesTable = new WorldTimesTable(this, usingMySQL); + usersTable = new UsersTable(this); + userInfoTable = new UserInfoTable(this); + actionsTable = new ActionsTable(this); + ipsTable = new IPsTable(this); + nicknamesTable = new NicknamesTable(this); + sessionsTable = new SessionsTable(this); + killsTable = new KillsTable(this); + worldTable = new WorldTable(this); + worldTimesTable = new WorldTimesTable(this); + + backupOps = new SQLBackupOps(this); + checkOps = new SQLCheckOps(this); + fetchOps = new SQLFetchOps(this); + removeOps = new SQLRemoveOps(this); } /** @@ -60,10 +90,10 @@ public abstract class SQLDB extends Database { * Converts Unsaved Bukkit player files to database data. * Cleans the database. * - * @throws DatabaseInitException if Database fails to initiate. + * @throws DBInitException if Database fails to initiate. */ @Override - public void init() throws DatabaseInitException { + public void init() throws DBInitException { setStatus("Init"); String benchName = "Init " + getConfigName(); Benchmark.start("Database", benchName); @@ -99,9 +129,9 @@ public abstract class SQLDB extends Database { *

* Updates to latest schema. * - * @throws DatabaseInitException if something goes wrong. + * @throws DBInitException if something goes wrong. */ - public void setupDatabase() throws DatabaseInitException { + public void setupDatabase() throws DBInitException { try { boolean newDatabase = isNewDatabase(); @@ -122,7 +152,7 @@ public abstract class SQLDB extends Database { public void run() { try { new Version8TransferTable(db, isUsingMySQL()).alterTablesToV10(); - } catch (DatabaseInitException | SQLException e) { + } catch (DBInitException | SQLException e) { Log.toLog(this.getClass().getName(), e); } } @@ -142,7 +172,7 @@ public abstract class SQLDB extends Database { setVersion(13); } } catch (SQLException e) { - throw new DatabaseInitException("Failed to set-up Database", e); + throw new DBInitException("Failed to set-up Database", e); } } @@ -151,7 +181,7 @@ public abstract class SQLDB extends Database { *

* Updates table columns to latest schema. */ - private void createTables() throws DatabaseInitException { + private void createTables() throws DBInitException { Benchmark.start("Database", "Create tables"); for (Table table : getAllTables()) { table.createTable(); @@ -191,15 +221,10 @@ public abstract class SQLDB extends Database { /** * Setups the {@link BasicDataSource} */ - public abstract void setupDataSource() throws DatabaseInitException; + public abstract void setupDataSource() throws DBInitException; - /** - * Closes the SQLDB - * - * @throws SQLException DB Error - */ @Override - public void close() throws SQLException { + public void close() { setStatus("Closed"); open = false; Log.logDebug("Database"); // Log remaining Debug info if present @@ -208,70 +233,18 @@ public abstract class SQLDB extends Database { } } - /** - * @return @throws SQLException - */ - @Override public int getVersion() throws SQLException { return versionTable.getVersion(); } - @Override public void setVersion(int version) throws SQLException { versionTable.setVersion(version); } - @Override public boolean isNewDatabase() throws SQLException { return versionTable.isNewDatabase(); } - @Override - public PlayerProfile getPlayerProfile(UUID uuid) throws SQLException { - if (!wasSeenBefore(uuid)) { - return null; - } - - String playerName = usersTable.getPlayerName(uuid); - Optional registerDate = usersTable.getRegisterDate(uuid); - - if (!registerDate.isPresent()) { - throw new IllegalStateException("User has been saved with null register date to a NOT NULL column"); - } - - PlayerProfile profile = new PlayerProfile(uuid, playerName, registerDate.get()); - profile.setTimesKicked(usersTable.getTimesKicked(uuid)); - - Map userInfo = userInfoTable.getAllUserInfo(uuid); - addUserInfoToProfile(profile, userInfo); - - profile.setActions(actionsTable.getActions(uuid)); - profile.setNicknames(nicknamesTable.getAllNicknames(uuid)); - profile.setGeoInformation(ipsTable.getGeoInfo(uuid)); - - Map> sessions = sessionsTable.getSessions(uuid); - profile.setSessions(sessions); - profile.calculateWorldTimesPerServer(); - profile.setTotalWorldTimes(worldTimesTable.getWorldTimesOfUser(uuid)); - - return profile; - } - - private void addUserInfoToProfile(PlayerProfile profile, Map userInfo) { - for (Map.Entry entry : userInfo.entrySet()) { - UUID serverUUID = entry.getKey(); - UserInfo info = entry.getValue(); - - profile.setRegistered(serverUUID, info.getRegistered()); - if (info.isBanned()) { - profile.bannedOnServer(serverUUID); - } - if (info.isOpped()) { - profile.oppedOnServer(serverUUID); - } - } - } - @Override public ServerProfile getServerProfile(UUID serverUUID) throws SQLException { ServerProfile profile = new ServerProfile(serverUUID); @@ -330,21 +303,6 @@ public abstract class SQLDB extends Database { return players; } - @Override - public boolean wasSeenBefore(UUID uuid) { - if (uuid == null) { - return false; - } - try { - return usersTable.isRegistered(uuid); - } catch (SQLException e) { - Log.toLog(this.getClass().getName(), e); - return false; - } finally { - setAvailable(); - } - } - public void removeAccount(UUID uuid) throws SQLException { if (uuid == null) { return; @@ -374,18 +332,6 @@ public abstract class SQLDB extends Database { Log.info("Clean complete."); } - @Override - public void removeAllData() throws SQLException { - setStatus("Clearing all data"); - try { - for (Table table : getAllTablesInRemoveOrder()) { - table.removeAllData(); - } - } finally { - setAvailable(); - } - } - private void setStatus(String status) { Log.logDebug("Database", status); } @@ -401,7 +347,6 @@ public abstract class SQLDB extends Database { *

* MySQL has Auto Commit enabled. */ - @Override public void commit(Connection connection) throws SQLException { try { if (!usingMySQL) { @@ -416,7 +361,6 @@ public abstract class SQLDB extends Database { } } - @Override public void returnToPool(Connection connection) throws SQLException { if (usingMySQL && connection != null) { connection.close(); @@ -438,7 +382,79 @@ public abstract class SQLDB extends Database { } } - public boolean isOpen() { - return open; + public UsersTable getUsersTable() { + return usersTable; + } + + public SessionsTable getSessionsTable() { + return sessionsTable; + } + + public KillsTable getKillsTable() { + return killsTable; + } + + public IPsTable getIpsTable() { + return ipsTable; + } + + public NicknamesTable getNicknamesTable() { + return nicknamesTable; + } + + public CommandUseTable getCommandUseTable() { + return commandUseTable; + } + + public TPSTable getTpsTable() { + return tpsTable; + } + + public SecurityTable getSecurityTable() { + return securityTable; + } + + public WorldTable getWorldTable() { + return worldTable; + } + + public WorldTimesTable getWorldTimesTable() { + return worldTimesTable; + } + + public ServerTable getServerTable() { + return serverTable; + } + + public ActionsTable getActionsTable() { + return actionsTable; + } + + public UserInfoTable getUserInfoTable() { + return userInfoTable; + } + + public boolean isUsingMySQL() { + return this instanceof MySQLDB; + } + + @Override + public BackupOperations backup() { + return backupOps; + } + + @Override + public CheckOperations check() { + return checkOps; + } + + @Override + public FetchOperations fetch() { + return fetchOps; + } + + @Override + public RemoveOperations remove() { + return removeOps; } } diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/SQLFetchOps.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/SQLFetchOps.java new file mode 100644 index 000000000..1957e421a --- /dev/null +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/SQLFetchOps.java @@ -0,0 +1,100 @@ +package com.djrapitops.plan.system.database.databases.sql; + +import com.djrapitops.plan.api.exceptions.database.DBException; +import com.djrapitops.plan.data.PlayerProfile; +import com.djrapitops.plan.data.ServerProfile; +import com.djrapitops.plan.data.container.Session; +import com.djrapitops.plan.data.container.UserInfo; +import com.djrapitops.plan.system.database.databases.operation.FetchOperations; + +import java.sql.SQLException; +import java.util.*; + +public class SQLFetchOps extends SQLOps implements FetchOperations { + + public SQLFetchOps(SQLDB db) { + super(db); + } + + @Override + public ServerProfile getServerProfile(UUID serverUUID) { + return null; + } + + @Override + public PlayerProfile getPlayerProfile(UUID uuid) throws DBException { + try { + if (!usersTable.isRegistered(uuid)) { + return null; + } + + String playerName = usersTable.getPlayerName(uuid); + Optional registerDate = usersTable.getRegisterDate(uuid); + + if (!registerDate.isPresent()) { + throw new IllegalStateException("User has been saved with null register date to a NOT NULL column"); + } + + PlayerProfile profile = new PlayerProfile(uuid, playerName, registerDate.get()); + profile.setTimesKicked(usersTable.getTimesKicked(uuid)); + + Map userInfo = userInfoTable.getAllUserInfo(uuid); + addUserInfoToProfile(profile, userInfo); + + profile.setActions(actionsTable.getActions(uuid)); + profile.setNicknames(nicknamesTable.getAllNicknames(uuid)); + profile.setGeoInformation(ipsTable.getGeoInfo(uuid)); + + Map> sessions = sessionsTable.getSessions(uuid); + profile.setSessions(sessions); + profile.calculateWorldTimesPerServer(); + profile.setTotalWorldTimes(worldTimesTable.getWorldTimesOfUser(uuid)); + + return profile; + } catch (SQLException e) { + throw ErrorUtil.getExceptionFor(e); + } + } + + private void addUserInfoToProfile(PlayerProfile profile, Map userInfo) { + for (Map.Entry entry : userInfo.entrySet()) { + UUID serverUUID = entry.getKey(); + UserInfo info = entry.getValue(); + + profile.setRegistered(serverUUID, info.getRegistered()); + if (info.isBanned()) { + profile.bannedOnServer(serverUUID); + } + if (info.isOpped()) { + profile.oppedOnServer(serverUUID); + } + } + } + + @Override + public Set getSavedUUIDs() throws DBException { + try { + return usersTable.getSavedUUIDs(); + } catch (SQLException e) { + throw ErrorUtil.getExceptionFor(e); + } + } + + @Override + public Set getSavedUUIDs(UUID server) throws DBException { + try { + return userInfoTable.getSavedUUIDs(server); + } catch (SQLException e) { + throw ErrorUtil.getExceptionFor(e); + } + } + + @Override + public Map getServerNames() throws DBException { + try { + return serverTable.getServerNames(); + } catch (SQLException e) { + throw ErrorUtil.getExceptionFor(e); + } + } +} diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/SQLOps.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/SQLOps.java new file mode 100644 index 000000000..9abd83bfd --- /dev/null +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/SQLOps.java @@ -0,0 +1,40 @@ +package com.djrapitops.plan.system.database.databases.sql; + +import com.djrapitops.plan.system.database.databases.sql.tables.*; + +public class SQLOps { + + protected final SQLDB db; + + protected final UsersTable usersTable; + protected final UserInfoTable userInfoTable; + protected final ActionsTable actionsTable; + protected final KillsTable killsTable; + protected final NicknamesTable nicknamesTable; + protected final SessionsTable sessionsTable; + protected final IPsTable ipsTable; + protected final CommandUseTable commandUseTable; + protected final TPSTable tpsTable; + protected final SecurityTable securityTable; + protected final WorldTable worldTable; + protected final WorldTimesTable worldTimesTable; + protected final ServerTable serverTable; + + public SQLOps(SQLDB db) { + this.db = db; + + usersTable = db.getUsersTable(); + userInfoTable = db.getUserInfoTable(); + actionsTable = db.getActionsTable(); + killsTable = db.getKillsTable(); + nicknamesTable = db.getNicknamesTable(); + sessionsTable = db.getSessionsTable(); + ipsTable = db.getIpsTable(); + commandUseTable = db.getCommandUseTable(); + tpsTable = db.getTpsTable(); + securityTable = db.getSecurityTable(); + worldTable = db.getWorldTable(); + worldTimesTable = db.getWorldTimesTable(); + serverTable = db.getServerTable(); + } +} diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/SQLRemoveOps.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/SQLRemoveOps.java new file mode 100644 index 000000000..e78504cad --- /dev/null +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/SQLRemoveOps.java @@ -0,0 +1,74 @@ +package com.djrapitops.plan.system.database.databases.sql; + +import com.djrapitops.plan.api.exceptions.database.DBException; +import com.djrapitops.plan.api.exceptions.database.FatalDBException; +import com.djrapitops.plan.system.database.databases.operation.RemoveOperations; +import com.djrapitops.plan.system.database.databases.sql.tables.Table; +import com.djrapitops.plan.system.database.databases.sql.tables.UserIDTable; +import com.djrapitops.plugin.api.Benchmark; +import com.djrapitops.plugin.api.utility.log.Log; + +import java.sql.SQLException; +import java.util.UUID; + +public class SQLRemoveOps extends SQLOps implements RemoveOperations { + + public SQLRemoveOps(SQLDB db) { + super(db); + } + + @Override + public void player(UUID uuid) throws DBException { + if (uuid == null) { + return; + } + + try { + Log.logDebug("Database", "Removing Account: " + uuid); + Benchmark.start("Database", "Remove Account"); + + for (Table t : db.getAllTablesInRemoveOrder()) { + if (!(t instanceof UserIDTable)) { + continue; + } + + UserIDTable table = (UserIDTable) t; + table.removeUser(uuid); + } + } catch (SQLException e) { + throw ErrorUtil.getFatalExceptionFor(e); + } finally { + Benchmark.stop("Database", "Remove Account"); + } + } + + @Override + public void player(UUID player, UUID server) throws DBException { + throw new FatalDBException("Not Implemented"); + } + + @Override + public void server(UUID serverUUID) throws DBException { + throw new FatalDBException("Not Implemented"); + } + + @Override + public void everything() throws DBException { + try { + for (Table table : db.getAllTablesInRemoveOrder()) { + table.removeAllData(); + } + } catch (SQLException e) { + throw ErrorUtil.getExceptionFor(e); + } + } + + @Override + public void webUser(String userName) throws DBException { + try { + securityTable.removeUser(userName); + } catch (SQLException e) { + throw ErrorUtil.getExceptionFor(e); + } + } +} diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/SQLiteDB.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/SQLiteDB.java similarity index 93% rename from Plan/src/main/java/com/djrapitops/plan/system/database/databases/SQLiteDB.java rename to Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/SQLiteDB.java index e66d7daab..ca838b264 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/SQLiteDB.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/SQLiteDB.java @@ -1,6 +1,7 @@ -package com.djrapitops.plan.system.database.databases; +package com.djrapitops.plan.system.database.databases.sql; -import com.djrapitops.plan.api.exceptions.DatabaseInitException; +import com.djrapitops.plan.PlanPlugin; +import com.djrapitops.plan.api.exceptions.database.DBInitException; import com.djrapitops.plan.utilities.MiscUtils; import com.djrapitops.plugin.api.utility.log.Log; import com.djrapitops.plugin.task.AbsRunnable; @@ -38,11 +39,11 @@ public class SQLiteDB extends SQLDB { * Setups the {@link BasicDataSource} */ @Override - public void setupDataSource() throws DatabaseInitException { + public void setupDataSource() throws DBInitException { try { connection = getNewConnection(dbName); } catch (SQLException e) { - throw new DatabaseInitException(e); + throw new DBInitException(e); } startConnectionPingTask(); } @@ -132,7 +133,7 @@ public class SQLiteDB extends SQLDB { } @Override - public void close() throws SQLException { + public void close() { stopConnectionPingTask(); MiscUtils.close(connection); super.close(); diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/processing/ExecStatement.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/processing/ExecStatement.java similarity index 79% rename from Plan/src/main/java/com/djrapitops/plan/system/database/processing/ExecStatement.java rename to Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/processing/ExecStatement.java index 7f12a4cac..5f843523d 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/processing/ExecStatement.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/processing/ExecStatement.java @@ -2,7 +2,10 @@ * Licence is provided in the jar as license.yml also here: * https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml */ -package com.djrapitops.plan.system.database.processing; +package com.djrapitops.plan.system.database.databases.sql.processing; + +import com.djrapitops.plan.system.settings.Settings; +import com.djrapitops.plugin.api.utility.log.Log; import java.sql.PreparedStatement; import java.sql.SQLException; @@ -18,7 +21,9 @@ public abstract class ExecStatement { public ExecStatement(String sql) { this.sql = sql; -// Log.debug("Execute Statement: " + sql); + if (Settings.DEV_MODE.isTrue()) { + Log.debug("Execute Statement: " + sql); + } } public boolean execute(PreparedStatement statement) throws SQLException { diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/processing/QueryAllStatement.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/processing/QueryAllStatement.java similarity index 91% rename from Plan/src/main/java/com/djrapitops/plan/system/database/processing/QueryAllStatement.java rename to Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/processing/QueryAllStatement.java index d4cf06c7d..563b6191e 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/processing/QueryAllStatement.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/processing/QueryAllStatement.java @@ -2,7 +2,7 @@ * Licence is provided in the jar as license.yml also here: * https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml */ -package com.djrapitops.plan.system.database.processing; +package com.djrapitops.plan.system.database.databases.sql.processing; import java.sql.PreparedStatement; import java.sql.ResultSet; diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/processing/QueryStatement.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/processing/QueryStatement.java similarity index 81% rename from Plan/src/main/java/com/djrapitops/plan/system/database/processing/QueryStatement.java rename to Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/processing/QueryStatement.java index b38687683..0e7c4ad08 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/processing/QueryStatement.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/processing/QueryStatement.java @@ -2,7 +2,10 @@ * Licence is provided in the jar as license.yml also here: * https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml */ -package com.djrapitops.plan.system.database.processing; +package com.djrapitops.plan.system.database.databases.sql.processing; + +import com.djrapitops.plan.system.settings.Settings; +import com.djrapitops.plugin.api.utility.log.Log; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -24,7 +27,9 @@ public abstract class QueryStatement { public QueryStatement(String sql, int fetchSize) { this.sql = sql; -// Log.debug("Query Statement: " + sql); + if (Settings.DEV_MODE.isTrue()) { + Log.debug("Query Statement: " + sql); + } this.fetchSize = fetchSize; } diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/statements/Insert.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/statements/Insert.java new file mode 100644 index 000000000..b3e7a44c2 --- /dev/null +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/statements/Insert.java @@ -0,0 +1,30 @@ +package com.djrapitops.plan.system.database.databases.sql.statements; + +public class Insert extends SqlParser { + + public Insert(String table) { + super("INSERT INTO " + table); + addSpace(); + } + + public static String values(String table, String... columns) { + Insert parser = new Insert(table); + parser.append("("); + int size = columns.length; + for (int i = 0; i < size; i++) { + if (size > 1 && i > 0) { + parser.append(", "); + } + parser.append(columns[i]); + } + parser.append(") VALUES ("); + for (int i = 0; i < size; i++) { + if (size > 1 && i > 0) { + parser.append(", "); + } + parser.append("?"); + } + parser.append(")"); + return parser.toString(); + } +} diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/statements/Select.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/statements/Select.java new file mode 100644 index 000000000..9ed55c38c --- /dev/null +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/statements/Select.java @@ -0,0 +1,26 @@ +package com.djrapitops.plan.system.database.databases.sql.statements; + +public class Select extends WhereParser { + + public Select(String start) { + super(start); + } + + public static Select from(String table, String... columns) { + Select parser = new Select("SELECT "); + int size = columns.length; + for (int i = 0; i < size; i++) { + if (size > 1 && i > 0) { + parser.append(", "); + } + parser.append(columns[i]); + } + + parser.append(" FROM ").append(table); + return parser; + } + + public static Select all(String table) { + return new Select("SELECT * FROM " + table); + } +} diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/statements/Sql.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/statements/Sql.java new file mode 100644 index 000000000..973c2d38b --- /dev/null +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/statements/Sql.java @@ -0,0 +1,16 @@ +package com.djrapitops.plan.system.database.databases.sql.statements; + +public class Sql { + public static final String INT = "integer"; + public static final String DOUBLE = "double"; + public static final String LONG = "bigint"; + public static final String BOOL = "boolean"; + + private Sql() { + throw new IllegalStateException("Variable Class"); + } + + public static String varchar(int length) { + return "varchar(" + length + ")"; + } +} diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/statements/SqlParser.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/statements/SqlParser.java new file mode 100644 index 000000000..0d6109bfe --- /dev/null +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/statements/SqlParser.java @@ -0,0 +1,35 @@ +package com.djrapitops.plan.system.database.databases.sql.statements; + +/** + * Class for parsing different SQL strings. + * + * @author Rsl1122 + * @since 3.7.0 + */ +public class SqlParser { + + private final StringBuilder s; + + public SqlParser() { + s = new StringBuilder(); + } + + public SqlParser(String start) { + s = new StringBuilder(start); + } + + public SqlParser addSpace() { + s.append(" "); + return this; + } + + public SqlParser append(String string) { + s.append(string); + return this; + } + + @Override + public String toString() { + return s.toString(); + } +} diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/statements/TableSqlParser.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/statements/TableSqlParser.java new file mode 100644 index 000000000..ec0a0df70 --- /dev/null +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/statements/TableSqlParser.java @@ -0,0 +1,118 @@ +package com.djrapitops.plan.system.database.databases.sql.statements; + +/** + * SqlParser Class for parsing table creation, removal and modification statements. + * + * @author Rsl1122 + * @since 3.7.0 + */ +public class TableSqlParser extends SqlParser { + + private int columns = 0; + + public TableSqlParser(String start) { + super(start); + } + + public static TableSqlParser createTable(String tableName) { + return new TableSqlParser("CREATE TABLE IF NOT EXISTS " + tableName + " ("); + } + + public static String dropTable(String tableName) { + return "DROP TABLE IF EXISTS " + tableName; + } + + /** + * Used for ALTER TABLE sql statements. + * + * @param column column to modify + * @return TableSqlParser object + */ + public static TableSqlParser newColumn(String column, String type) { + return new TableSqlParser("").column(column, type); + } + + public TableSqlParser column(String column, String type) { + if (columns > 0) { + append(", "); + } + append(column).addSpace(); + append(type); + + columns++; + return this; + } + + public TableSqlParser foreignKey(String column, String refrencedTable, String referencedColumn) { + if (columns > 0) { + append(", "); + } + append("FOREIGN KEY(") + .append(column) + .append(") REFERENCES ") + .append(refrencedTable) + .append("(") + .append(referencedColumn) + .append(")"); + columns++; + return this; + } + + public TableSqlParser notNull() { + addSpace(); + append("NOT NULL"); + return this; + } + + public TableSqlParser unique() { + addSpace(); + append("UNIQUE"); + return this; + } + + public TableSqlParser defaultValue(boolean value) { + return defaultValue(value ? "1" : "0"); + } + + public TableSqlParser defaultValue(String value) { + addSpace(); + append("DEFAULT ").append(value); + return this; + } + + public TableSqlParser primaryKeyIDColumn(boolean mySQL, String column) { + if (columns > 0) { + append(", "); + } + append(column).addSpace(); + append(Sql.INT).addSpace(); + append((mySQL) ? "NOT NULL AUTO_INCREMENT" : "PRIMARY KEY"); + columns++; + return this; + } + + public TableSqlParser primaryKey(boolean mySQL, String column) { + if (mySQL) { + if (columns > 0) { + append(", "); + } + append("PRIMARY KEY (").append(column).append(")"); + columns++; + } + return this; + } + + public TableSqlParser charSetUTF8(boolean mySQL) { + if (mySQL) { + addSpace(); + append("CHARACTER SET utf8 COLLATE utf8mb4_general_ci"); + } + return this; + } + + @Override + public String toString() { + append(")"); + return super.toString(); + } +} diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/statements/Update.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/statements/Update.java new file mode 100644 index 000000000..9e9b4b73c --- /dev/null +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/statements/Update.java @@ -0,0 +1,30 @@ +/* + * Licence is provided in the jar as license.yml also here: + * https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml + */ +package com.djrapitops.plan.system.database.databases.sql.statements; + +/** + * @author Fuzzlemann + */ +public class Update extends WhereParser { + + public Update(String table) { + super("UPDATE " + table + " SET"); + addSpace(); + } + + public static Update values(String table, String... values) { + Update parser = new Update(table); + + int size = values.length; + for (int i = 0; i < size; i++) { + if (size > 1 && i > 0) { + parser.append(", "); + } + parser.append(values[i] + "=?"); + } + + return parser; + } +} diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/statements/WhereParser.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/statements/WhereParser.java new file mode 100644 index 000000000..7b534abf3 --- /dev/null +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/statements/WhereParser.java @@ -0,0 +1,48 @@ +/* + * Licence is provided in the jar as license.yml also here: + * https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml + */ +package com.djrapitops.plan.system.database.databases.sql.statements; + +/** + * @author Fuzzlemann + */ +public abstract class WhereParser extends SqlParser { + + private int conditions = 0; + + public WhereParser() { + super(); + } + + public WhereParser(String start) { + super(start); + } + + public WhereParser where(String... conditions) { + append(" WHERE "); + for (String condition : conditions) { + if (this.conditions > 0) { + append(" AND "); + } + append("(").append(condition).append(")"); + this.conditions++; + } + + return this; + } + + public WhereParser and(String condition) { + append(" AND "); + append("(").append(condition).append(")"); + this.conditions++; + return this; + } + + public WhereParser or(String condition) { + append(" OR "); + append("(").append(condition).append(")"); + this.conditions++; + return this; + } +} diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/ActionsTable.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/ActionsTable.java similarity index 92% rename from Plan/src/main/java/com/djrapitops/plan/system/database/tables/ActionsTable.java rename to Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/ActionsTable.java index 4f752ad58..cfa90bc73 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/ActionsTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/ActionsTable.java @@ -2,19 +2,19 @@ * Licence is provided in the jar as license.yml also here: * https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml */ -package com.djrapitops.plan.system.database.tables; +package com.djrapitops.plan.system.database.databases.sql.tables; import com.djrapitops.plan.Plan; -import com.djrapitops.plan.api.exceptions.DBCreateTableException; +import com.djrapitops.plan.api.exceptions.database.DBCreateTableException; import com.djrapitops.plan.data.Actions; import com.djrapitops.plan.data.container.Action; -import com.djrapitops.plan.system.database.databases.SQLDB; -import com.djrapitops.plan.system.database.processing.ExecStatement; -import com.djrapitops.plan.system.database.processing.QueryAllStatement; -import com.djrapitops.plan.system.database.processing.QueryStatement; -import com.djrapitops.plan.system.database.sql.Select; -import com.djrapitops.plan.system.database.sql.Sql; -import com.djrapitops.plan.system.database.sql.TableSqlParser; +import com.djrapitops.plan.system.database.databases.sql.SQLDB; +import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement; +import com.djrapitops.plan.system.database.databases.sql.statements.Select; +import com.djrapitops.plan.system.database.databases.sql.statements.Sql; +import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser; import com.djrapitops.plugin.utilities.Verify; import java.sql.PreparedStatement; @@ -46,8 +46,8 @@ public class ActionsTable extends UserIDTable { private final ServerTable serverTable; private String insertStatement; - public ActionsTable(SQLDB db, boolean usingMySQL) { - super("plan_actions", db, usingMySQL); + public ActionsTable(SQLDB db) { + super("plan_actions", db); serverTable = db.getServerTable(); insertStatement = "INSERT INTO " + tableName + " (" + columnUserID + ", " diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/CommandUseTable.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/CommandUseTable.java similarity index 91% rename from Plan/src/main/java/com/djrapitops/plan/system/database/tables/CommandUseTable.java rename to Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/CommandUseTable.java index 428f66b14..5303d4a49 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/CommandUseTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/CommandUseTable.java @@ -1,14 +1,14 @@ -package com.djrapitops.plan.system.database.tables; +package com.djrapitops.plan.system.database.databases.sql.tables; import com.djrapitops.plan.Plan; -import com.djrapitops.plan.api.exceptions.DBCreateTableException; -import com.djrapitops.plan.system.database.databases.SQLDB; -import com.djrapitops.plan.system.database.processing.ExecStatement; -import com.djrapitops.plan.system.database.processing.QueryAllStatement; -import com.djrapitops.plan.system.database.processing.QueryStatement; -import com.djrapitops.plan.system.database.sql.Select; -import com.djrapitops.plan.system.database.sql.Sql; -import com.djrapitops.plan.system.database.sql.TableSqlParser; +import com.djrapitops.plan.api.exceptions.database.DBCreateTableException; +import com.djrapitops.plan.system.database.databases.sql.SQLDB; +import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement; +import com.djrapitops.plan.system.database.databases.sql.statements.Select; +import com.djrapitops.plan.system.database.databases.sql.statements.Sql; +import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -31,8 +31,8 @@ public class CommandUseTable extends Table { private final ServerTable serverTable; private String insertStatement; - public CommandUseTable(SQLDB db, boolean usingMySQL) { - super("plan_commandusages", db, usingMySQL); + public CommandUseTable(SQLDB db) { + super("plan_commandusages", db); serverTable = db.getServerTable(); insertStatement = "INSERT INTO " + tableName + " (" + columnCommand + ", " diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/IPsTable.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/IPsTable.java similarity index 90% rename from Plan/src/main/java/com/djrapitops/plan/system/database/tables/IPsTable.java rename to Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/IPsTable.java index 0d0856189..27e574635 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/IPsTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/IPsTable.java @@ -1,14 +1,14 @@ -package com.djrapitops.plan.system.database.tables; +package com.djrapitops.plan.system.database.databases.sql.tables; -import com.djrapitops.plan.api.exceptions.DBCreateTableException; +import com.djrapitops.plan.api.exceptions.database.DBCreateTableException; import com.djrapitops.plan.data.container.GeoInfo; -import com.djrapitops.plan.system.database.databases.SQLDB; -import com.djrapitops.plan.system.database.processing.ExecStatement; -import com.djrapitops.plan.system.database.processing.QueryAllStatement; -import com.djrapitops.plan.system.database.processing.QueryStatement; -import com.djrapitops.plan.system.database.sql.Select; -import com.djrapitops.plan.system.database.sql.Sql; -import com.djrapitops.plan.system.database.sql.TableSqlParser; +import com.djrapitops.plan.system.database.databases.sql.SQLDB; +import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement; +import com.djrapitops.plan.system.database.databases.sql.statements.Select; +import com.djrapitops.plan.system.database.databases.sql.statements.Sql; +import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser; import com.djrapitops.plugin.utilities.Verify; import java.sql.PreparedStatement; @@ -26,12 +26,8 @@ public class IPsTable extends UserIDTable { private final String columnLastUsed = "last_used"; private String insertStatement; - /** - * @param db The database - * @param usingMySQL if the server is using MySQL - */ - public IPsTable(SQLDB db, boolean usingMySQL) { - super("plan_ips", db, usingMySQL); + public IPsTable(SQLDB db) { + super("plan_ips", db); insertStatement = "INSERT INTO " + tableName + " (" + columnUserID + ", " + columnIP + ", " diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/KillsTable.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/KillsTable.java similarity index 94% rename from Plan/src/main/java/com/djrapitops/plan/system/database/tables/KillsTable.java rename to Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/KillsTable.java index eb67b74d8..090a54d87 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/KillsTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/KillsTable.java @@ -1,14 +1,14 @@ -package com.djrapitops.plan.system.database.tables; +package com.djrapitops.plan.system.database.databases.sql.tables; -import com.djrapitops.plan.api.exceptions.DBCreateTableException; +import com.djrapitops.plan.api.exceptions.database.DBCreateTableException; import com.djrapitops.plan.data.container.PlayerKill; import com.djrapitops.plan.data.container.Session; -import com.djrapitops.plan.system.database.databases.SQLDB; -import com.djrapitops.plan.system.database.processing.ExecStatement; -import com.djrapitops.plan.system.database.processing.QueryAllStatement; -import com.djrapitops.plan.system.database.processing.QueryStatement; -import com.djrapitops.plan.system.database.sql.Sql; -import com.djrapitops.plan.system.database.sql.TableSqlParser; +import com.djrapitops.plan.system.database.databases.sql.SQLDB; +import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement; +import com.djrapitops.plan.system.database.databases.sql.statements.Sql; +import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser; import com.djrapitops.plugin.utilities.Verify; import java.sql.PreparedStatement; @@ -30,8 +30,8 @@ public class KillsTable extends UserIDTable { private final SessionsTable sessionsTable; private String insertStatement; - public KillsTable(SQLDB db, boolean usingMySQL) { - super("plan_kills", db, usingMySQL); + public KillsTable(SQLDB db) { + super("plan_kills", db); sessionsTable = db.getSessionsTable(); insertStatement = "INSERT INTO " + tableName + " (" + columnKillerUserID + ", " diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/NicknamesTable.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/NicknamesTable.java similarity index 92% rename from Plan/src/main/java/com/djrapitops/plan/system/database/tables/NicknamesTable.java rename to Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/NicknamesTable.java index 8b4c1bdd9..76c4bc1e1 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/NicknamesTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/NicknamesTable.java @@ -1,13 +1,13 @@ -package com.djrapitops.plan.system.database.tables; +package com.djrapitops.plan.system.database.databases.sql.tables; import com.djrapitops.plan.Plan; -import com.djrapitops.plan.api.exceptions.DBCreateTableException; -import com.djrapitops.plan.system.database.databases.SQLDB; -import com.djrapitops.plan.system.database.processing.ExecStatement; -import com.djrapitops.plan.system.database.processing.QueryAllStatement; -import com.djrapitops.plan.system.database.processing.QueryStatement; -import com.djrapitops.plan.system.database.sql.Sql; -import com.djrapitops.plan.system.database.sql.TableSqlParser; +import com.djrapitops.plan.api.exceptions.database.DBCreateTableException; +import com.djrapitops.plan.system.database.databases.sql.SQLDB; +import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement; +import com.djrapitops.plan.system.database.databases.sql.statements.Sql; +import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser; import com.djrapitops.plugin.utilities.Verify; import java.sql.PreparedStatement; @@ -26,12 +26,8 @@ public class NicknamesTable extends UserIDTable { private final ServerTable serverTable; private String insertStatement; - /** - * @param db The database - * @param usingMySQL if the server is using MySQL - */ - public NicknamesTable(SQLDB db, boolean usingMySQL) { - super("plan_nicknames", db, usingMySQL); + public NicknamesTable(SQLDB db) { + super("plan_nicknames", db); serverTable = db.getServerTable(); insertStatement = "INSERT INTO " + tableName + " (" + columnUserID + ", " + diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/SecurityTable.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/SecurityTable.java similarity index 84% rename from Plan/src/main/java/com/djrapitops/plan/system/database/tables/SecurityTable.java rename to Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/SecurityTable.java index 00ef2368b..8070a7518 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/SecurityTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/SecurityTable.java @@ -3,18 +3,18 @@ * To change this template file, choose Tools | Templates * and open the template in the editor. */ -package com.djrapitops.plan.system.database.tables; +package com.djrapitops.plan.system.database.databases.sql.tables; -import com.djrapitops.plan.api.exceptions.DBCreateTableException; +import com.djrapitops.plan.api.exceptions.database.DBCreateTableException; import com.djrapitops.plan.data.WebUser; -import com.djrapitops.plan.system.database.databases.SQLDB; -import com.djrapitops.plan.system.database.processing.ExecStatement; -import com.djrapitops.plan.system.database.processing.QueryAllStatement; -import com.djrapitops.plan.system.database.processing.QueryStatement; -import com.djrapitops.plan.system.database.sql.Insert; -import com.djrapitops.plan.system.database.sql.Select; -import com.djrapitops.plan.system.database.sql.Sql; -import com.djrapitops.plan.system.database.sql.TableSqlParser; +import com.djrapitops.plan.system.database.databases.sql.SQLDB; +import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement; +import com.djrapitops.plan.system.database.databases.sql.statements.Insert; +import com.djrapitops.plan.system.database.databases.sql.statements.Select; +import com.djrapitops.plan.system.database.databases.sql.statements.Sql; +import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser; import com.djrapitops.plugin.utilities.Verify; import java.sql.PreparedStatement; @@ -33,8 +33,8 @@ public class SecurityTable extends Table { private final String columnPermLevel = "permission_level"; private String insertStatement; - public SecurityTable(SQLDB db, boolean usingMySQL) { - super("plan_security", db, usingMySQL); + public SecurityTable(SQLDB db) { + super("plan_security", db); insertStatement = Insert.values(tableName, columnUser, columnSaltedHash, diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/ServerTable.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/ServerTable.java similarity index 96% rename from Plan/src/main/java/com/djrapitops/plan/system/database/tables/ServerTable.java rename to Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/ServerTable.java index 12c42c658..a69462922 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/ServerTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/ServerTable.java @@ -2,14 +2,14 @@ * Licence is provided in the jar as license.yml also here: * https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml */ -package com.djrapitops.plan.system.database.tables; +package com.djrapitops.plan.system.database.databases.sql.tables; -import com.djrapitops.plan.api.exceptions.DBCreateTableException; -import com.djrapitops.plan.system.database.databases.SQLDB; -import com.djrapitops.plan.system.database.processing.ExecStatement; -import com.djrapitops.plan.system.database.processing.QueryAllStatement; -import com.djrapitops.plan.system.database.processing.QueryStatement; -import com.djrapitops.plan.system.database.sql.*; +import com.djrapitops.plan.api.exceptions.database.DBCreateTableException; +import com.djrapitops.plan.system.database.databases.sql.SQLDB; +import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement; +import com.djrapitops.plan.system.database.databases.sql.statements.*; import com.djrapitops.plan.systems.info.server.ServerInfo; import com.djrapitops.plugin.utilities.Verify; @@ -45,8 +45,8 @@ public class ServerTable extends Table { private final String columnMaxPlayers = "max_players"; private String insertStatement; - public ServerTable(SQLDB db, boolean usingMySQL) { - super("plan_servers", db, usingMySQL); + public ServerTable(SQLDB db) { + super("plan_servers", db); statementSelectServerID = "(" + Select.from(tableName, tableName + "." + columnServerID).where(columnServerUUID + "=?").toString() + ")"; statementSelectServerNameID = "(" + Select.from(tableName, tableName + "." + columnServerName).where(columnServerID + "=?").toString() + ")"; insertStatement = Insert.values(tableName, diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/SessionsTable.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/SessionsTable.java similarity index 97% rename from Plan/src/main/java/com/djrapitops/plan/system/database/tables/SessionsTable.java rename to Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/SessionsTable.java index 1b3ab61fb..a454d192d 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/SessionsTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/SessionsTable.java @@ -1,15 +1,15 @@ -package com.djrapitops.plan.system.database.tables; +package com.djrapitops.plan.system.database.databases.sql.tables; import com.djrapitops.plan.Plan; -import com.djrapitops.plan.api.exceptions.DBCreateTableException; +import com.djrapitops.plan.api.exceptions.database.DBCreateTableException; import com.djrapitops.plan.data.container.Session; -import com.djrapitops.plan.system.database.databases.SQLDB; -import com.djrapitops.plan.system.database.processing.ExecStatement; -import com.djrapitops.plan.system.database.processing.QueryAllStatement; -import com.djrapitops.plan.system.database.processing.QueryStatement; -import com.djrapitops.plan.system.database.sql.Select; -import com.djrapitops.plan.system.database.sql.Sql; -import com.djrapitops.plan.system.database.sql.TableSqlParser; +import com.djrapitops.plan.system.database.databases.sql.SQLDB; +import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement; +import com.djrapitops.plan.system.database.databases.sql.statements.Select; +import com.djrapitops.plan.system.database.databases.sql.statements.Sql; +import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser; import com.djrapitops.plugin.utilities.Verify; import java.sql.PreparedStatement; @@ -34,8 +34,8 @@ public class SessionsTable extends UserIDTable { private final ServerTable serverTable; private String insertStatement; - public SessionsTable(SQLDB db, boolean usingMySQL) { - super("plan_sessions", db, usingMySQL); + public SessionsTable(SQLDB db) { + super("plan_sessions", db); serverTable = db.getServerTable(); insertStatement = "INSERT INTO " + tableName + " (" + columnUserID + ", " diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/TPSTable.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/TPSTable.java similarity index 93% rename from Plan/src/main/java/com/djrapitops/plan/system/database/tables/TPSTable.java rename to Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/TPSTable.java index 0cf5af36e..0f3534c71 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/TPSTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/TPSTable.java @@ -1,14 +1,15 @@ -package com.djrapitops.plan.system.database.tables; +package com.djrapitops.plan.system.database.databases.sql.tables; -import com.djrapitops.plan.api.exceptions.DBCreateTableException; +import com.djrapitops.plan.PlanPlugin; +import com.djrapitops.plan.api.exceptions.database.DBCreateTableException; import com.djrapitops.plan.data.container.TPS; -import com.djrapitops.plan.system.database.databases.SQLDB; -import com.djrapitops.plan.system.database.processing.ExecStatement; -import com.djrapitops.plan.system.database.processing.QueryAllStatement; -import com.djrapitops.plan.system.database.processing.QueryStatement; -import com.djrapitops.plan.system.database.sql.Select; -import com.djrapitops.plan.system.database.sql.Sql; -import com.djrapitops.plan.system.database.sql.TableSqlParser; +import com.djrapitops.plan.system.database.databases.sql.SQLDB; +import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement; +import com.djrapitops.plan.system.database.databases.sql.statements.Select; +import com.djrapitops.plan.system.database.databases.sql.statements.Sql; +import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser; import com.djrapitops.plan.systems.info.server.ServerInfo; import com.djrapitops.plan.utilities.MiscUtils; import com.djrapitops.plugin.api.TimeAmount; @@ -39,8 +40,8 @@ public class TPSTable extends Table { private final ServerTable serverTable; private String insertStatement; - public TPSTable(SQLDB db, boolean usingMySQL) { - super("plan_tps", db, usingMySQL); + public TPSTable(SQLDB db) { + super("plan_tps", db); serverTable = db.getServerTable(); insertStatement = "INSERT INTO " + tableName + " (" + columnServerID + ", " diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/Table.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/Table.java similarity index 92% rename from Plan/src/main/java/com/djrapitops/plan/system/database/tables/Table.java rename to Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/Table.java index 3837286ff..9c776105f 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/Table.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/Table.java @@ -1,9 +1,9 @@ -package com.djrapitops.plan.system.database.tables; +package com.djrapitops.plan.system.database.databases.sql.tables; -import com.djrapitops.plan.api.exceptions.DBCreateTableException; -import com.djrapitops.plan.system.database.databases.SQLDB; -import com.djrapitops.plan.system.database.processing.ExecStatement; -import com.djrapitops.plan.system.database.processing.QueryStatement; +import com.djrapitops.plan.api.exceptions.database.DBCreateTableException; +import com.djrapitops.plan.system.database.databases.sql.SQLDB; +import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement; import com.djrapitops.plan.utilities.MiscUtils; import com.djrapitops.plugin.utilities.Verify; import com.google.common.base.Objects; @@ -39,10 +39,15 @@ public abstract class Table { * @param db Database to use. * @param usingMySQL Is the database using MySQL? */ + @Deprecated public Table(String name, SQLDB db, boolean usingMySQL) { + this(name, db); + } + + public Table(String name, SQLDB db) { this.tableName = name; this.db = db; - this.usingMySQL = usingMySQL; + this.usingMySQL = db.isUsingMySQL(); } public abstract void createTable() throws DBCreateTableException; diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/UserIDTable.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/UserIDTable.java similarity index 74% rename from Plan/src/main/java/com/djrapitops/plan/system/database/tables/UserIDTable.java rename to Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/UserIDTable.java index 695154c69..5b7154751 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/UserIDTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/UserIDTable.java @@ -1,7 +1,7 @@ -package com.djrapitops.plan.system.database.tables; +package com.djrapitops.plan.system.database.databases.sql.tables; -import com.djrapitops.plan.system.database.databases.SQLDB; -import com.djrapitops.plan.system.database.processing.ExecStatement; +import com.djrapitops.plan.system.database.databases.sql.SQLDB; +import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement; import java.sql.PreparedStatement; import java.sql.SQLException; @@ -18,8 +18,8 @@ public abstract class UserIDTable extends Table { protected final String columnUserID = "user_id"; protected final UsersTable usersTable; - public UserIDTable(String name, SQLDB db, boolean usingMySQL) { - super(name, db, usingMySQL); + public UserIDTable(String name, SQLDB db) { + super(name, db); usersTable = db.getUsersTable(); } diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/UserInfoTable.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/UserInfoTable.java similarity index 93% rename from Plan/src/main/java/com/djrapitops/plan/system/database/tables/UserInfoTable.java rename to Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/UserInfoTable.java index e8c27d4b6..cce01b853 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/UserInfoTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/UserInfoTable.java @@ -2,19 +2,20 @@ * Licence is provided in the jar as license.yml also here: * https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml */ -package com.djrapitops.plan.system.database.tables; +package com.djrapitops.plan.system.database.databases.sql.tables; import com.djrapitops.plan.Plan; -import com.djrapitops.plan.api.exceptions.DBCreateTableException; +import com.djrapitops.plan.PlanPlugin; +import com.djrapitops.plan.api.exceptions.database.DBCreateTableException; import com.djrapitops.plan.data.container.UserInfo; -import com.djrapitops.plan.system.database.databases.SQLDB; -import com.djrapitops.plan.system.database.processing.ExecStatement; -import com.djrapitops.plan.system.database.processing.QueryAllStatement; -import com.djrapitops.plan.system.database.processing.QueryStatement; -import com.djrapitops.plan.system.database.sql.Select; -import com.djrapitops.plan.system.database.sql.Sql; -import com.djrapitops.plan.system.database.sql.TableSqlParser; -import com.djrapitops.plan.system.database.sql.Update; +import com.djrapitops.plan.system.database.databases.sql.SQLDB; +import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement; +import com.djrapitops.plan.system.database.databases.sql.statements.Select; +import com.djrapitops.plan.system.database.databases.sql.statements.Sql; +import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser; +import com.djrapitops.plan.system.database.databases.sql.statements.Update; import com.djrapitops.plugin.api.utility.log.Log; import com.djrapitops.plugin.utilities.Verify; @@ -39,8 +40,8 @@ public class UserInfoTable extends UserIDTable { private final ServerTable serverTable; - public UserInfoTable(SQLDB db, boolean usingMySQL) { - super("plan_user_info", db, usingMySQL); + public UserInfoTable(SQLDB db) { + super("plan_user_info", db); serverTable = db.getServerTable(); } @@ -341,4 +342,9 @@ public class UserInfoTable extends UserIDTable { return 0; } } + + // TODO improve performance of this method. + public Set getSavedUUIDs(UUID serverUUID) throws SQLException { + return getSavedUUIDs().get(serverUUID); + } } \ No newline at end of file diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/UsersTable.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/UsersTable.java similarity index 96% rename from Plan/src/main/java/com/djrapitops/plan/system/database/tables/UsersTable.java rename to Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/UsersTable.java index 9eea71115..80a1056d3 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/UsersTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/UsersTable.java @@ -1,12 +1,12 @@ -package com.djrapitops.plan.system.database.tables; +package com.djrapitops.plan.system.database.databases.sql.tables; -import com.djrapitops.plan.api.exceptions.DBCreateTableException; +import com.djrapitops.plan.api.exceptions.database.DBCreateTableException; import com.djrapitops.plan.data.container.UserInfo; -import com.djrapitops.plan.system.database.databases.SQLDB; -import com.djrapitops.plan.system.database.processing.ExecStatement; -import com.djrapitops.plan.system.database.processing.QueryAllStatement; -import com.djrapitops.plan.system.database.processing.QueryStatement; -import com.djrapitops.plan.system.database.sql.*; +import com.djrapitops.plan.system.database.databases.sql.SQLDB; +import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement; +import com.djrapitops.plan.system.database.databases.sql.statements.*; import com.djrapitops.plugin.utilities.Verify; import java.sql.PreparedStatement; @@ -27,8 +27,8 @@ public class UsersTable extends UserIDTable { private final String columnTimesKicked = "times_kicked"; private String insertStatement; - public UsersTable(SQLDB db, boolean usingMySQL) { - super("plan_users", db, usingMySQL); + public UsersTable(SQLDB db) { + super("plan_users", db); statementSelectID = "(" + Select.from(tableName, tableName + "." + columnID).where(columnUUID + "=?").toString() + ")"; insertStatement = Insert.values(tableName, columnUUID, diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/VersionTable.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/VersionTable.java similarity index 75% rename from Plan/src/main/java/com/djrapitops/plan/system/database/tables/VersionTable.java rename to Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/VersionTable.java index 6fa3c818e..77525036c 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/VersionTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/VersionTable.java @@ -1,12 +1,12 @@ -package com.djrapitops.plan.system.database.tables; +package com.djrapitops.plan.system.database.databases.sql.tables; -import com.djrapitops.plan.api.exceptions.DBCreateTableException; -import com.djrapitops.plan.system.database.databases.SQLDB; -import com.djrapitops.plan.system.database.processing.ExecStatement; -import com.djrapitops.plan.system.database.processing.QueryAllStatement; -import com.djrapitops.plan.system.database.processing.QueryStatement; -import com.djrapitops.plan.system.database.sql.Sql; -import com.djrapitops.plan.system.database.sql.TableSqlParser; +import com.djrapitops.plan.api.exceptions.database.DBCreateTableException; +import com.djrapitops.plan.system.database.databases.sql.SQLDB; +import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement; +import com.djrapitops.plan.system.database.databases.sql.statements.Sql; +import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -17,8 +17,8 @@ import java.sql.SQLException; */ public class VersionTable extends Table { - public VersionTable(SQLDB db, boolean usingMySQL) { - super("plan_version", db, usingMySQL); + public VersionTable(SQLDB db) { + super("plan_version", db); } @Override diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/WorldTable.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/WorldTable.java similarity index 86% rename from Plan/src/main/java/com/djrapitops/plan/system/database/tables/WorldTable.java rename to Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/WorldTable.java index cc1f78a60..6ead4143c 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/WorldTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/WorldTable.java @@ -1,12 +1,13 @@ -package com.djrapitops.plan.system.database.tables; +package com.djrapitops.plan.system.database.databases.sql.tables; -import com.djrapitops.plan.api.exceptions.DBCreateTableException; -import com.djrapitops.plan.system.database.databases.SQLDB; -import com.djrapitops.plan.system.database.processing.ExecStatement; -import com.djrapitops.plan.system.database.processing.QueryAllStatement; -import com.djrapitops.plan.system.database.processing.QueryStatement; -import com.djrapitops.plan.system.database.sql.Sql; -import com.djrapitops.plan.system.database.sql.TableSqlParser; +import com.djrapitops.plan.PlanPlugin; +import com.djrapitops.plan.api.exceptions.database.DBCreateTableException; +import com.djrapitops.plan.system.database.databases.sql.SQLDB; +import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement; +import com.djrapitops.plan.system.database.databases.sql.statements.Sql; +import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser; import com.djrapitops.plugin.utilities.Verify; import java.sql.PreparedStatement; @@ -28,14 +29,8 @@ public class WorldTable extends Table { private final String columnWorldId = "id"; private final String columnWorldName = "world_name"; - /** - * Constructor. - * - * @param db Database this table is a part of. - * @param usingMySQL Database is a MySQL database. - */ - public WorldTable(SQLDB db, boolean usingMySQL) { - super("plan_worlds", db, usingMySQL); + public WorldTable(SQLDB db) { + super("plan_worlds", db); statementSelectID = "(SELECT " + columnWorldId + " FROM " + tableName + " WHERE (" + columnWorldName + "=?))"; } diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/WorldTimesTable.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/WorldTimesTable.java similarity index 95% rename from Plan/src/main/java/com/djrapitops/plan/system/database/tables/WorldTimesTable.java rename to Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/WorldTimesTable.java index 84f68dfa4..98e93cbef 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/WorldTimesTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/WorldTimesTable.java @@ -1,16 +1,16 @@ -package com.djrapitops.plan.system.database.tables; +package com.djrapitops.plan.system.database.databases.sql.tables; import com.djrapitops.plan.Plan; -import com.djrapitops.plan.api.exceptions.DBCreateTableException; +import com.djrapitops.plan.api.exceptions.database.DBCreateTableException; import com.djrapitops.plan.data.container.Session; import com.djrapitops.plan.data.time.GMTimes; import com.djrapitops.plan.data.time.WorldTimes; -import com.djrapitops.plan.system.database.databases.SQLDB; -import com.djrapitops.plan.system.database.processing.ExecStatement; -import com.djrapitops.plan.system.database.processing.QueryAllStatement; -import com.djrapitops.plan.system.database.processing.QueryStatement; -import com.djrapitops.plan.system.database.sql.Sql; -import com.djrapitops.plan.system.database.sql.TableSqlParser; +import com.djrapitops.plan.system.database.databases.sql.SQLDB; +import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement; +import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement; +import com.djrapitops.plan.system.database.databases.sql.statements.Sql; +import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser; import com.djrapitops.plugin.utilities.Verify; import java.sql.PreparedStatement; @@ -38,14 +38,8 @@ public class WorldTimesTable extends UserIDTable { private final SessionsTable sessionsTable; private String insertStatement; - /** - * Constructor. - * - * @param db Database this table is a part of. - * @param usingMySQL Database is a MySQL database. - */ - public WorldTimesTable(SQLDB db, boolean usingMySQL) { - super("plan_world_times", db, usingMySQL); + public WorldTimesTable(SQLDB db) { + super("plan_world_times", db); worldTable = db.getWorldTable(); sessionsTable = db.getSessionsTable(); insertStatement = "INSERT INTO " + tableName + " (" + diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/move/BatchOperationTable.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/move/BatchOperationTable.java similarity index 88% rename from Plan/src/main/java/com/djrapitops/plan/system/database/tables/move/BatchOperationTable.java rename to Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/move/BatchOperationTable.java index dcced5574..ac0558457 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/move/BatchOperationTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/move/BatchOperationTable.java @@ -2,14 +2,14 @@ * Licence is provided in the jar as license.yml also here: * https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml */ -package com.djrapitops.plan.system.database.tables.move; +package com.djrapitops.plan.system.database.databases.sql.tables.move; +import com.djrapitops.plan.api.exceptions.database.DBException; import com.djrapitops.plan.data.container.UserInfo; -import com.djrapitops.plan.system.database.databases.Database; -import com.djrapitops.plan.system.database.databases.SQLDB; -import com.djrapitops.plan.system.database.tables.ServerTable; -import com.djrapitops.plan.system.database.tables.Table; -import com.djrapitops.plan.system.database.tables.UsersTable; +import com.djrapitops.plan.system.database.databases.sql.SQLDB; +import com.djrapitops.plan.system.database.databases.sql.tables.ServerTable; +import com.djrapitops.plan.system.database.databases.sql.tables.Table; +import com.djrapitops.plan.system.database.databases.sql.tables.UsersTable; import com.djrapitops.plan.systems.info.server.ServerInfo; import com.djrapitops.plugin.api.utility.log.Log; @@ -45,8 +45,8 @@ public class BatchOperationTable extends Table { * @throws IllegalStateException if database.init has not been called. * @throws ClassCastException if database is not SQLDB. */ - public BatchOperationTable(Database database) { - super("", (SQLDB) database, false); + public BatchOperationTable(SQLDB database) { + super("", database); if (!db.isOpen()) { throw new IllegalStateException("Given Database had not been initialized."); } @@ -63,7 +63,15 @@ public class BatchOperationTable extends Table { @Override public void removeAllData() throws SQLException { - db.removeAllData(); + try { + db.remove().everything(); + } catch (DBException e) { + if (e.getCause() instanceof SQLException) { + throw (SQLException) e.getCause(); + } else { + Log.toLog(this.getClass(), e); + } + } } public void copyEverything(BatchOperationTable toDB) throws SQLException { diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/move/Version8TransferTable.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/move/Version8TransferTable.java similarity index 95% rename from Plan/src/main/java/com/djrapitops/plan/system/database/tables/move/Version8TransferTable.java rename to Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/move/Version8TransferTable.java index 0648fcfe9..4fd88394a 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/tables/move/Version8TransferTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/move/Version8TransferTable.java @@ -2,12 +2,12 @@ * Licence is provided in the jar as license.yml also here: * https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml */ -package com.djrapitops.plan.system.database.tables.move; +package com.djrapitops.plan.system.database.databases.sql.tables.move; import com.djrapitops.plan.Plan; -import com.djrapitops.plan.api.exceptions.DBCreateTableException; -import com.djrapitops.plan.system.database.databases.SQLDB; -import com.djrapitops.plan.system.database.tables.*; +import com.djrapitops.plan.api.exceptions.database.DBCreateTableException; +import com.djrapitops.plan.system.database.databases.sql.SQLDB; +import com.djrapitops.plan.system.database.databases.sql.tables.*; import com.djrapitops.plugin.api.Benchmark; import java.sql.SQLException; diff --git a/Plan/src/main/java/com/djrapitops/plan/system/processing/processors/importing/importers/Importer.java b/Plan/src/main/java/com/djrapitops/plan/system/processing/processors/importing/importers/Importer.java index 48e8c662e..dc1cce8f3 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/processing/processors/importing/importers/Importer.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/processing/processors/importing/importers/Importer.java @@ -104,14 +104,14 @@ public abstract class Importer { new ImportExecutorHelper() { @Override - void execute() throws SQLException { + void execute() { db.getTpsTable().insertAllTPS(ImmutableMap.of(uuid, serverImportData.getTpsData())); } }.submit(service); new ImportExecutorHelper() { @Override - void execute() throws SQLException { + void execute() { db.getCommandUseTable().insertCommandUsage(ImmutableMap.of(uuid, serverImportData.getCommandUsages())); } }.submit(service); @@ -129,7 +129,7 @@ public abstract class Importer { Benchmark.stop(benchmarkName); } - private void processUserData() throws SQLException { + private void processUserData() { String benchmarkName = "Processing User Data"; String getDataBenchmarkName = "Getting User Data"; String insertDataIntoCollectionsBenchmarkName = "Insert User Data into Collections"; @@ -154,8 +154,8 @@ public abstract class Importer { UUID serverUUID = plugin.getServerInfoManager().getServerUUID(); Database db = plugin.getDB(); - Set existingUUIDs = db.getSavedUUIDs(); - Set existingUserInfoTableUUIDs = db.getUserInfoTable().getSavedUUIDs().get(serverUUID); + Set existingUUIDs = db.fetch().getSavedUUIDs(); + Set existingUserInfoTableUUIDs = db.fetch().getSavedUUIDs(serverUUID); Benchmark.start(insertDataIntoCollectionsBenchmarkName); @@ -194,35 +194,35 @@ public abstract class Importer { new ImportExecutorHelper() { @Override - void execute() throws SQLException { + void execute() { db.getSessionsTable().insertSessions(ImmutableMap.of(serverUUID, sessions), true); } }.submit(service); new ImportExecutorHelper() { @Override - void execute() throws SQLException { + void execute() { db.getUsersTable().updateKicked(timesKicked); } }.submit(service); new ImportExecutorHelper() { @Override - void execute() throws SQLException { + void execute() { db.getUserInfoTable().insertUserInfo(ImmutableMap.of(serverUUID, userInfo)); } }.submit(service); new ImportExecutorHelper() { @Override - void execute() throws SQLException { + void execute() { db.getNicknamesTable().insertNicknames(ImmutableMap.of(serverUUID, nickNames)); } }.submit(service); new ImportExecutorHelper() { @Override - void execute() throws SQLException { + void execute() { db.getIpsTable().insertAllGeoInfo(geoInfo); } }.submit(service); diff --git a/Plan/src/main/java/com/djrapitops/plan/system/processing/processors/player/BungeePlayerRegisterProcessor.java b/Plan/src/main/java/com/djrapitops/plan/system/processing/processors/player/BungeePlayerRegisterProcessor.java index 4dbcad600..bf33ec617 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/processing/processors/player/BungeePlayerRegisterProcessor.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/processing/processors/player/BungeePlayerRegisterProcessor.java @@ -5,7 +5,7 @@ package com.djrapitops.plan.system.processing.processors.player; import com.djrapitops.plan.PlanBungee; -import com.djrapitops.plan.system.database.tables.UsersTable; +import com.djrapitops.plan.system.database.databases.sql.tables.UsersTable; import com.djrapitops.plugin.api.utility.log.Log; import java.sql.SQLException; diff --git a/Plan/src/main/java/com/djrapitops/plan/system/processing/processors/player/NameProcessor.java b/Plan/src/main/java/com/djrapitops/plan/system/processing/processors/player/NameProcessor.java index 0a74b71e0..307f598ac 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/processing/processors/player/NameProcessor.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/processing/processors/player/NameProcessor.java @@ -6,7 +6,7 @@ package com.djrapitops.plan.system.processing.processors.player; import com.djrapitops.plan.Plan; import com.djrapitops.plan.system.database.databases.Database; -import com.djrapitops.plan.system.database.tables.NicknamesTable; +import com.djrapitops.plan.system.database.databases.sql.tables.NicknamesTable; import com.djrapitops.plan.system.processing.processors.NewNickActionProcessor; import com.djrapitops.plan.systems.cache.DataCache; import com.djrapitops.plugin.api.utility.log.Log; diff --git a/Plan/src/main/java/com/djrapitops/plan/system/processing/processors/player/RegisterProcessor.java b/Plan/src/main/java/com/djrapitops/plan/system/processing/processors/player/RegisterProcessor.java index b4ddc83c0..8918e43e7 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/processing/processors/player/RegisterProcessor.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/processing/processors/player/RegisterProcessor.java @@ -8,8 +8,8 @@ import com.djrapitops.plan.Plan; import com.djrapitops.plan.data.Actions; import com.djrapitops.plan.data.container.Action; import com.djrapitops.plan.system.database.databases.Database; -import com.djrapitops.plan.system.database.tables.UserInfoTable; -import com.djrapitops.plan.system.database.tables.UsersTable; +import com.djrapitops.plan.system.database.databases.sql.tables.UserInfoTable; +import com.djrapitops.plan.system.database.databases.sql.tables.UsersTable; import com.djrapitops.plan.system.processing.processors.Processor; import com.djrapitops.plugin.api.utility.log.Log; diff --git a/Plan/src/main/java/com/djrapitops/plan/system/webserver/pages/PlayerPageHandler.java b/Plan/src/main/java/com/djrapitops/plan/system/webserver/pages/PlayerPageHandler.java index 3b3bb0bbd..3fd888cc6 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/webserver/pages/PlayerPageHandler.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/webserver/pages/PlayerPageHandler.java @@ -6,6 +6,7 @@ package com.djrapitops.plan.system.webserver.pages; import com.djrapitops.plan.PlanPlugin; import com.djrapitops.plan.api.exceptions.ParseException; +import com.djrapitops.plan.system.database.databases.Database; import com.djrapitops.plan.system.webserver.Request; import com.djrapitops.plan.system.webserver.pagecache.PageId; import com.djrapitops.plan.system.webserver.pagecache.ResponseCache; @@ -42,7 +43,7 @@ public class PlayerPageHandler extends PageHandler { return notFound("Player has no UUID"); } - if (PlanPlugin.getInstance().getDB().wasSeenBefore(uuid)) { + if (Database.getActive().check().isPlayerRegistered(uuid)) { PlanPlugin.getInstance().getInfoManager().cachePlayer(uuid); Response response = ResponseCache.loadResponse(PageId.PLAYER.of(uuid)); // TODO Create a new method that places NotFoundResponse to ResponseCache instead. diff --git a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/WebAPI.java b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/WebAPI.java index d288baaab..ed33ead3a 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/WebAPI.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/WebAPI.java @@ -5,7 +5,7 @@ package com.djrapitops.plan.system.webserver.webapi; import com.djrapitops.plan.PlanPlugin; -import com.djrapitops.plan.api.exceptions.*; +import com.djrapitops.plan.api.exceptions.webapi.*; import com.djrapitops.plan.system.settings.Settings; import com.djrapitops.plan.system.webserver.pagecache.PageId; import com.djrapitops.plan.system.webserver.pagecache.ResponseCache; diff --git a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bukkit/AnalysisReadyWebAPI.java b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bukkit/AnalysisReadyWebAPI.java index 1f08ce47d..6dfd6c16d 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bukkit/AnalysisReadyWebAPI.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bukkit/AnalysisReadyWebAPI.java @@ -5,7 +5,7 @@ package com.djrapitops.plan.system.webserver.webapi.bukkit; import com.djrapitops.plan.PlanPlugin; -import com.djrapitops.plan.api.exceptions.WebAPIException; +import com.djrapitops.plan.api.exceptions.webapi.WebAPIException; import com.djrapitops.plan.system.webserver.response.Response; import com.djrapitops.plan.system.webserver.webapi.WebAPI; diff --git a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bukkit/AnalyzeWebAPI.java b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bukkit/AnalyzeWebAPI.java index 6bc3714ea..7a4699a43 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bukkit/AnalyzeWebAPI.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bukkit/AnalyzeWebAPI.java @@ -5,7 +5,7 @@ package com.djrapitops.plan.system.webserver.webapi.bukkit; import com.djrapitops.plan.PlanPlugin; -import com.djrapitops.plan.api.exceptions.WebAPIException; +import com.djrapitops.plan.api.exceptions.webapi.WebAPIException; import com.djrapitops.plan.system.webserver.response.Response; import com.djrapitops.plan.system.webserver.webapi.WebAPI; diff --git a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bukkit/ConfigurationWebAPI.java b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bukkit/ConfigurationWebAPI.java index f4a92b0f5..16f92b044 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bukkit/ConfigurationWebAPI.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bukkit/ConfigurationWebAPI.java @@ -7,7 +7,7 @@ package com.djrapitops.plan.system.webserver.webapi.bukkit; import com.djrapitops.plan.Plan; import com.djrapitops.plan.PlanBungee; import com.djrapitops.plan.PlanPlugin; -import com.djrapitops.plan.api.exceptions.WebAPIException; +import com.djrapitops.plan.api.exceptions.webapi.WebAPIException; import com.djrapitops.plan.settings.ServerSpecificSettings; import com.djrapitops.plan.system.settings.Settings; import com.djrapitops.plan.system.webserver.response.Response; diff --git a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bukkit/InspectWebAPI.java b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bukkit/InspectWebAPI.java index b0c8446e7..bd03e9f98 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bukkit/InspectWebAPI.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bukkit/InspectWebAPI.java @@ -5,7 +5,7 @@ package com.djrapitops.plan.system.webserver.webapi.bukkit; import com.djrapitops.plan.PlanPlugin; -import com.djrapitops.plan.api.exceptions.WebAPIException; +import com.djrapitops.plan.api.exceptions.webapi.WebAPIException; import com.djrapitops.plan.system.webserver.response.Response; import com.djrapitops.plan.system.webserver.webapi.WebAPI; diff --git a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bukkit/IsOnlineWebAPI.java b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bukkit/IsOnlineWebAPI.java index 66df8b759..b60573e93 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bukkit/IsOnlineWebAPI.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bukkit/IsOnlineWebAPI.java @@ -6,7 +6,7 @@ package com.djrapitops.plan.system.webserver.webapi.bukkit; import com.djrapitops.plan.Plan; import com.djrapitops.plan.PlanPlugin; -import com.djrapitops.plan.api.exceptions.WebAPIException; +import com.djrapitops.plan.api.exceptions.webapi.WebAPIException; import com.djrapitops.plan.system.webserver.response.Response; import com.djrapitops.plan.system.webserver.webapi.WebAPI; import org.bukkit.entity.Player; diff --git a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bukkit/RequestInspectPluginsTabBukkitWebAPI.java b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bukkit/RequestInspectPluginsTabBukkitWebAPI.java index 00dc96adc..033b2bb42 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bukkit/RequestInspectPluginsTabBukkitWebAPI.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bukkit/RequestInspectPluginsTabBukkitWebAPI.java @@ -5,7 +5,7 @@ package com.djrapitops.plan.system.webserver.webapi.bukkit; import com.djrapitops.plan.PlanPlugin; -import com.djrapitops.plan.api.exceptions.WebAPIException; +import com.djrapitops.plan.api.exceptions.webapi.WebAPIException; import com.djrapitops.plan.system.webserver.response.Response; import com.djrapitops.plan.system.webserver.webapi.WebAPI; import com.djrapitops.plan.systems.info.BukkitInformationManager; diff --git a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bungee/IsCachedWebAPI.java b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bungee/IsCachedWebAPI.java index b75618725..619fdb8d4 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bungee/IsCachedWebAPI.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bungee/IsCachedWebAPI.java @@ -5,8 +5,8 @@ package com.djrapitops.plan.system.webserver.webapi.bungee; import com.djrapitops.plan.PlanPlugin; -import com.djrapitops.plan.api.exceptions.WebAPIException; -import com.djrapitops.plan.api.exceptions.WebAPINotFoundException; +import com.djrapitops.plan.api.exceptions.webapi.WebAPIException; +import com.djrapitops.plan.api.exceptions.webapi.WebAPINotFoundException; import com.djrapitops.plan.system.webserver.response.Response; import com.djrapitops.plan.system.webserver.webapi.WebAPI; import com.djrapitops.plan.systems.info.InformationManager; diff --git a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bungee/PostHtmlWebAPI.java b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bungee/PostHtmlWebAPI.java index 09ec52f36..c88d7ce29 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bungee/PostHtmlWebAPI.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bungee/PostHtmlWebAPI.java @@ -5,7 +5,7 @@ package com.djrapitops.plan.system.webserver.webapi.bungee; import com.djrapitops.plan.PlanPlugin; -import com.djrapitops.plan.api.exceptions.WebAPIException; +import com.djrapitops.plan.api.exceptions.webapi.WebAPIException; import com.djrapitops.plan.system.settings.Settings; import com.djrapitops.plan.system.webserver.pagecache.PageId; import com.djrapitops.plan.system.webserver.pagecache.ResponseCache; diff --git a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bungee/PostInspectPluginsTabWebAPI.java b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bungee/PostInspectPluginsTabWebAPI.java index c28a4b004..718970447 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bungee/PostInspectPluginsTabWebAPI.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bungee/PostInspectPluginsTabWebAPI.java @@ -5,7 +5,7 @@ package com.djrapitops.plan.system.webserver.webapi.bungee; import com.djrapitops.plan.PlanPlugin; -import com.djrapitops.plan.api.exceptions.WebAPIException; +import com.djrapitops.plan.api.exceptions.webapi.WebAPIException; import com.djrapitops.plan.system.webserver.response.Response; import com.djrapitops.plan.system.webserver.webapi.WebAPI; import com.djrapitops.plan.systems.info.BungeeInformationManager; diff --git a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bungee/PostNetworkPageContentWebAPI.java b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bungee/PostNetworkPageContentWebAPI.java index 45517b607..fe727442f 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bungee/PostNetworkPageContentWebAPI.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bungee/PostNetworkPageContentWebAPI.java @@ -6,7 +6,7 @@ package com.djrapitops.plan.system.webserver.webapi.bungee; import com.djrapitops.plan.PlanPlugin; -import com.djrapitops.plan.api.exceptions.WebAPIException; +import com.djrapitops.plan.api.exceptions.webapi.WebAPIException; import com.djrapitops.plan.system.webserver.response.Response; import com.djrapitops.plan.system.webserver.webapi.WebAPI; import com.djrapitops.plan.systems.info.BungeeInformationManager; diff --git a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bungee/PostOriginalBukkitSettingsWebAPI.java b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bungee/PostOriginalBukkitSettingsWebAPI.java index 3ea736164..0e4634727 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bungee/PostOriginalBukkitSettingsWebAPI.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bungee/PostOriginalBukkitSettingsWebAPI.java @@ -7,7 +7,7 @@ package com.djrapitops.plan.system.webserver.webapi.bungee; import com.djrapitops.plan.PlanBungee; import com.djrapitops.plan.PlanPlugin; -import com.djrapitops.plan.api.exceptions.WebAPIException; +import com.djrapitops.plan.api.exceptions.webapi.WebAPIException; import com.djrapitops.plan.system.settings.Settings; import com.djrapitops.plan.system.webserver.response.Response; import com.djrapitops.plan.system.webserver.webapi.WebAPI; diff --git a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bungee/RequestPluginsTabWebAPI.java b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bungee/RequestPluginsTabWebAPI.java index f03d86e6c..4ea46a7db 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bungee/RequestPluginsTabWebAPI.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bungee/RequestPluginsTabWebAPI.java @@ -6,7 +6,7 @@ package com.djrapitops.plan.system.webserver.webapi.bungee; import com.djrapitops.plan.PlanPlugin; -import com.djrapitops.plan.api.exceptions.WebAPIException; +import com.djrapitops.plan.api.exceptions.webapi.WebAPIException; import com.djrapitops.plan.system.processing.processors.Processor; import com.djrapitops.plan.system.webserver.response.Response; import com.djrapitops.plan.system.webserver.webapi.WebAPI; diff --git a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bungee/RequestSetupWebAPI.java b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bungee/RequestSetupWebAPI.java index f59a7f37d..61d9fb1c5 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bungee/RequestSetupWebAPI.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/bungee/RequestSetupWebAPI.java @@ -8,7 +8,7 @@ package com.djrapitops.plan.system.webserver.webapi.bungee; import com.djrapitops.plan.Plan; import com.djrapitops.plan.PlanBungee; import com.djrapitops.plan.PlanPlugin; -import com.djrapitops.plan.api.exceptions.WebAPIException; +import com.djrapitops.plan.api.exceptions.webapi.WebAPIException; import com.djrapitops.plan.system.webserver.response.Response; import com.djrapitops.plan.system.webserver.response.errors.ForbiddenResponse; import com.djrapitops.plan.system.webserver.webapi.WebAPI; diff --git a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/universal/PingWebAPI.java b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/universal/PingWebAPI.java index 51890fa51..f613d8eb4 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/universal/PingWebAPI.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/webserver/webapi/universal/PingWebAPI.java @@ -8,7 +8,7 @@ package com.djrapitops.plan.system.webserver.webapi.universal; import com.djrapitops.plan.Plan; import com.djrapitops.plan.PlanBungee; import com.djrapitops.plan.PlanPlugin; -import com.djrapitops.plan.api.exceptions.WebAPIException; +import com.djrapitops.plan.api.exceptions.webapi.WebAPIException; import com.djrapitops.plan.system.webserver.response.Response; import com.djrapitops.plan.system.webserver.webapi.WebAPI; import com.djrapitops.plan.systems.info.BukkitInformationManager; diff --git a/Plan/src/main/java/com/djrapitops/plan/systems/info/BukkitInformationManager.java b/Plan/src/main/java/com/djrapitops/plan/systems/info/BukkitInformationManager.java index 525bf7608..c0e24f40f 100644 --- a/Plan/src/main/java/com/djrapitops/plan/systems/info/BukkitInformationManager.java +++ b/Plan/src/main/java/com/djrapitops/plan/systems/info/BukkitInformationManager.java @@ -5,7 +5,11 @@ package com.djrapitops.plan.systems.info; import com.djrapitops.plan.Plan; -import com.djrapitops.plan.api.exceptions.*; +import com.djrapitops.plan.api.exceptions.ParseException; +import com.djrapitops.plan.api.exceptions.webapi.WebAPIConnectionFailException; +import com.djrapitops.plan.api.exceptions.webapi.WebAPIException; +import com.djrapitops.plan.api.exceptions.webapi.WebAPIFailException; +import com.djrapitops.plan.api.exceptions.webapi.WebAPINotFoundException; import com.djrapitops.plan.command.commands.AnalyzeCommand; import com.djrapitops.plan.data.AnalysisData; import com.djrapitops.plan.data.element.InspectContainer; diff --git a/Plan/src/main/java/com/djrapitops/plan/systems/info/BungeeInformationManager.java b/Plan/src/main/java/com/djrapitops/plan/systems/info/BungeeInformationManager.java index 3fa12400f..e803f2613 100644 --- a/Plan/src/main/java/com/djrapitops/plan/systems/info/BungeeInformationManager.java +++ b/Plan/src/main/java/com/djrapitops/plan/systems/info/BungeeInformationManager.java @@ -7,9 +7,9 @@ package com.djrapitops.plan.systems.info; import com.djrapitops.plan.PlanBungee; import com.djrapitops.plan.PlanPlugin; import com.djrapitops.plan.api.exceptions.ParseException; -import com.djrapitops.plan.api.exceptions.WebAPIConnectionFailException; -import com.djrapitops.plan.api.exceptions.WebAPIException; -import com.djrapitops.plan.api.exceptions.WebAPINotFoundException; +import com.djrapitops.plan.api.exceptions.webapi.WebAPIConnectionFailException; +import com.djrapitops.plan.api.exceptions.webapi.WebAPIException; +import com.djrapitops.plan.api.exceptions.webapi.WebAPINotFoundException; import com.djrapitops.plan.system.settings.Settings; import com.djrapitops.plan.system.webserver.pagecache.PageId; import com.djrapitops.plan.system.webserver.pagecache.ResponseCache; @@ -68,7 +68,7 @@ public class BungeeInformationManager extends InformationManager { * * @throws SQLException If DB Error occurs. */ - private void refreshBukkitServerMap() throws SQLException { + private void refreshBukkitServerMap() { bukkitServers = plugin.getDB().getServerTable().getBukkitServers().stream().collect(Collectors.toMap(ServerInfo::getUuid, Function.identity())); } diff --git a/Plan/src/main/java/com/djrapitops/plan/systems/info/parsing/InspectPageParser.java b/Plan/src/main/java/com/djrapitops/plan/systems/info/parsing/InspectPageParser.java index 81fcc6bca..6cf6ab70f 100644 --- a/Plan/src/main/java/com/djrapitops/plan/systems/info/parsing/InspectPageParser.java +++ b/Plan/src/main/java/com/djrapitops/plan/systems/info/parsing/InspectPageParser.java @@ -61,13 +61,13 @@ public class InspectPageParser extends PageParser { } Log.logDebug("Database", "Inspect Parse Fetch"); Benchmark.start("Inspect Parse, Fetch"); - Database db = plugin.getDB(); - PlayerProfile profile = db.getPlayerProfile(uuid); + Database db = Database.getActive(); + PlayerProfile profile = db.fetch().getPlayerProfile(uuid); if (profile == null) { throw new IllegalStateException("Player profile was null!"); } UUID serverUUID = PlanPlugin.getInstance().getServerUuid(); - Map serverNames = db.getServerTable().getServerNames(); + Map serverNames = db.fetch().getServerNames(); Benchmark.stop("Inspect Parse, Fetch"); diff --git a/Plan/src/main/java/com/djrapitops/plan/systems/info/server/BukkitServerInfoManager.java b/Plan/src/main/java/com/djrapitops/plan/systems/info/server/BukkitServerInfoManager.java index 3da833a58..fa8b6ad5e 100644 --- a/Plan/src/main/java/com/djrapitops/plan/systems/info/server/BukkitServerInfoManager.java +++ b/Plan/src/main/java/com/djrapitops/plan/systems/info/server/BukkitServerInfoManager.java @@ -9,7 +9,7 @@ import com.djrapitops.plan.Plan; import com.djrapitops.plan.ServerVariableHolder; import com.djrapitops.plan.api.exceptions.EnableException; import com.djrapitops.plan.system.database.databases.Database; -import com.djrapitops.plan.system.database.tables.ServerTable; +import com.djrapitops.plan.system.database.databases.sql.tables.ServerTable; import com.djrapitops.plan.system.settings.Settings; import com.djrapitops.plugin.api.utility.log.Log; diff --git a/Plan/src/main/java/com/djrapitops/plan/systems/info/server/BungeeServerInfoManager.java b/Plan/src/main/java/com/djrapitops/plan/systems/info/server/BungeeServerInfoManager.java index 90652893c..c0ad885dd 100644 --- a/Plan/src/main/java/com/djrapitops/plan/systems/info/server/BungeeServerInfoManager.java +++ b/Plan/src/main/java/com/djrapitops/plan/systems/info/server/BungeeServerInfoManager.java @@ -7,9 +7,9 @@ package com.djrapitops.plan.systems.info.server; import com.djrapitops.plan.PlanBungee; import com.djrapitops.plan.ServerVariableHolder; import com.djrapitops.plan.api.exceptions.EnableException; -import com.djrapitops.plan.api.exceptions.WebAPIException; +import com.djrapitops.plan.api.exceptions.webapi.WebAPIException; import com.djrapitops.plan.system.database.databases.Database; -import com.djrapitops.plan.system.database.tables.ServerTable; +import com.djrapitops.plan.system.database.databases.sql.tables.ServerTable; import com.djrapitops.plan.system.webserver.webapi.bukkit.ConfigurationWebAPI; import com.djrapitops.plan.system.webserver.webapi.universal.PingWebAPI; import com.djrapitops.plugin.api.TimeAmount; diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/ManageUtils.java b/Plan/src/main/java/com/djrapitops/plan/utilities/ManageUtils.java index 58506eb42..0e773927b 100644 --- a/Plan/src/main/java/com/djrapitops/plan/utilities/ManageUtils.java +++ b/Plan/src/main/java/com/djrapitops/plan/utilities/ManageUtils.java @@ -1,11 +1,13 @@ package com.djrapitops.plan.utilities; import com.djrapitops.plan.Plan; -import com.djrapitops.plan.api.exceptions.DatabaseInitException; +import com.djrapitops.plan.api.exceptions.database.DBException; +import com.djrapitops.plan.api.exceptions.database.DBInitException; import com.djrapitops.plan.system.database.DBSystem; import com.djrapitops.plan.system.database.databases.Database; -import com.djrapitops.plan.system.database.databases.SQLiteDB; -import com.djrapitops.plan.system.database.tables.move.BatchOperationTable; +import com.djrapitops.plan.system.database.databases.sql.SQLDB; +import com.djrapitops.plan.system.database.databases.sql.SQLiteDB; +import com.djrapitops.plan.system.database.databases.sql.tables.move.BatchOperationTable; import com.djrapitops.plugin.api.utility.log.Log; import java.sql.SQLException; @@ -29,7 +31,7 @@ public class ManageUtils { * @param dbName Name of database (mysql/sqlite) * @param copyFromDB Database you want to backup. */ - public static void backup(String dbName, Database copyFromDB) throws DatabaseInitException, SQLException { + public static void backup(String dbName, Database copyFromDB) throws DBInitException, SQLException { Plan plugin = Plan.getInstance(); String timeStamp = new Date().toString().substring(4, 10).replace(" ", "-"); String fileName = dbName + "-backup-" + timeStamp; @@ -52,9 +54,9 @@ public class ManageUtils { public static Collection getUUIDS(Database db) { final Set uuids = new HashSet<>(); try { - uuids.addAll(db.getSavedUUIDs()); - } catch (SQLException e) { - Log.toLog("ManageUtils.getUUIDS", e); + uuids.addAll(db.fetch().getSavedUUIDs()); + } catch (DBException e) { + Log.toLog(ManageUtils.class, e); } return uuids; } @@ -67,15 +69,15 @@ public class ManageUtils { * @param copyFromDB Database where data will be copied from */ public static void clearAndCopy(Database clearAndCopyToDB, Database copyFromDB) throws SQLException { - BatchOperationTable toDB = new BatchOperationTable(clearAndCopyToDB); - BatchOperationTable fromDB = new BatchOperationTable(copyFromDB); + BatchOperationTable toDB = new BatchOperationTable((SQLDB) clearAndCopyToDB); + BatchOperationTable fromDB = new BatchOperationTable((SQLDB) copyFromDB); toDB.removeAllData(); fromDB.copyEverything(toDB); } @Deprecated - public static Database getDB(String dbName) throws DatabaseInitException { - return DBSystem.getActiveDatabase(dbName); + public static Database getDB(String dbName) throws DBInitException { + return DBSystem.getInstance().getActiveDatabase(dbName); } } diff --git a/Plan/test/main/java/com/djrapitops/plan/system/database/DatabaseTest.java b/Plan/test/main/java/com/djrapitops/plan/system/database/DatabaseTest.java index 6e24bc68a..f7c0848da 100644 --- a/Plan/test/main/java/com/djrapitops/plan/system/database/DatabaseTest.java +++ b/Plan/test/main/java/com/djrapitops/plan/system/database/DatabaseTest.java @@ -6,17 +6,18 @@ package com.djrapitops.plan.system.database; import com.djrapitops.plan.Plan; -import com.djrapitops.plan.api.exceptions.DatabaseInitException; +import com.djrapitops.plan.api.exceptions.database.DBException; +import com.djrapitops.plan.api.exceptions.database.DBInitException; import com.djrapitops.plan.data.Actions; import com.djrapitops.plan.data.WebUser; import com.djrapitops.plan.data.container.*; import com.djrapitops.plan.data.time.GMTimes; import com.djrapitops.plan.data.time.WorldTimes; import com.djrapitops.plan.system.database.databases.Database; -import com.djrapitops.plan.system.database.databases.MySQLDB; -import com.djrapitops.plan.system.database.databases.SQLDB; -import com.djrapitops.plan.system.database.databases.SQLiteDB; -import com.djrapitops.plan.system.database.tables.*; +import com.djrapitops.plan.system.database.databases.sql.MySQLDB; +import com.djrapitops.plan.system.database.databases.sql.SQLDB; +import com.djrapitops.plan.system.database.databases.sql.SQLiteDB; +import com.djrapitops.plan.system.database.databases.sql.tables.*; import com.djrapitops.plan.system.processing.processors.player.RegisterProcessor; import com.djrapitops.plan.systems.cache.DataCache; import com.djrapitops.plan.systems.info.server.ServerInfo; @@ -89,7 +90,7 @@ public class DatabaseTest { } @After - public void tearDown() throws IOException, SQLException { + public void tearDown() throws IOException { db.close(); if (backup != null) { backup.close(); @@ -109,7 +110,7 @@ public class DatabaseTest { } @Test - public void testInit() throws DatabaseInitException { + public void testInit() throws DBInitException { db.init(); } @@ -143,7 +144,7 @@ public class DatabaseTest { } @Test(timeout = 3000) - public void testSaveCommandUse() throws SQLException, DatabaseInitException { + public void testSaveCommandUse() throws SQLException, DBInitException { CommandUseTable commandUseTable = db.getCommandUseTable(); Map expected = new HashMap<>(); @@ -247,7 +248,7 @@ public class DatabaseTest { saveUserOne(db); } - private void saveUserOne(Database database) throws SQLException { + private void saveUserOne(Database database) { database.getUsersTable().registerUser(uuid, 123456789L, "Test"); } @@ -255,7 +256,7 @@ public class DatabaseTest { saveUserTwo(db); } - private void saveUserTwo(Database database) throws SQLException { + private void saveUserTwo(Database database) { database.getUsersTable().registerUser(uuid2, 123456789L, "Test"); } @@ -274,7 +275,7 @@ public class DatabaseTest { } @Test - public void testIPTable() throws SQLException, DatabaseInitException { + public void testIPTable() throws SQLException, DBInitException { saveUserOne(); IPsTable ipsTable = db.getIpsTable(); @@ -300,7 +301,7 @@ public class DatabaseTest { } @Test - public void testNicknamesTable() throws SQLException, DatabaseInitException { + public void testNicknamesTable() throws SQLException, DBInitException { saveUserOne(); NicknamesTable nickTable = db.getNicknamesTable(); @@ -318,7 +319,7 @@ public class DatabaseTest { } @Test - public void testSecurityTable() throws SQLException, DatabaseInitException { + public void testSecurityTable() throws SQLException, DBInitException { SecurityTable securityTable = db.getSecurityTable(); WebUser expected = new WebUser("Test", "RandomGarbageBlah", 0); securityTable.addNewUser(expected); @@ -341,7 +342,7 @@ public class DatabaseTest { } @Test - public void testWorldTable() throws SQLException, DatabaseInitException { + public void testWorldTable() throws SQLException, DBInitException { WorldTable worldTable = db.getWorldTable(); List worlds = Arrays.asList("Test", "Test2", "Test3"); worldTable.saveWorlds(worlds); @@ -356,7 +357,7 @@ public class DatabaseTest { saveTwoWorlds(db); } - private void saveTwoWorlds(Database database) throws SQLException { + private void saveTwoWorlds(Database database) { database.getWorldTable().saveWorlds(worlds); } @@ -381,7 +382,7 @@ public class DatabaseTest { } @Test - public void testSessionPlaytimeSaving() throws SQLException, DatabaseInitException { + public void testSessionPlaytimeSaving() throws SQLException, DBInitException { saveTwoWorlds(); saveUserOne(); saveUserTwo(); @@ -411,7 +412,7 @@ public class DatabaseTest { } @Test - public void testSessionSaving() throws SQLException, DatabaseInitException { + public void testSessionSaving() throws SQLException, DBInitException { saveUserOne(); saveUserTwo(); @@ -452,7 +453,7 @@ public class DatabaseTest { } @Test - public void testUserInfoTableRegisterUnRegistered() throws SQLException, DatabaseInitException { + public void testUserInfoTableRegisterUnRegistered() throws SQLException, DBInitException { UserInfoTable userInfoTable = db.getUserInfoTable(); assertFalse(userInfoTable.isRegistered(uuid)); UsersTable usersTable = db.getUsersTable(); @@ -476,7 +477,7 @@ public class DatabaseTest { } @Test - public void testUserInfoTableRegisterRegistered() throws SQLException, DatabaseInitException { + public void testUserInfoTableRegisterRegistered() throws SQLException, DBInitException { saveUserOne(); UsersTable usersTable = db.getUsersTable(); assertTrue(usersTable.isRegistered(uuid)); @@ -502,7 +503,7 @@ public class DatabaseTest { } @Test - public void testUserInfoTableUpdateBannedOpped() throws SQLException, DatabaseInitException { + public void testUserInfoTableUpdateBannedOpped() throws SQLException, DBInitException { UserInfoTable userInfoTable = db.getUserInfoTable(); userInfoTable.registerUserInfo(uuid, 223456789L); assertTrue(userInfoTable.isRegistered(uuid)); @@ -532,7 +533,7 @@ public class DatabaseTest { } @Test - public void testUsersTableUpdateName() throws SQLException, DatabaseInitException { + public void testUsersTableUpdateName() throws SQLException, DBInitException { saveUserOne(); UsersTable usersTable = db.getUsersTable(); @@ -549,7 +550,7 @@ public class DatabaseTest { } @Test - public void testUsersTableKickSaving() throws SQLException, DatabaseInitException { + public void testUsersTableKickSaving() throws SQLException, DBInitException { saveUserOne(); UsersTable usersTable = db.getUsersTable(); assertEquals(0, usersTable.getTimesKicked(uuid)); @@ -564,7 +565,7 @@ public class DatabaseTest { } @Test - public void testRemovalSingleUser() throws SQLException { + public void testRemovalSingleUser() throws SQLException, DBException { saveUserTwo(); UserInfoTable userInfoTable = db.getUserInfoTable(); @@ -589,7 +590,7 @@ public class DatabaseTest { assertTrue(usersTable.isRegistered(uuid)); - db.removeAccount(uuid); + db.remove().player(uuid); assertFalse(usersTable.isRegistered(uuid)); assertFalse(userInfoTable.isRegistered(uuid)); @@ -600,7 +601,7 @@ public class DatabaseTest { } @Test - public void testRemovalEverything() throws SQLException { + public void testRemovalEverything() throws SQLException, DBException { UserInfoTable userInfoTable = db.getUserInfoTable(); UsersTable usersTable = db.getUsersTable(); SessionsTable sessionsTable = db.getSessionsTable(); @@ -612,7 +613,7 @@ public class DatabaseTest { saveAllData(db); - db.removeAllData(); + db.remove().everything(); assertFalse(usersTable.isRegistered(uuid)); assertFalse(usersTable.isRegistered(uuid2)); @@ -687,7 +688,7 @@ public class DatabaseTest { } @Test - public void testServerTableBungeeSave() throws SQLException, DatabaseInitException { + public void testServerTableBungeeSave() throws SQLException, DBInitException { ServerTable serverTable = db.getServerTable(); Optional bungeeInfo = serverTable.getBungeeInfo(); @@ -711,7 +712,7 @@ public class DatabaseTest { } @Test - public void testServerTableBungee() throws SQLException, DatabaseInitException { + public void testServerTableBungee() throws SQLException, DBInitException { testServerTableBungeeSave(); ServerTable serverTable = db.getServerTable(); @@ -720,18 +721,18 @@ public class DatabaseTest { } @Test - public void testSessionTableNPEWhenNoPlayers() throws SQLException { + public void testSessionTableNPEWhenNoPlayers() { Map lastSeen = db.getSessionsTable().getLastSeenForAllPlayers(); assertTrue(lastSeen.isEmpty()); } - private void commitTest() throws DatabaseInitException, SQLException { + private void commitTest() throws DBInitException { db.close(); db.init(); } @Test - public void testSessionTableGetInfoOfServer() throws SQLException, DatabaseInitException { + public void testSessionTableGetInfoOfServer() throws SQLException, DBInitException { saveUserOne(); saveUserTwo(); @@ -758,7 +759,7 @@ public class DatabaseTest { } @Test - public void testKillTableGetKillsOfServer() throws SQLException, DatabaseInitException { + public void testKillTableGetKillsOfServer() throws SQLException, DBInitException { saveUserOne(); saveUserTwo(); @@ -777,7 +778,7 @@ public class DatabaseTest { } @Test - public void testBackupAndRestore() throws SQLException, DatabaseInitException { + public void testBackupAndRestore() throws SQLException, DBInitException { SQLiteDB backup = new SQLiteDB("debug-backup" + MiscUtils.getTime()); backup.init(); @@ -872,7 +873,7 @@ public class DatabaseTest { } @Test - public void testRegisterProcessorRegisterException() throws SQLException { + public void testRegisterProcessorRegisterException() { assertFalse(db.getUsersTable().isRegistered(uuid)); assertFalse(db.getUserInfoTable().isRegistered(uuid)); for (int i = 0; i < 200; i++) { @@ -883,7 +884,7 @@ public class DatabaseTest { } @Test - public void testWorldTableGetWorldNamesNoException() throws SQLException { + public void testWorldTableGetWorldNamesNoException() { Set worldNames = db.getWorldTable().getWorldNames(); } } diff --git a/Plan/test/main/java/com/djrapitops/plan/system/database/tables/ActionsTest.java b/Plan/test/main/java/com/djrapitops/plan/system/database/databases/sql/tables/ActionsTest.java similarity index 82% rename from Plan/test/main/java/com/djrapitops/plan/system/database/tables/ActionsTest.java rename to Plan/test/main/java/com/djrapitops/plan/system/database/databases/sql/tables/ActionsTest.java index eed5686fa..52596db01 100644 --- a/Plan/test/main/java/com/djrapitops/plan/system/database/tables/ActionsTest.java +++ b/Plan/test/main/java/com/djrapitops/plan/system/database/databases/sql/tables/ActionsTest.java @@ -1,4 +1,4 @@ -package com.djrapitops.plan.system.database.tables; +package com.djrapitops.plan.system.database.databases.sql.tables; import com.djrapitops.plan.data.Actions; import org.junit.Test; diff --git a/Plan/test/main/java/com/djrapitops/plan/utilities/MiscUtilsTest.java b/Plan/test/main/java/com/djrapitops/plan/utilities/MiscUtilsTest.java index 304a76cba..7f565b942 100644 --- a/Plan/test/main/java/com/djrapitops/plan/utilities/MiscUtilsTest.java +++ b/Plan/test/main/java/com/djrapitops/plan/utilities/MiscUtilsTest.java @@ -6,9 +6,9 @@ package com.djrapitops.plan.utilities; import com.djrapitops.plan.Plan; -import com.djrapitops.plan.system.database.databases.SQLDB; -import com.djrapitops.plan.system.database.databases.SQLiteDB; -import com.djrapitops.plan.system.database.tables.UsersTable; +import com.djrapitops.plan.system.database.databases.sql.SQLDB; +import com.djrapitops.plan.system.database.databases.sql.SQLiteDB; +import com.djrapitops.plan.system.database.databases.sql.tables.UsersTable; import com.djrapitops.plan.systems.info.server.ServerInfo; import com.djrapitops.plugin.StaticHolder; import com.djrapitops.plugin.command.ISender;