Progress on database refactoring

This commit is contained in:
Rsl1122 2018-01-14 15:33:00 +02:00
parent 8cfaf54cb0
commit 65b45ce92c
101 changed files with 1223 additions and 717 deletions

View File

@ -4,12 +4,12 @@
*/ */
package com.djrapitops.plan; 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.Actions;
import com.djrapitops.plan.data.container.Action; import com.djrapitops.plan.data.container.Action;
import com.djrapitops.plan.data.container.Session; import com.djrapitops.plan.data.container.Session;
import com.djrapitops.plan.system.database.databases.SQLDB; import com.djrapitops.plan.system.database.databases.sql.SQLDB;
import com.djrapitops.plan.system.database.tables.SessionsTable; import com.djrapitops.plan.system.database.databases.sql.tables.SessionsTable;
import com.djrapitops.plan.systems.cache.DataCache; import com.djrapitops.plan.systems.cache.DataCache;
import com.djrapitops.plan.systems.cache.SessionCache; import com.djrapitops.plan.systems.cache.SessionCache;
import com.djrapitops.plan.utilities.MiscUtils; import com.djrapitops.plan.utilities.MiscUtils;
@ -58,7 +58,7 @@ public class ShutdownHook extends Thread {
saveFirstSessionInformation(now); saveFirstSessionInformation(now);
saveActiveSessions(activeSessions, now); saveActiveSessions(activeSessions, now);
} catch (DatabaseInitException e) { } catch (DBInitException e) {
Log.toLog(this.getClass().getName(), e); Log.toLog(this.getClass().getName(), e);
} finally { } finally {
if (db != null) { if (db != null) {

View File

@ -2,8 +2,10 @@ package com.djrapitops.plan.api;
import com.djrapitops.plan.Plan; import com.djrapitops.plan.Plan;
import com.djrapitops.plan.api.exceptions.ParseException; 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.AnalysisData;
import com.djrapitops.plan.data.plugin.PluginData; 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.systems.info.BukkitInformationManager;
import com.djrapitops.plan.utilities.uuid.UUIDUtility; import com.djrapitops.plan.utilities.uuid.UUIDUtility;
import com.djrapitops.plugin.utilities.Verify; import com.djrapitops.plugin.utilities.Verify;
@ -11,6 +13,7 @@ import org.bukkit.OfflinePlayer;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.Collection; import java.util.Collection;
import java.util.Collections;
import java.util.UUID; import java.util.UUID;
import static org.bukkit.Bukkit.getOfflinePlayer; import static org.bukkit.Bukkit.getOfflinePlayer;
@ -198,7 +201,7 @@ public class API {
* @throws IllegalArgumentException If uuid is null. * @throws IllegalArgumentException If uuid is null.
* @throws IllegalStateException If the player has not played on the server before. * @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); Verify.nullCheck(uuid);
String playerName = plugin.getDB().getUsersTable().getPlayerName(uuid); String playerName = plugin.getDB().getUsersTable().getPlayerName(uuid);
if (playerName != null) { if (playerName != null) {
@ -248,7 +251,11 @@ public class API {
* @throws SQLException If database error occurs. * @throws SQLException If database error occurs.
* @since 3.4.2 * @since 3.4.2
*/ */
public Collection<UUID> getSavedUUIDs() throws SQLException { public Collection<UUID> getSavedUUIDs() {
return plugin.getDB().getSavedUUIDs(); try {
return Database.getActive().fetch().getSavedUUIDs();
} catch (DBException e) {
return Collections.EMPTY_SET;
}
} }
} }

View File

@ -5,6 +5,10 @@
package com.djrapitops.plan.api; package com.djrapitops.plan.api;
import com.djrapitops.plan.data.plugin.PluginData; 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 * //TODO Class Javadoc Comment
@ -18,4 +22,8 @@ public interface PlanAPI {
} }
void registerPluginData(PluginData pluginData); void registerPluginData(PluginData pluginData);
Map<UUID, String> getKnownUsernames();
FetchOperations fetchFromPlanDB();
} }

View File

@ -2,14 +2,14 @@
* Licence is provided in the jar as license.yml also here: * 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 * 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}. * Thrown when something goes wrong with creating tables with {@code Table#createTable}.
* *
* @author Rsl1122 * @author Rsl1122
*/ */
public class DBCreateTableException extends DatabaseInitException { public class DBCreateTableException extends DBInitException {
public DBCreateTableException(String tableName, String message, Throwable cause) { public DBCreateTableException(String tableName, String message, Throwable cause) {
super(tableName + ": " + message, cause); super(tableName + ": " + message, cause);

View File

@ -2,24 +2,24 @@
* Licence is provided in the jar as license.yml also here: * 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 * 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. * Thrown when something goes wrong with the Database, generic exception.
* *
* @author Rsl1122 * @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); super(message, cause);
} }
public DatabaseException(Throwable cause) { public DBException(Throwable cause) {
super(cause); super(cause);
} }
public DatabaseException(String message) { public DBException(String message) {
super(message); super(message);
} }
} }

View File

@ -2,24 +2,24 @@
* Licence is provided in the jar as license.yml also here: * 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 * 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}. * Thrown when something goes wrong with {@code Database#init}.
* *
* @author Rsl1122 * @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); super(message, cause);
} }
public DatabaseInitException(Throwable cause) { public DBInitException(Throwable cause) {
super(cause); super(cause);
} }
public DatabaseInitException(String message) { public DBInitException(String message) {
super(message); super(message);
} }
} }

View File

@ -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) { public DBNoDataException(String message, Throwable cause) {
super(message, cause); super(message, cause);

View File

@ -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);
}
}

View File

@ -2,7 +2,7 @@
* Licence is provided in the jar as license.yml also here: * 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 * 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. * Thrown when WebAPI fails to connect to an address.

View File

@ -2,7 +2,7 @@
* Licence is provided in the jar as license.yml also here: * 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 * 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. * Thrown when WebAPI POST-request fails, general Exception.

View File

@ -2,7 +2,7 @@
* Licence is provided in the jar as license.yml also here: * 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 * 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. * Group of WebAPIExceptions that can be considered a failed connection state on some occasions.

View File

@ -2,7 +2,7 @@
* Licence is provided in the jar as license.yml also here: * 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 * 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. * Thrown when WebAPI gets a 403 response.

View File

@ -2,7 +2,7 @@
* Licence is provided in the jar as license.yml also here: * 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 * 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. * Thrown when WebAPI returns 404, usually when response is supposed to be false.

View File

@ -2,7 +2,7 @@
* Licence is provided in the jar as license.yml also here: * 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 * 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. * Thrown when WebAPI returns 404, usually when response is supposed to be false.

View File

@ -1,12 +1,5 @@
package com.djrapitops.plan.command; 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 * This class contains methods used by commands
* *
@ -21,23 +14,4 @@ public class ConditionUtils {
private ConditionUtils() { private ConditionUtils() {
throw new IllegalStateException("Utility class"); 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;
}
} }

View File

@ -5,7 +5,7 @@
package com.djrapitops.plan.command.commands; package com.djrapitops.plan.command.commands;
import com.djrapitops.plan.Plan; 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.Locale;
import com.djrapitops.plan.settings.locale.Msg; import com.djrapitops.plan.settings.locale.Msg;
import com.djrapitops.plan.system.webserver.webapi.WebAPI; import com.djrapitops.plan.system.webserver.webapi.WebAPI;

View File

@ -1,9 +1,11 @@
package com.djrapitops.plan.command.commands; package com.djrapitops.plan.command.commands;
import com.djrapitops.plan.Plan; 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.Locale;
import com.djrapitops.plan.settings.locale.Msg; 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.processing.processors.info.InspectCacheRequestProcessor;
import com.djrapitops.plan.system.settings.Permissions; import com.djrapitops.plan.system.settings.Permissions;
import com.djrapitops.plan.utilities.Condition; import com.djrapitops.plan.utilities.Condition;
@ -19,7 +21,6 @@ import com.djrapitops.plugin.task.RunnableFactory;
import com.djrapitops.plugin.utilities.Verify; import com.djrapitops.plugin.utilities.Verify;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import java.sql.SQLException;
import java.util.UUID; import java.util.UUID;
/** /**
@ -66,26 +67,29 @@ public class InspectCommand extends SubCommand {
@Override @Override
public void run() { public void run() {
try { try {
Database activeDB = Database.getActive();
UUID uuid = UUIDUtility.getUUIDOf(playerName); UUID uuid = UUIDUtility.getUUIDOf(playerName);
if (!Condition.isTrue(Verify.notNull(uuid), Locale.get(Msg.CMD_FAIL_USERNAME_NOT_VALID).toString(), sender)) { if (!Condition.isTrue(Verify.notNull(uuid), Locale.get(Msg.CMD_FAIL_USERNAME_NOT_VALID).toString(), sender)) {
return; return;
} }
if (!Condition.isTrue(ConditionUtils.playerHasPlayed(uuid), Locale.get(Msg.CMD_FAIL_USERNAME_NOT_SEEN).toString(), sender)) { if (!Condition.isTrue(activeDB.check().isPlayerRegistered(uuid), Locale.get(Msg.CMD_FAIL_USERNAME_NOT_KNOWN).toString(), sender)) {
return;
}
if (!Condition.isTrue(plugin.getDB().wasSeenBefore(uuid), Locale.get(Msg.CMD_FAIL_USERNAME_NOT_KNOWN).toString(), sender)) {
return; return;
} }
if (CommandUtils.isPlayer(sender) && plugin.getWebServer().isAuthRequired()) { if (CommandUtils.isPlayer(sender) && plugin.getWebServer().isAuthRequired()) {
boolean senderHasWebUser = plugin.getDB().getSecurityTable().userExists(sender.getName()); boolean senderHasWebUser = activeDB.check().doesWebUserExists(sender.getName());
if (!senderHasWebUser) { if (!senderHasWebUser) {
sender.sendMessage(ChatColor.YELLOW + "[Plan] You might not have a web user, use /plan register <password>"); sender.sendMessage(ChatColor.YELLOW + "[Plan] You might not have a web user, use /plan register <password>");
} }
} }
plugin.addToProcessQueue(new InspectCacheRequestProcessor(uuid, sender, playerName)); plugin.addToProcessQueue(new InspectCacheRequestProcessor(uuid, sender, playerName));
} catch (SQLException ex) { } catch (DBException ex) {
Log.toLog(this.getClass().getName(), 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 { } finally {
this.cancel(); this.cancel();
} }

View File

@ -1,10 +1,12 @@
package com.djrapitops.plan.command.commands; package com.djrapitops.plan.command.commands;
import com.djrapitops.plan.PlanPlugin; import com.djrapitops.plan.PlanPlugin;
import com.djrapitops.plan.api.exceptions.database.DBException;
import com.djrapitops.plan.data.PlayerProfile; import com.djrapitops.plan.data.PlayerProfile;
import com.djrapitops.plan.data.element.ActivityIndex; import com.djrapitops.plan.data.element.ActivityIndex;
import com.djrapitops.plan.settings.locale.Locale; import com.djrapitops.plan.settings.locale.Locale;
import com.djrapitops.plan.settings.locale.Msg; 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.system.settings.Permissions;
import com.djrapitops.plan.utilities.Condition; import com.djrapitops.plan.utilities.Condition;
import com.djrapitops.plan.utilities.FormatUtils; 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.task.RunnableFactory;
import com.djrapitops.plugin.utilities.Verify; import com.djrapitops.plugin.utilities.Verify;
import java.sql.SQLException;
import java.util.UUID; 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)) { if (!Condition.isTrue(Verify.notNull(uuid), Locale.get(Msg.CMD_FAIL_USERNAME_NOT_VALID).toString(), sender)) {
return; 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; return;
} }
PlayerProfile playerProfile = plugin.getDB().getPlayerProfile(uuid); PlayerProfile playerProfile = database.fetch().getPlayerProfile(uuid);
sendMsgs(sender, playerProfile); sendMsgs(sender, playerProfile);
} catch (SQLException ex) { } catch (DBException ex) {
Log.toLog(this.getClass().getName(), ex); Log.toLog(this.getClass().getName(), ex);
} finally { } finally {
this.cancel(); this.cancel();

View File

@ -4,7 +4,7 @@ import com.djrapitops.plan.PlanPlugin;
import com.djrapitops.plan.data.WebUser; import com.djrapitops.plan.data.WebUser;
import com.djrapitops.plan.settings.locale.Locale; import com.djrapitops.plan.settings.locale.Locale;
import com.djrapitops.plan.settings.locale.Msg; 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.system.settings.Permissions;
import com.djrapitops.plan.utilities.Condition; import com.djrapitops.plan.utilities.Condition;
import com.djrapitops.plan.utilities.PassEncryptUtil; import com.djrapitops.plan.utilities.PassEncryptUtil;

View File

@ -1,7 +1,7 @@
package com.djrapitops.plan.command.commands.manage; package com.djrapitops.plan.command.commands.manage;
import com.djrapitops.plan.Plan; 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.Locale;
import com.djrapitops.plan.settings.locale.Msg; import com.djrapitops.plan.settings.locale.Msg;
import com.djrapitops.plan.system.database.databases.Database; import com.djrapitops.plan.system.database.databases.Database;
@ -63,7 +63,7 @@ public class ManageBackupCommand extends SubCommand {
} }
Log.debug("Backup", "Start"); Log.debug("Backup", "Start");
runBackupTask(sender, args, database); runBackupTask(sender, args, database);
} catch (DatabaseInitException | NullPointerException e) { } catch (DBInitException | NullPointerException e) {
sender.sendMessage(Locale.get(Msg.MANAGE_FAIL_FAULTY_DB).toString()); sender.sendMessage(Locale.get(Msg.MANAGE_FAIL_FAULTY_DB).toString());
} finally { } finally {
Log.logDebug("Backup"); Log.logDebug("Backup");

View File

@ -1,7 +1,8 @@
package com.djrapitops.plan.command.commands.manage; package com.djrapitops.plan.command.commands.manage;
import com.djrapitops.plan.Plan; 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.data.container.Session;
import com.djrapitops.plan.settings.locale.Locale; import com.djrapitops.plan.settings.locale.Locale;
import com.djrapitops.plan.settings.locale.Msg; 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.task.RunnableFactory;
import com.djrapitops.plugin.utilities.Verify; import com.djrapitops.plugin.utilities.Verify;
import java.sql.SQLException;
/** /**
* This manage subcommand is used to clear a database of all data. * This manage subcommand is used to clear a database of all data.
* *
@ -73,7 +72,7 @@ public class ManageClearCommand extends SubCommand {
try { try {
Database database = ManageUtils.getDB(dbName); Database database = ManageUtils.getDB(dbName);
runClearTask(sender, database); runClearTask(sender, database);
} catch (DatabaseInitException e) { } catch (DBInitException e) {
sender.sendMessage(Locale.get(Msg.MANAGE_FAIL_FAULTY_DB).toString()); sender.sendMessage(Locale.get(Msg.MANAGE_FAIL_FAULTY_DB).toString());
} }
return true; return true;
@ -86,7 +85,7 @@ public class ManageClearCommand extends SubCommand {
try { try {
sender.sendMessage(Locale.get(Msg.MANAGE_INFO_START).parse()); sender.sendMessage(Locale.get(Msg.MANAGE_INFO_START).parse());
database.removeAllData(); database.remove().everything();
DataCache dataCache = plugin.getDataCache(); DataCache dataCache = plugin.getDataCache();
long now = MiscUtils.getTime(); long now = MiscUtils.getTime();
@ -96,7 +95,7 @@ public class ManageClearCommand extends SubCommand {
new Session(now, player.getWorld().getName(), player.getGameMode().name())) new Session(now, player.getWorld().getName(), player.getGameMode().name()))
); );
sender.sendMessage(Locale.get(Msg.MANAGE_INFO_CLEAR_SUCCESS).toString()); 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()); sender.sendMessage(Locale.get(Msg.MANAGE_INFO_FAIL).toString());
Log.toLog(this.getClass().getSimpleName() + "/" + this.getTaskName(), e); Log.toLog(this.getClass().getSimpleName() + "/" + this.getTaskName(), e);
} finally { } finally {

View File

@ -76,7 +76,6 @@ public class ManageHotswapCommand extends SubCommand {
assert database != null; assert database != null;
database.getVersion(); //Test db connection database.getVersion(); //Test db connection
} catch (Exception e) { } catch (Exception e) {
Log.toLog(this.getClass().getName(), e); Log.toLog(this.getClass().getName(), e);

View File

@ -1,9 +1,11 @@
package com.djrapitops.plan.command.commands.manage; package com.djrapitops.plan.command.commands.manage;
import com.djrapitops.plan.Plan; import com.djrapitops.plan.Plan;
import com.djrapitops.plan.api.exceptions.database.DBException;
import com.djrapitops.plan.data.container.Session; import com.djrapitops.plan.data.container.Session;
import com.djrapitops.plan.settings.locale.Locale; import com.djrapitops.plan.settings.locale.Locale;
import com.djrapitops.plan.settings.locale.Msg; 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.system.settings.Permissions;
import com.djrapitops.plan.systems.cache.DataCache; import com.djrapitops.plan.systems.cache.DataCache;
import com.djrapitops.plan.systems.cache.SessionCache; import com.djrapitops.plan.systems.cache.SessionCache;
@ -19,7 +21,6 @@ import com.djrapitops.plugin.task.RunnableFactory;
import com.djrapitops.plugin.utilities.Verify; import com.djrapitops.plugin.utilities.Verify;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import java.sql.SQLException;
import java.util.UUID; import java.util.UUID;
import static org.bukkit.Bukkit.getPlayer; 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(); 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; return;
} }
@ -90,20 +92,19 @@ public class ManageRemoveCommand extends SubCommand {
} }
sender.sendMessage(Locale.get(Msg.MANAGE_INFO_START).parse()); sender.sendMessage(Locale.get(Msg.MANAGE_INFO_START).parse());
try {
plugin.getDB().removeAccount(uuid);
DataCache dataCache = plugin.getDataCache(); database.remove().player(uuid);
Player player = getPlayer(uuid);
if (player != null) { DataCache dataCache = plugin.getDataCache();
SessionCache.getActiveSessions().remove(uuid); Player player = getPlayer(uuid);
dataCache.cacheSession(uuid, new Session(MiscUtils.getTime(), player.getWorld().getName(), player.getGameMode().name())); if (player != null) {
} SessionCache.getActiveSessions().remove(uuid);
sender.sendMessage(Locale.get(Msg.MANAGE_INFO_REMOVE_SUCCESS).parse(playerName, plugin.getDB().getConfigName())); dataCache.cacheSession(uuid, new Session(MiscUtils.getTime(), player.getWorld().getName(), player.getGameMode().name()));
} catch (SQLException e) {
Log.toLog(this.getClass().getName(), e);
sender.sendMessage(Locale.get(Msg.MANAGE_INFO_FAIL).toString());
} }
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 { } finally {
this.cancel(); this.cancel();
} }

View File

@ -4,7 +4,7 @@ import com.djrapitops.plan.Plan;
import com.djrapitops.plan.settings.locale.Locale; import com.djrapitops.plan.settings.locale.Locale;
import com.djrapitops.plan.settings.locale.Msg; import com.djrapitops.plan.settings.locale.Msg;
import com.djrapitops.plan.system.database.databases.Database; 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.system.settings.Permissions;
import com.djrapitops.plan.utilities.Condition; import com.djrapitops.plan.utilities.Condition;
import com.djrapitops.plan.utilities.ManageUtils; import com.djrapitops.plan.utilities.ManageUtils;

View File

@ -1,8 +1,8 @@
package com.djrapitops.plan.command.commands.manage; package com.djrapitops.plan.command.commands.manage;
import com.djrapitops.plan.Plan; import com.djrapitops.plan.Plan;
import com.djrapitops.plan.api.exceptions.WebAPIException; import com.djrapitops.plan.api.exceptions.webapi.WebAPIException;
import com.djrapitops.plan.api.exceptions.WebAPIForbiddenException; import com.djrapitops.plan.api.exceptions.webapi.WebAPIForbiddenException;
import com.djrapitops.plan.settings.locale.Locale; import com.djrapitops.plan.settings.locale.Locale;
import com.djrapitops.plan.settings.locale.Msg; import com.djrapitops.plan.settings.locale.Msg;
import com.djrapitops.plan.system.settings.Permissions; import com.djrapitops.plan.system.settings.Permissions;

View File

@ -4,7 +4,7 @@ import com.djrapitops.plan.PlanPlugin;
import com.djrapitops.plan.data.WebUser; import com.djrapitops.plan.data.WebUser;
import com.djrapitops.plan.settings.locale.Locale; import com.djrapitops.plan.settings.locale.Locale;
import com.djrapitops.plan.settings.locale.Msg; 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.system.settings.Permissions;
import com.djrapitops.plan.utilities.Condition; import com.djrapitops.plan.utilities.Condition;
import com.djrapitops.plugin.api.utility.log.Log; import com.djrapitops.plugin.api.utility.log.Log;

View File

@ -3,7 +3,7 @@ package com.djrapitops.plan.command.commands.webuser;
import com.djrapitops.plan.PlanPlugin; import com.djrapitops.plan.PlanPlugin;
import com.djrapitops.plan.settings.locale.Locale; import com.djrapitops.plan.settings.locale.Locale;
import com.djrapitops.plan.settings.locale.Msg; 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.system.settings.Permissions;
import com.djrapitops.plan.utilities.Condition; import com.djrapitops.plan.utilities.Condition;
import com.djrapitops.plugin.api.utility.log.Log; import com.djrapitops.plugin.api.utility.log.Log;

View File

@ -4,9 +4,9 @@
*/ */
package com.djrapitops.plan.system.database; package com.djrapitops.plan.system.database;
import com.djrapitops.plan.api.exceptions.DatabaseInitException; import com.djrapitops.plan.api.exceptions.database.DBInitException;
import com.djrapitops.plan.system.database.databases.MySQLDB; import com.djrapitops.plan.system.database.databases.sql.MySQLDB;
import com.djrapitops.plan.system.database.databases.SQLiteDB; import com.djrapitops.plan.system.database.databases.sql.SQLiteDB;
import com.djrapitops.plan.system.settings.Settings; import com.djrapitops.plan.system.settings.Settings;
/** /**
@ -17,7 +17,7 @@ import com.djrapitops.plan.system.settings.Settings;
public class BukkitDBSystem extends DBSystem { public class BukkitDBSystem extends DBSystem {
@Override @Override
protected void initDatabase() throws DatabaseInitException { protected void initDatabase() throws DBInitException {
databases.add(new MySQLDB()); databases.add(new MySQLDB());
databases.add(new SQLiteDB()); databases.add(new SQLiteDB());

View File

@ -4,8 +4,8 @@
*/ */
package com.djrapitops.plan.system.database; package com.djrapitops.plan.system.database;
import com.djrapitops.plan.api.exceptions.DatabaseInitException; import com.djrapitops.plan.api.exceptions.database.DBInitException;
import com.djrapitops.plan.system.database.databases.MySQLDB; import com.djrapitops.plan.system.database.databases.sql.MySQLDB;
/** /**
* //TODO Class Javadoc Comment * //TODO Class Javadoc Comment
@ -15,7 +15,7 @@ import com.djrapitops.plan.system.database.databases.MySQLDB;
public class BungeeDBSystem extends DBSystem { public class BungeeDBSystem extends DBSystem {
@Override @Override
protected void initDatabase() throws DatabaseInitException { protected void initDatabase() throws DBInitException {
db = new MySQLDB(); db = new MySQLDB();
databases.add(db); databases.add(db);
db.init(); db.init();

View File

@ -4,14 +4,14 @@
*/ */
package com.djrapitops.plan.system.database; 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.EnableException;
import com.djrapitops.plan.api.exceptions.database.DBInitException;
import com.djrapitops.plan.settings.locale.Locale; import com.djrapitops.plan.settings.locale.Locale;
import com.djrapitops.plan.settings.locale.Msg; import com.djrapitops.plan.settings.locale.Msg;
import com.djrapitops.plan.system.PlanSystem; import com.djrapitops.plan.system.PlanSystem;
import com.djrapitops.plan.system.SubSystem; import com.djrapitops.plan.system.SubSystem;
import com.djrapitops.plan.system.database.databases.Database; 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.plan.utilities.NullCheck;
import com.djrapitops.plugin.api.Benchmark; import com.djrapitops.plugin.api.Benchmark;
import com.djrapitops.plugin.api.utility.log.Log; import com.djrapitops.plugin.api.utility.log.Log;
@ -50,12 +50,12 @@ public abstract class DBSystem implements SubSystem {
db.scheduleClean(10L); db.scheduleClean(10L);
Log.info(Locale.get(Msg.ENABLE_DB_INFO).parse(db.getConfigName())); Log.info(Locale.get(Msg.ENABLE_DB_INFO).parse(db.getConfigName()));
Benchmark.stop("Systems", "Init Database"); Benchmark.stop("Systems", "Init Database");
} catch (DatabaseInitException e) { } catch (DBInitException e) {
throw new EnableException(db.getName() + "-Database failed to initialize", 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<SQLDB> getDatabases() { public Set<SQLDB> getDatabases() {
return databases; return databases;
@ -80,14 +80,14 @@ public abstract class DBSystem implements SubSystem {
return db; return db;
} }
public SQLDB getActiveDatabase(String dbName) throws DatabaseInitException { public SQLDB getActiveDatabase(String dbName) throws DBInitException {
for (SQLDB database : DBSystem.getInstance().getDatabases()) { for (SQLDB database : getDatabases()) {
String dbConfigName = database.getConfigName(); String dbConfigName = database.getConfigName();
if (Verify.equalsIgnoreCase(dbName, dbConfigName)) { if (Verify.equalsIgnoreCase(dbName, dbConfigName)) {
database.init(); database.init();
return database; return database;
} }
} }
throw new DatabaseInitException(Locale.get(Msg.ENABLE_FAIL_WRONG_DB) + " " + dbName); throw new DBInitException(Locale.get(Msg.ENABLE_FAIL_WRONG_DB) + " " + dbName);
} }
} }

View File

@ -1,18 +1,14 @@
package com.djrapitops.plan.system.database.databases; package com.djrapitops.plan.system.database.databases;
import com.djrapitops.plan.api.exceptions.DatabaseInitException; import com.djrapitops.plan.api.exceptions.database.DBException;
import com.djrapitops.plan.data.PlayerProfile; import com.djrapitops.plan.api.exceptions.database.DBInitException;
import com.djrapitops.plan.data.ServerProfile;
import com.djrapitops.plan.system.database.DBSystem; 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 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. * Abstract class representing a Database.
* <p> * <p>
@ -23,42 +19,23 @@ import java.util.UUID;
*/ */
public abstract class Database { public abstract class Database {
protected UsersTable usersTable; private boolean open;
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;
public static Database getInstance() { public static Database getActive() {
Database database = DBSystem.getInstance().getActiveDatabase(); Database database = DBSystem.getInstance().getActiveDatabase();
NullCheck.check(database, new IllegalStateException("Database was not initialized.")); NullCheck.check(database, new IllegalStateException("Database was not initialized."));
return database; return database;
} }
/** public abstract void init() throws DBInitException;
* Initiates the database.
*
* @throws DatabaseInitException if SQLException or other exception occurs.
*/
public void init() throws DatabaseInitException {
}
/** public abstract BackupOperations backup();
* Condition if the user is saved in the database.
* public abstract CheckOperations check();
* @param uuid UUID of the user.
* @return true/false public abstract FetchOperations fetch();
*/
public abstract boolean wasSeenBefore(UUID uuid); public abstract RemoveOperations remove();
/** /**
* Used to get the name of the database type. * Used to get the name of the database type.
@ -80,146 +57,9 @@ public abstract class Database {
return getName().toLowerCase().trim(); return getName().toLowerCase().trim();
} }
public abstract boolean isNewDatabase() throws SQLException; public abstract void close() throws DBException;
/** public boolean isOpen() {
* Used to get the database schema version. return open;
*
* @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.
* <p>
* 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.
* <p>
* 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<UUID> 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<String, Integer> 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;
} }
} }

View File

@ -1,11 +1,12 @@
package com.djrapitops.plan.system.database.databases.operation; package com.djrapitops.plan.system.database.databases.operation;
import com.djrapitops.plan.api.exceptions.database.DBException;
import com.djrapitops.plan.system.database.databases.Database; import com.djrapitops.plan.system.database.databases.Database;
public interface BackupOperations { public interface BackupOperations {
void backup(Database toDatabase); void backup(Database toDatabase) throws DBException;
void restore(Database fromDatabase) throws DBException;
void restore(Database fromDatabase);
} }

View File

@ -1,12 +1,15 @@
package com.djrapitops.plan.system.database.databases.operation; package com.djrapitops.plan.system.database.databases.operation;
import com.djrapitops.plan.api.exceptions.database.DBException;
import java.util.UUID; import java.util.UUID;
public interface CheckOperations { 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;
} }

View File

@ -1,19 +1,22 @@
package com.djrapitops.plan.system.database.databases.operation; 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.PlayerProfile;
import com.djrapitops.plan.data.ServerProfile; import com.djrapitops.plan.data.ServerProfile;
import java.sql.SQLException; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
public interface FetchOperations { 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<UUID> getSavedUUIDs() throws SQLException; Set<UUID> getSavedUUIDs() throws DBException;
Set<UUID> getSavedUUIDs(UUID server) throws SQLException; Set<UUID> getSavedUUIDs(UUID server) throws DBException;
Map<UUID, String> getServerNames() throws DBException;
} }

View File

@ -1,19 +1,18 @@
package com.djrapitops.plan.system.database.databases.operation; 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; import java.util.UUID;
public interface RemoveOperations { 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;
} }

View File

@ -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());
}
}
}

View File

@ -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.plan.system.settings.Settings;
import com.djrapitops.plugin.api.utility.log.Log; import com.djrapitops.plugin.api.utility.log.Log;

View File

@ -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) {
}
}

View File

@ -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);
}
}
}

View File

@ -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.PlayerProfile;
import com.djrapitops.plan.data.ServerProfile; import com.djrapitops.plan.data.ServerProfile;
import com.djrapitops.plan.data.container.*; import com.djrapitops.plan.data.container.*;
import com.djrapitops.plan.system.database.tables.*; import com.djrapitops.plan.system.database.databases.Database;
import com.djrapitops.plan.system.database.tables.move.Version8TransferTable; 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.plan.utilities.MiscUtils;
import com.djrapitops.plugin.api.Benchmark; import com.djrapitops.plugin.api.Benchmark;
import com.djrapitops.plugin.api.TimeAmount; import com.djrapitops.plugin.api.TimeAmount;
@ -27,6 +32,26 @@ import java.util.*;
*/ */
public abstract class SQLDB extends Database { 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 final boolean usingMySQL;
private boolean open = false; private boolean open = false;
private ITask dbCleanTask; private ITask dbCleanTask;
@ -34,22 +59,27 @@ public abstract class SQLDB extends Database {
public SQLDB() { public SQLDB() {
usingMySQL = getName().equals("MySQL"); usingMySQL = getName().equals("MySQL");
versionTable = new VersionTable(this, usingMySQL); versionTable = new VersionTable(this);
serverTable = new ServerTable(this, usingMySQL); serverTable = new ServerTable(this);
securityTable = new SecurityTable(this, usingMySQL); securityTable = new SecurityTable(this);
commandUseTable = new CommandUseTable(this, usingMySQL); commandUseTable = new CommandUseTable(this);
tpsTable = new TPSTable(this, usingMySQL); tpsTable = new TPSTable(this);
usersTable = new UsersTable(this, usingMySQL); usersTable = new UsersTable(this);
userInfoTable = new UserInfoTable(this, usingMySQL); userInfoTable = new UserInfoTable(this);
actionsTable = new ActionsTable(this, usingMySQL); actionsTable = new ActionsTable(this);
ipsTable = new IPsTable(this, usingMySQL); ipsTable = new IPsTable(this);
nicknamesTable = new NicknamesTable(this, usingMySQL); nicknamesTable = new NicknamesTable(this);
sessionsTable = new SessionsTable(this, usingMySQL); sessionsTable = new SessionsTable(this);
killsTable = new KillsTable(this, usingMySQL); killsTable = new KillsTable(this);
worldTable = new WorldTable(this, usingMySQL); worldTable = new WorldTable(this);
worldTimesTable = new WorldTimesTable(this, usingMySQL); 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. * Converts Unsaved Bukkit player files to database data.
* Cleans the database. * Cleans the database.
* *
* @throws DatabaseInitException if Database fails to initiate. * @throws DBInitException if Database fails to initiate.
*/ */
@Override @Override
public void init() throws DatabaseInitException { public void init() throws DBInitException {
setStatus("Init"); setStatus("Init");
String benchName = "Init " + getConfigName(); String benchName = "Init " + getConfigName();
Benchmark.start("Database", benchName); Benchmark.start("Database", benchName);
@ -99,9 +129,9 @@ public abstract class SQLDB extends Database {
* <p> * <p>
* Updates to latest schema. * 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 { try {
boolean newDatabase = isNewDatabase(); boolean newDatabase = isNewDatabase();
@ -122,7 +152,7 @@ public abstract class SQLDB extends Database {
public void run() { public void run() {
try { try {
new Version8TransferTable(db, isUsingMySQL()).alterTablesToV10(); new Version8TransferTable(db, isUsingMySQL()).alterTablesToV10();
} catch (DatabaseInitException | SQLException e) { } catch (DBInitException | SQLException e) {
Log.toLog(this.getClass().getName(), e); Log.toLog(this.getClass().getName(), e);
} }
} }
@ -142,7 +172,7 @@ public abstract class SQLDB extends Database {
setVersion(13); setVersion(13);
} }
} catch (SQLException e) { } 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 {
* <p> * <p>
* Updates table columns to latest schema. * Updates table columns to latest schema.
*/ */
private void createTables() throws DatabaseInitException { private void createTables() throws DBInitException {
Benchmark.start("Database", "Create tables"); Benchmark.start("Database", "Create tables");
for (Table table : getAllTables()) { for (Table table : getAllTables()) {
table.createTable(); table.createTable();
@ -191,15 +221,10 @@ public abstract class SQLDB extends Database {
/** /**
* Setups the {@link BasicDataSource} * Setups the {@link BasicDataSource}
*/ */
public abstract void setupDataSource() throws DatabaseInitException; public abstract void setupDataSource() throws DBInitException;
/**
* Closes the SQLDB
*
* @throws SQLException DB Error
*/
@Override @Override
public void close() throws SQLException { public void close() {
setStatus("Closed"); setStatus("Closed");
open = false; open = false;
Log.logDebug("Database"); // Log remaining Debug info if present 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 { public int getVersion() throws SQLException {
return versionTable.getVersion(); return versionTable.getVersion();
} }
@Override
public void setVersion(int version) throws SQLException { public void setVersion(int version) throws SQLException {
versionTable.setVersion(version); versionTable.setVersion(version);
} }
@Override
public boolean isNewDatabase() throws SQLException { public boolean isNewDatabase() throws SQLException {
return versionTable.isNewDatabase(); return versionTable.isNewDatabase();
} }
@Override
public PlayerProfile getPlayerProfile(UUID uuid) throws SQLException {
if (!wasSeenBefore(uuid)) {
return null;
}
String playerName = usersTable.getPlayerName(uuid);
Optional<Long> 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<UUID, UserInfo> userInfo = userInfoTable.getAllUserInfo(uuid);
addUserInfoToProfile(profile, userInfo);
profile.setActions(actionsTable.getActions(uuid));
profile.setNicknames(nicknamesTable.getAllNicknames(uuid));
profile.setGeoInformation(ipsTable.getGeoInfo(uuid));
Map<UUID, List<Session>> sessions = sessionsTable.getSessions(uuid);
profile.setSessions(sessions);
profile.calculateWorldTimesPerServer();
profile.setTotalWorldTimes(worldTimesTable.getWorldTimesOfUser(uuid));
return profile;
}
private void addUserInfoToProfile(PlayerProfile profile, Map<UUID, UserInfo> userInfo) {
for (Map.Entry<UUID, UserInfo> 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 @Override
public ServerProfile getServerProfile(UUID serverUUID) throws SQLException { public ServerProfile getServerProfile(UUID serverUUID) throws SQLException {
ServerProfile profile = new ServerProfile(serverUUID); ServerProfile profile = new ServerProfile(serverUUID);
@ -330,21 +303,6 @@ public abstract class SQLDB extends Database {
return players; 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 { public void removeAccount(UUID uuid) throws SQLException {
if (uuid == null) { if (uuid == null) {
return; return;
@ -374,18 +332,6 @@ public abstract class SQLDB extends Database {
Log.info("Clean complete."); 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) { private void setStatus(String status) {
Log.logDebug("Database", status); Log.logDebug("Database", status);
} }
@ -401,7 +347,6 @@ public abstract class SQLDB extends Database {
* <p> * <p>
* MySQL has Auto Commit enabled. * MySQL has Auto Commit enabled.
*/ */
@Override
public void commit(Connection connection) throws SQLException { public void commit(Connection connection) throws SQLException {
try { try {
if (!usingMySQL) { if (!usingMySQL) {
@ -416,7 +361,6 @@ public abstract class SQLDB extends Database {
} }
} }
@Override
public void returnToPool(Connection connection) throws SQLException { public void returnToPool(Connection connection) throws SQLException {
if (usingMySQL && connection != null) { if (usingMySQL && connection != null) {
connection.close(); connection.close();
@ -438,7 +382,79 @@ public abstract class SQLDB extends Database {
} }
} }
public boolean isOpen() { public UsersTable getUsersTable() {
return open; 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;
} }
} }

View File

@ -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<Long> 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<UUID, UserInfo> userInfo = userInfoTable.getAllUserInfo(uuid);
addUserInfoToProfile(profile, userInfo);
profile.setActions(actionsTable.getActions(uuid));
profile.setNicknames(nicknamesTable.getAllNicknames(uuid));
profile.setGeoInformation(ipsTable.getGeoInfo(uuid));
Map<UUID, List<Session>> 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<UUID, UserInfo> userInfo) {
for (Map.Entry<UUID, UserInfo> 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<UUID> getSavedUUIDs() throws DBException {
try {
return usersTable.getSavedUUIDs();
} catch (SQLException e) {
throw ErrorUtil.getExceptionFor(e);
}
}
@Override
public Set<UUID> getSavedUUIDs(UUID server) throws DBException {
try {
return userInfoTable.getSavedUUIDs(server);
} catch (SQLException e) {
throw ErrorUtil.getExceptionFor(e);
}
}
@Override
public Map<UUID, String> getServerNames() throws DBException {
try {
return serverTable.getServerNames();
} catch (SQLException e) {
throw ErrorUtil.getExceptionFor(e);
}
}
}

View File

@ -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();
}
}

View File

@ -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);
}
}
}

View File

@ -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.plan.utilities.MiscUtils;
import com.djrapitops.plugin.api.utility.log.Log; import com.djrapitops.plugin.api.utility.log.Log;
import com.djrapitops.plugin.task.AbsRunnable; import com.djrapitops.plugin.task.AbsRunnable;
@ -38,11 +39,11 @@ public class SQLiteDB extends SQLDB {
* Setups the {@link BasicDataSource} * Setups the {@link BasicDataSource}
*/ */
@Override @Override
public void setupDataSource() throws DatabaseInitException { public void setupDataSource() throws DBInitException {
try { try {
connection = getNewConnection(dbName); connection = getNewConnection(dbName);
} catch (SQLException e) { } catch (SQLException e) {
throw new DatabaseInitException(e); throw new DBInitException(e);
} }
startConnectionPingTask(); startConnectionPingTask();
} }
@ -132,7 +133,7 @@ public class SQLiteDB extends SQLDB {
} }
@Override @Override
public void close() throws SQLException { public void close() {
stopConnectionPingTask(); stopConnectionPingTask();
MiscUtils.close(connection); MiscUtils.close(connection);
super.close(); super.close();

View File

@ -2,7 +2,10 @@
* Licence is provided in the jar as license.yml also here: * 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 * 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.PreparedStatement;
import java.sql.SQLException; import java.sql.SQLException;
@ -18,7 +21,9 @@ public abstract class ExecStatement {
public ExecStatement(String sql) { public ExecStatement(String sql) {
this.sql = 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 { public boolean execute(PreparedStatement statement) throws SQLException {

View File

@ -2,7 +2,7 @@
* Licence is provided in the jar as license.yml also here: * 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 * 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.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;

View File

@ -2,7 +2,10 @@
* Licence is provided in the jar as license.yml also here: * 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 * 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.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
@ -24,7 +27,9 @@ public abstract class QueryStatement<T> {
public QueryStatement(String sql, int fetchSize) { public QueryStatement(String sql, int fetchSize) {
this.sql = sql; this.sql = sql;
// Log.debug("Query Statement: " + sql); if (Settings.DEV_MODE.isTrue()) {
Log.debug("Query Statement: " + sql);
}
this.fetchSize = fetchSize; this.fetchSize = fetchSize;
} }

View File

@ -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();
}
}

View File

@ -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);
}
}

View File

@ -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 + ")";
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -2,19 +2,19 @@
* Licence is provided in the jar as license.yml also here: * 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 * 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.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.Actions;
import com.djrapitops.plan.data.container.Action; import com.djrapitops.plan.data.container.Action;
import com.djrapitops.plan.system.database.databases.SQLDB; import com.djrapitops.plan.system.database.databases.sql.SQLDB;
import com.djrapitops.plan.system.database.processing.ExecStatement; import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
import com.djrapitops.plan.system.database.processing.QueryAllStatement; import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
import com.djrapitops.plan.system.database.processing.QueryStatement; import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
import com.djrapitops.plan.system.database.sql.Select; import com.djrapitops.plan.system.database.databases.sql.statements.Select;
import com.djrapitops.plan.system.database.sql.Sql; import com.djrapitops.plan.system.database.databases.sql.statements.Sql;
import com.djrapitops.plan.system.database.sql.TableSqlParser; import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser;
import com.djrapitops.plugin.utilities.Verify; import com.djrapitops.plugin.utilities.Verify;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
@ -46,8 +46,8 @@ public class ActionsTable extends UserIDTable {
private final ServerTable serverTable; private final ServerTable serverTable;
private String insertStatement; private String insertStatement;
public ActionsTable(SQLDB db, boolean usingMySQL) { public ActionsTable(SQLDB db) {
super("plan_actions", db, usingMySQL); super("plan_actions", db);
serverTable = db.getServerTable(); serverTable = db.getServerTable();
insertStatement = "INSERT INTO " + tableName + " (" insertStatement = "INSERT INTO " + tableName + " ("
+ columnUserID + ", " + columnUserID + ", "

View File

@ -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.Plan;
import com.djrapitops.plan.api.exceptions.DBCreateTableException; import com.djrapitops.plan.api.exceptions.database.DBCreateTableException;
import com.djrapitops.plan.system.database.databases.SQLDB; import com.djrapitops.plan.system.database.databases.sql.SQLDB;
import com.djrapitops.plan.system.database.processing.ExecStatement; import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
import com.djrapitops.plan.system.database.processing.QueryAllStatement; import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
import com.djrapitops.plan.system.database.processing.QueryStatement; import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
import com.djrapitops.plan.system.database.sql.Select; import com.djrapitops.plan.system.database.databases.sql.statements.Select;
import com.djrapitops.plan.system.database.sql.Sql; import com.djrapitops.plan.system.database.databases.sql.statements.Sql;
import com.djrapitops.plan.system.database.sql.TableSqlParser; import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
@ -31,8 +31,8 @@ public class CommandUseTable extends Table {
private final ServerTable serverTable; private final ServerTable serverTable;
private String insertStatement; private String insertStatement;
public CommandUseTable(SQLDB db, boolean usingMySQL) { public CommandUseTable(SQLDB db) {
super("plan_commandusages", db, usingMySQL); super("plan_commandusages", db);
serverTable = db.getServerTable(); serverTable = db.getServerTable();
insertStatement = "INSERT INTO " + tableName + " (" insertStatement = "INSERT INTO " + tableName + " ("
+ columnCommand + ", " + columnCommand + ", "

View File

@ -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.data.container.GeoInfo;
import com.djrapitops.plan.system.database.databases.SQLDB; import com.djrapitops.plan.system.database.databases.sql.SQLDB;
import com.djrapitops.plan.system.database.processing.ExecStatement; import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
import com.djrapitops.plan.system.database.processing.QueryAllStatement; import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
import com.djrapitops.plan.system.database.processing.QueryStatement; import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
import com.djrapitops.plan.system.database.sql.Select; import com.djrapitops.plan.system.database.databases.sql.statements.Select;
import com.djrapitops.plan.system.database.sql.Sql; import com.djrapitops.plan.system.database.databases.sql.statements.Sql;
import com.djrapitops.plan.system.database.sql.TableSqlParser; import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser;
import com.djrapitops.plugin.utilities.Verify; import com.djrapitops.plugin.utilities.Verify;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
@ -26,12 +26,8 @@ public class IPsTable extends UserIDTable {
private final String columnLastUsed = "last_used"; private final String columnLastUsed = "last_used";
private String insertStatement; private String insertStatement;
/** public IPsTable(SQLDB db) {
* @param db The database super("plan_ips", db);
* @param usingMySQL if the server is using MySQL
*/
public IPsTable(SQLDB db, boolean usingMySQL) {
super("plan_ips", db, usingMySQL);
insertStatement = "INSERT INTO " + tableName + " (" insertStatement = "INSERT INTO " + tableName + " ("
+ columnUserID + ", " + columnUserID + ", "
+ columnIP + ", " + columnIP + ", "

View File

@ -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.PlayerKill;
import com.djrapitops.plan.data.container.Session; import com.djrapitops.plan.data.container.Session;
import com.djrapitops.plan.system.database.databases.SQLDB; import com.djrapitops.plan.system.database.databases.sql.SQLDB;
import com.djrapitops.plan.system.database.processing.ExecStatement; import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
import com.djrapitops.plan.system.database.processing.QueryAllStatement; import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
import com.djrapitops.plan.system.database.processing.QueryStatement; import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
import com.djrapitops.plan.system.database.sql.Sql; import com.djrapitops.plan.system.database.databases.sql.statements.Sql;
import com.djrapitops.plan.system.database.sql.TableSqlParser; import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser;
import com.djrapitops.plugin.utilities.Verify; import com.djrapitops.plugin.utilities.Verify;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
@ -30,8 +30,8 @@ public class KillsTable extends UserIDTable {
private final SessionsTable sessionsTable; private final SessionsTable sessionsTable;
private String insertStatement; private String insertStatement;
public KillsTable(SQLDB db, boolean usingMySQL) { public KillsTable(SQLDB db) {
super("plan_kills", db, usingMySQL); super("plan_kills", db);
sessionsTable = db.getSessionsTable(); sessionsTable = db.getSessionsTable();
insertStatement = "INSERT INTO " + tableName + " (" insertStatement = "INSERT INTO " + tableName + " ("
+ columnKillerUserID + ", " + columnKillerUserID + ", "

View File

@ -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.Plan;
import com.djrapitops.plan.api.exceptions.DBCreateTableException; import com.djrapitops.plan.api.exceptions.database.DBCreateTableException;
import com.djrapitops.plan.system.database.databases.SQLDB; import com.djrapitops.plan.system.database.databases.sql.SQLDB;
import com.djrapitops.plan.system.database.processing.ExecStatement; import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
import com.djrapitops.plan.system.database.processing.QueryAllStatement; import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
import com.djrapitops.plan.system.database.processing.QueryStatement; import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
import com.djrapitops.plan.system.database.sql.Sql; import com.djrapitops.plan.system.database.databases.sql.statements.Sql;
import com.djrapitops.plan.system.database.sql.TableSqlParser; import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser;
import com.djrapitops.plugin.utilities.Verify; import com.djrapitops.plugin.utilities.Verify;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
@ -26,12 +26,8 @@ public class NicknamesTable extends UserIDTable {
private final ServerTable serverTable; private final ServerTable serverTable;
private String insertStatement; private String insertStatement;
/** public NicknamesTable(SQLDB db) {
* @param db The database super("plan_nicknames", db);
* @param usingMySQL if the server is using MySQL
*/
public NicknamesTable(SQLDB db, boolean usingMySQL) {
super("plan_nicknames", db, usingMySQL);
serverTable = db.getServerTable(); serverTable = db.getServerTable();
insertStatement = "INSERT INTO " + tableName + " (" + insertStatement = "INSERT INTO " + tableName + " (" +
columnUserID + ", " + columnUserID + ", " +

View File

@ -3,18 +3,18 @@
* To change this template file, choose Tools | Templates * To change this template file, choose Tools | Templates
* and open the template in the editor. * 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.data.WebUser;
import com.djrapitops.plan.system.database.databases.SQLDB; import com.djrapitops.plan.system.database.databases.sql.SQLDB;
import com.djrapitops.plan.system.database.processing.ExecStatement; import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
import com.djrapitops.plan.system.database.processing.QueryAllStatement; import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
import com.djrapitops.plan.system.database.processing.QueryStatement; import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
import com.djrapitops.plan.system.database.sql.Insert; import com.djrapitops.plan.system.database.databases.sql.statements.Insert;
import com.djrapitops.plan.system.database.sql.Select; import com.djrapitops.plan.system.database.databases.sql.statements.Select;
import com.djrapitops.plan.system.database.sql.Sql; import com.djrapitops.plan.system.database.databases.sql.statements.Sql;
import com.djrapitops.plan.system.database.sql.TableSqlParser; import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser;
import com.djrapitops.plugin.utilities.Verify; import com.djrapitops.plugin.utilities.Verify;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
@ -33,8 +33,8 @@ public class SecurityTable extends Table {
private final String columnPermLevel = "permission_level"; private final String columnPermLevel = "permission_level";
private String insertStatement; private String insertStatement;
public SecurityTable(SQLDB db, boolean usingMySQL) { public SecurityTable(SQLDB db) {
super("plan_security", db, usingMySQL); super("plan_security", db);
insertStatement = Insert.values(tableName, insertStatement = Insert.values(tableName,
columnUser, columnUser,
columnSaltedHash, columnSaltedHash,

View File

@ -2,14 +2,14 @@
* Licence is provided in the jar as license.yml also here: * 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 * 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.api.exceptions.database.DBCreateTableException;
import com.djrapitops.plan.system.database.databases.SQLDB; import com.djrapitops.plan.system.database.databases.sql.SQLDB;
import com.djrapitops.plan.system.database.processing.ExecStatement; import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
import com.djrapitops.plan.system.database.processing.QueryAllStatement; import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
import com.djrapitops.plan.system.database.processing.QueryStatement; import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
import com.djrapitops.plan.system.database.sql.*; import com.djrapitops.plan.system.database.databases.sql.statements.*;
import com.djrapitops.plan.systems.info.server.ServerInfo; import com.djrapitops.plan.systems.info.server.ServerInfo;
import com.djrapitops.plugin.utilities.Verify; import com.djrapitops.plugin.utilities.Verify;
@ -45,8 +45,8 @@ public class ServerTable extends Table {
private final String columnMaxPlayers = "max_players"; private final String columnMaxPlayers = "max_players";
private String insertStatement; private String insertStatement;
public ServerTable(SQLDB db, boolean usingMySQL) { public ServerTable(SQLDB db) {
super("plan_servers", db, usingMySQL); super("plan_servers", db);
statementSelectServerID = "(" + Select.from(tableName, tableName + "." + columnServerID).where(columnServerUUID + "=?").toString() + ")"; statementSelectServerID = "(" + Select.from(tableName, tableName + "." + columnServerID).where(columnServerUUID + "=?").toString() + ")";
statementSelectServerNameID = "(" + Select.from(tableName, tableName + "." + columnServerName).where(columnServerID + "=?").toString() + ")"; statementSelectServerNameID = "(" + Select.from(tableName, tableName + "." + columnServerName).where(columnServerID + "=?").toString() + ")";
insertStatement = Insert.values(tableName, insertStatement = Insert.values(tableName,

View File

@ -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.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.container.Session;
import com.djrapitops.plan.system.database.databases.SQLDB; import com.djrapitops.plan.system.database.databases.sql.SQLDB;
import com.djrapitops.plan.system.database.processing.ExecStatement; import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
import com.djrapitops.plan.system.database.processing.QueryAllStatement; import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
import com.djrapitops.plan.system.database.processing.QueryStatement; import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
import com.djrapitops.plan.system.database.sql.Select; import com.djrapitops.plan.system.database.databases.sql.statements.Select;
import com.djrapitops.plan.system.database.sql.Sql; import com.djrapitops.plan.system.database.databases.sql.statements.Sql;
import com.djrapitops.plan.system.database.sql.TableSqlParser; import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser;
import com.djrapitops.plugin.utilities.Verify; import com.djrapitops.plugin.utilities.Verify;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
@ -34,8 +34,8 @@ public class SessionsTable extends UserIDTable {
private final ServerTable serverTable; private final ServerTable serverTable;
private String insertStatement; private String insertStatement;
public SessionsTable(SQLDB db, boolean usingMySQL) { public SessionsTable(SQLDB db) {
super("plan_sessions", db, usingMySQL); super("plan_sessions", db);
serverTable = db.getServerTable(); serverTable = db.getServerTable();
insertStatement = "INSERT INTO " + tableName + " (" insertStatement = "INSERT INTO " + tableName + " ("
+ columnUserID + ", " + columnUserID + ", "

View File

@ -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.data.container.TPS;
import com.djrapitops.plan.system.database.databases.SQLDB; import com.djrapitops.plan.system.database.databases.sql.SQLDB;
import com.djrapitops.plan.system.database.processing.ExecStatement; import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
import com.djrapitops.plan.system.database.processing.QueryAllStatement; import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
import com.djrapitops.plan.system.database.processing.QueryStatement; import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
import com.djrapitops.plan.system.database.sql.Select; import com.djrapitops.plan.system.database.databases.sql.statements.Select;
import com.djrapitops.plan.system.database.sql.Sql; import com.djrapitops.plan.system.database.databases.sql.statements.Sql;
import com.djrapitops.plan.system.database.sql.TableSqlParser; import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser;
import com.djrapitops.plan.systems.info.server.ServerInfo; import com.djrapitops.plan.systems.info.server.ServerInfo;
import com.djrapitops.plan.utilities.MiscUtils; import com.djrapitops.plan.utilities.MiscUtils;
import com.djrapitops.plugin.api.TimeAmount; import com.djrapitops.plugin.api.TimeAmount;
@ -39,8 +40,8 @@ public class TPSTable extends Table {
private final ServerTable serverTable; private final ServerTable serverTable;
private String insertStatement; private String insertStatement;
public TPSTable(SQLDB db, boolean usingMySQL) { public TPSTable(SQLDB db) {
super("plan_tps", db, usingMySQL); super("plan_tps", db);
serverTable = db.getServerTable(); serverTable = db.getServerTable();
insertStatement = "INSERT INTO " + tableName + " (" insertStatement = "INSERT INTO " + tableName + " ("
+ columnServerID + ", " + columnServerID + ", "

View File

@ -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.api.exceptions.database.DBCreateTableException;
import com.djrapitops.plan.system.database.databases.SQLDB; import com.djrapitops.plan.system.database.databases.sql.SQLDB;
import com.djrapitops.plan.system.database.processing.ExecStatement; import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
import com.djrapitops.plan.system.database.processing.QueryStatement; import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
import com.djrapitops.plan.utilities.MiscUtils; import com.djrapitops.plan.utilities.MiscUtils;
import com.djrapitops.plugin.utilities.Verify; import com.djrapitops.plugin.utilities.Verify;
import com.google.common.base.Objects; import com.google.common.base.Objects;
@ -39,10 +39,15 @@ public abstract class Table {
* @param db Database to use. * @param db Database to use.
* @param usingMySQL Is the database using MySQL? * @param usingMySQL Is the database using MySQL?
*/ */
@Deprecated
public Table(String name, SQLDB db, boolean usingMySQL) { public Table(String name, SQLDB db, boolean usingMySQL) {
this(name, db);
}
public Table(String name, SQLDB db) {
this.tableName = name; this.tableName = name;
this.db = db; this.db = db;
this.usingMySQL = usingMySQL; this.usingMySQL = db.isUsingMySQL();
} }
public abstract void createTable() throws DBCreateTableException; public abstract void createTable() throws DBCreateTableException;

View File

@ -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.databases.sql.SQLDB;
import com.djrapitops.plan.system.database.processing.ExecStatement; import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.SQLException; import java.sql.SQLException;
@ -18,8 +18,8 @@ public abstract class UserIDTable extends Table {
protected final String columnUserID = "user_id"; protected final String columnUserID = "user_id";
protected final UsersTable usersTable; protected final UsersTable usersTable;
public UserIDTable(String name, SQLDB db, boolean usingMySQL) { public UserIDTable(String name, SQLDB db) {
super(name, db, usingMySQL); super(name, db);
usersTable = db.getUsersTable(); usersTable = db.getUsersTable();
} }

View File

@ -2,19 +2,20 @@
* Licence is provided in the jar as license.yml also here: * 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 * 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.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.data.container.UserInfo;
import com.djrapitops.plan.system.database.databases.SQLDB; import com.djrapitops.plan.system.database.databases.sql.SQLDB;
import com.djrapitops.plan.system.database.processing.ExecStatement; import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
import com.djrapitops.plan.system.database.processing.QueryAllStatement; import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
import com.djrapitops.plan.system.database.processing.QueryStatement; import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
import com.djrapitops.plan.system.database.sql.Select; import com.djrapitops.plan.system.database.databases.sql.statements.Select;
import com.djrapitops.plan.system.database.sql.Sql; import com.djrapitops.plan.system.database.databases.sql.statements.Sql;
import com.djrapitops.plan.system.database.sql.TableSqlParser; import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser;
import com.djrapitops.plan.system.database.sql.Update; import com.djrapitops.plan.system.database.databases.sql.statements.Update;
import com.djrapitops.plugin.api.utility.log.Log; import com.djrapitops.plugin.api.utility.log.Log;
import com.djrapitops.plugin.utilities.Verify; import com.djrapitops.plugin.utilities.Verify;
@ -39,8 +40,8 @@ public class UserInfoTable extends UserIDTable {
private final ServerTable serverTable; private final ServerTable serverTable;
public UserInfoTable(SQLDB db, boolean usingMySQL) { public UserInfoTable(SQLDB db) {
super("plan_user_info", db, usingMySQL); super("plan_user_info", db);
serverTable = db.getServerTable(); serverTable = db.getServerTable();
} }
@ -341,4 +342,9 @@ public class UserInfoTable extends UserIDTable {
return 0; return 0;
} }
} }
// TODO improve performance of this method.
public Set<UUID> getSavedUUIDs(UUID serverUUID) throws SQLException {
return getSavedUUIDs().get(serverUUID);
}
} }

View File

@ -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.data.container.UserInfo;
import com.djrapitops.plan.system.database.databases.SQLDB; import com.djrapitops.plan.system.database.databases.sql.SQLDB;
import com.djrapitops.plan.system.database.processing.ExecStatement; import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
import com.djrapitops.plan.system.database.processing.QueryAllStatement; import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
import com.djrapitops.plan.system.database.processing.QueryStatement; import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
import com.djrapitops.plan.system.database.sql.*; import com.djrapitops.plan.system.database.databases.sql.statements.*;
import com.djrapitops.plugin.utilities.Verify; import com.djrapitops.plugin.utilities.Verify;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
@ -27,8 +27,8 @@ public class UsersTable extends UserIDTable {
private final String columnTimesKicked = "times_kicked"; private final String columnTimesKicked = "times_kicked";
private String insertStatement; private String insertStatement;
public UsersTable(SQLDB db, boolean usingMySQL) { public UsersTable(SQLDB db) {
super("plan_users", db, usingMySQL); super("plan_users", db);
statementSelectID = "(" + Select.from(tableName, tableName + "." + columnID).where(columnUUID + "=?").toString() + ")"; statementSelectID = "(" + Select.from(tableName, tableName + "." + columnID).where(columnUUID + "=?").toString() + ")";
insertStatement = Insert.values(tableName, insertStatement = Insert.values(tableName,
columnUUID, columnUUID,

View File

@ -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.system.database.databases.SQLDB; import com.djrapitops.plan.system.database.databases.sql.SQLDB;
import com.djrapitops.plan.system.database.processing.ExecStatement; import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
import com.djrapitops.plan.system.database.processing.QueryAllStatement; import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
import com.djrapitops.plan.system.database.processing.QueryStatement; import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
import com.djrapitops.plan.system.database.sql.Sql; import com.djrapitops.plan.system.database.databases.sql.statements.Sql;
import com.djrapitops.plan.system.database.sql.TableSqlParser; import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
@ -17,8 +17,8 @@ import java.sql.SQLException;
*/ */
public class VersionTable extends Table { public class VersionTable extends Table {
public VersionTable(SQLDB db, boolean usingMySQL) { public VersionTable(SQLDB db) {
super("plan_version", db, usingMySQL); super("plan_version", db);
} }
@Override @Override

View File

@ -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.PlanPlugin;
import com.djrapitops.plan.system.database.databases.SQLDB; import com.djrapitops.plan.api.exceptions.database.DBCreateTableException;
import com.djrapitops.plan.system.database.processing.ExecStatement; import com.djrapitops.plan.system.database.databases.sql.SQLDB;
import com.djrapitops.plan.system.database.processing.QueryAllStatement; import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
import com.djrapitops.plan.system.database.processing.QueryStatement; import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
import com.djrapitops.plan.system.database.sql.Sql; import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
import com.djrapitops.plan.system.database.sql.TableSqlParser; 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 com.djrapitops.plugin.utilities.Verify;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
@ -28,14 +29,8 @@ public class WorldTable extends Table {
private final String columnWorldId = "id"; private final String columnWorldId = "id";
private final String columnWorldName = "world_name"; private final String columnWorldName = "world_name";
/** public WorldTable(SQLDB db) {
* Constructor. super("plan_worlds", db);
*
* @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);
statementSelectID = "(SELECT " + columnWorldId + " FROM " + tableName + " WHERE (" + columnWorldName + "=?))"; statementSelectID = "(SELECT " + columnWorldId + " FROM " + tableName + " WHERE (" + columnWorldName + "=?))";
} }

View File

@ -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.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.container.Session;
import com.djrapitops.plan.data.time.GMTimes; import com.djrapitops.plan.data.time.GMTimes;
import com.djrapitops.plan.data.time.WorldTimes; import com.djrapitops.plan.data.time.WorldTimes;
import com.djrapitops.plan.system.database.databases.SQLDB; import com.djrapitops.plan.system.database.databases.sql.SQLDB;
import com.djrapitops.plan.system.database.processing.ExecStatement; import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
import com.djrapitops.plan.system.database.processing.QueryAllStatement; import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
import com.djrapitops.plan.system.database.processing.QueryStatement; import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
import com.djrapitops.plan.system.database.sql.Sql; import com.djrapitops.plan.system.database.databases.sql.statements.Sql;
import com.djrapitops.plan.system.database.sql.TableSqlParser; import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser;
import com.djrapitops.plugin.utilities.Verify; import com.djrapitops.plugin.utilities.Verify;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
@ -38,14 +38,8 @@ public class WorldTimesTable extends UserIDTable {
private final SessionsTable sessionsTable; private final SessionsTable sessionsTable;
private String insertStatement; private String insertStatement;
/** public WorldTimesTable(SQLDB db) {
* Constructor. super("plan_world_times", db);
*
* @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);
worldTable = db.getWorldTable(); worldTable = db.getWorldTable();
sessionsTable = db.getSessionsTable(); sessionsTable = db.getSessionsTable();
insertStatement = "INSERT INTO " + tableName + " (" + insertStatement = "INSERT INTO " + tableName + " (" +

View File

@ -2,14 +2,14 @@
* Licence is provided in the jar as license.yml also here: * 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 * 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.data.container.UserInfo;
import com.djrapitops.plan.system.database.databases.Database; import com.djrapitops.plan.system.database.databases.sql.SQLDB;
import com.djrapitops.plan.system.database.databases.SQLDB; import com.djrapitops.plan.system.database.databases.sql.tables.ServerTable;
import com.djrapitops.plan.system.database.tables.ServerTable; import com.djrapitops.plan.system.database.databases.sql.tables.Table;
import com.djrapitops.plan.system.database.tables.Table; import com.djrapitops.plan.system.database.databases.sql.tables.UsersTable;
import com.djrapitops.plan.system.database.tables.UsersTable;
import com.djrapitops.plan.systems.info.server.ServerInfo; import com.djrapitops.plan.systems.info.server.ServerInfo;
import com.djrapitops.plugin.api.utility.log.Log; 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 IllegalStateException if database.init has not been called.
* @throws ClassCastException if database is not SQLDB. * @throws ClassCastException if database is not SQLDB.
*/ */
public BatchOperationTable(Database database) { public BatchOperationTable(SQLDB database) {
super("", (SQLDB) database, false); super("", database);
if (!db.isOpen()) { if (!db.isOpen()) {
throw new IllegalStateException("Given Database had not been initialized."); throw new IllegalStateException("Given Database had not been initialized.");
} }
@ -63,7 +63,15 @@ public class BatchOperationTable extends Table {
@Override @Override
public void removeAllData() throws SQLException { 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 { public void copyEverything(BatchOperationTable toDB) throws SQLException {

View File

@ -2,12 +2,12 @@
* Licence is provided in the jar as license.yml also here: * 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 * 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.Plan;
import com.djrapitops.plan.api.exceptions.DBCreateTableException; import com.djrapitops.plan.api.exceptions.database.DBCreateTableException;
import com.djrapitops.plan.system.database.databases.SQLDB; import com.djrapitops.plan.system.database.databases.sql.SQLDB;
import com.djrapitops.plan.system.database.tables.*; import com.djrapitops.plan.system.database.databases.sql.tables.*;
import com.djrapitops.plugin.api.Benchmark; import com.djrapitops.plugin.api.Benchmark;
import java.sql.SQLException; import java.sql.SQLException;

View File

@ -104,14 +104,14 @@ public abstract class Importer {
new ImportExecutorHelper() { new ImportExecutorHelper() {
@Override @Override
void execute() throws SQLException { void execute() {
db.getTpsTable().insertAllTPS(ImmutableMap.of(uuid, serverImportData.getTpsData())); db.getTpsTable().insertAllTPS(ImmutableMap.of(uuid, serverImportData.getTpsData()));
} }
}.submit(service); }.submit(service);
new ImportExecutorHelper() { new ImportExecutorHelper() {
@Override @Override
void execute() throws SQLException { void execute() {
db.getCommandUseTable().insertCommandUsage(ImmutableMap.of(uuid, serverImportData.getCommandUsages())); db.getCommandUseTable().insertCommandUsage(ImmutableMap.of(uuid, serverImportData.getCommandUsages()));
} }
}.submit(service); }.submit(service);
@ -129,7 +129,7 @@ public abstract class Importer {
Benchmark.stop(benchmarkName); Benchmark.stop(benchmarkName);
} }
private void processUserData() throws SQLException { private void processUserData() {
String benchmarkName = "Processing User Data"; String benchmarkName = "Processing User Data";
String getDataBenchmarkName = "Getting User Data"; String getDataBenchmarkName = "Getting User Data";
String insertDataIntoCollectionsBenchmarkName = "Insert User Data into Collections"; String insertDataIntoCollectionsBenchmarkName = "Insert User Data into Collections";
@ -154,8 +154,8 @@ public abstract class Importer {
UUID serverUUID = plugin.getServerInfoManager().getServerUUID(); UUID serverUUID = plugin.getServerInfoManager().getServerUUID();
Database db = plugin.getDB(); Database db = plugin.getDB();
Set<UUID> existingUUIDs = db.getSavedUUIDs(); Set<UUID> existingUUIDs = db.fetch().getSavedUUIDs();
Set<UUID> existingUserInfoTableUUIDs = db.getUserInfoTable().getSavedUUIDs().get(serverUUID); Set<UUID> existingUserInfoTableUUIDs = db.fetch().getSavedUUIDs(serverUUID);
Benchmark.start(insertDataIntoCollectionsBenchmarkName); Benchmark.start(insertDataIntoCollectionsBenchmarkName);
@ -194,35 +194,35 @@ public abstract class Importer {
new ImportExecutorHelper() { new ImportExecutorHelper() {
@Override @Override
void execute() throws SQLException { void execute() {
db.getSessionsTable().insertSessions(ImmutableMap.of(serverUUID, sessions), true); db.getSessionsTable().insertSessions(ImmutableMap.of(serverUUID, sessions), true);
} }
}.submit(service); }.submit(service);
new ImportExecutorHelper() { new ImportExecutorHelper() {
@Override @Override
void execute() throws SQLException { void execute() {
db.getUsersTable().updateKicked(timesKicked); db.getUsersTable().updateKicked(timesKicked);
} }
}.submit(service); }.submit(service);
new ImportExecutorHelper() { new ImportExecutorHelper() {
@Override @Override
void execute() throws SQLException { void execute() {
db.getUserInfoTable().insertUserInfo(ImmutableMap.of(serverUUID, userInfo)); db.getUserInfoTable().insertUserInfo(ImmutableMap.of(serverUUID, userInfo));
} }
}.submit(service); }.submit(service);
new ImportExecutorHelper() { new ImportExecutorHelper() {
@Override @Override
void execute() throws SQLException { void execute() {
db.getNicknamesTable().insertNicknames(ImmutableMap.of(serverUUID, nickNames)); db.getNicknamesTable().insertNicknames(ImmutableMap.of(serverUUID, nickNames));
} }
}.submit(service); }.submit(service);
new ImportExecutorHelper() { new ImportExecutorHelper() {
@Override @Override
void execute() throws SQLException { void execute() {
db.getIpsTable().insertAllGeoInfo(geoInfo); db.getIpsTable().insertAllGeoInfo(geoInfo);
} }
}.submit(service); }.submit(service);

View File

@ -5,7 +5,7 @@
package com.djrapitops.plan.system.processing.processors.player; package com.djrapitops.plan.system.processing.processors.player;
import com.djrapitops.plan.PlanBungee; 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 com.djrapitops.plugin.api.utility.log.Log;
import java.sql.SQLException; import java.sql.SQLException;

View File

@ -6,7 +6,7 @@ package com.djrapitops.plan.system.processing.processors.player;
import com.djrapitops.plan.Plan; import com.djrapitops.plan.Plan;
import com.djrapitops.plan.system.database.databases.Database; 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.system.processing.processors.NewNickActionProcessor;
import com.djrapitops.plan.systems.cache.DataCache; import com.djrapitops.plan.systems.cache.DataCache;
import com.djrapitops.plugin.api.utility.log.Log; import com.djrapitops.plugin.api.utility.log.Log;

View File

@ -8,8 +8,8 @@ import com.djrapitops.plan.Plan;
import com.djrapitops.plan.data.Actions; import com.djrapitops.plan.data.Actions;
import com.djrapitops.plan.data.container.Action; import com.djrapitops.plan.data.container.Action;
import com.djrapitops.plan.system.database.databases.Database; import com.djrapitops.plan.system.database.databases.Database;
import com.djrapitops.plan.system.database.tables.UserInfoTable; import com.djrapitops.plan.system.database.databases.sql.tables.UserInfoTable;
import com.djrapitops.plan.system.database.tables.UsersTable; import com.djrapitops.plan.system.database.databases.sql.tables.UsersTable;
import com.djrapitops.plan.system.processing.processors.Processor; import com.djrapitops.plan.system.processing.processors.Processor;
import com.djrapitops.plugin.api.utility.log.Log; import com.djrapitops.plugin.api.utility.log.Log;

View File

@ -6,6 +6,7 @@ package com.djrapitops.plan.system.webserver.pages;
import com.djrapitops.plan.PlanPlugin; import com.djrapitops.plan.PlanPlugin;
import com.djrapitops.plan.api.exceptions.ParseException; 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.Request;
import com.djrapitops.plan.system.webserver.pagecache.PageId; import com.djrapitops.plan.system.webserver.pagecache.PageId;
import com.djrapitops.plan.system.webserver.pagecache.ResponseCache; import com.djrapitops.plan.system.webserver.pagecache.ResponseCache;
@ -42,7 +43,7 @@ public class PlayerPageHandler extends PageHandler {
return notFound("Player has no UUID"); return notFound("Player has no UUID");
} }
if (PlanPlugin.getInstance().getDB().wasSeenBefore(uuid)) { if (Database.getActive().check().isPlayerRegistered(uuid)) {
PlanPlugin.getInstance().getInfoManager().cachePlayer(uuid); PlanPlugin.getInstance().getInfoManager().cachePlayer(uuid);
Response response = ResponseCache.loadResponse(PageId.PLAYER.of(uuid)); Response response = ResponseCache.loadResponse(PageId.PLAYER.of(uuid));
// TODO Create a new method that places NotFoundResponse to ResponseCache instead. // TODO Create a new method that places NotFoundResponse to ResponseCache instead.

View File

@ -5,7 +5,7 @@
package com.djrapitops.plan.system.webserver.webapi; package com.djrapitops.plan.system.webserver.webapi;
import com.djrapitops.plan.PlanPlugin; 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.settings.Settings;
import com.djrapitops.plan.system.webserver.pagecache.PageId; import com.djrapitops.plan.system.webserver.pagecache.PageId;
import com.djrapitops.plan.system.webserver.pagecache.ResponseCache; import com.djrapitops.plan.system.webserver.pagecache.ResponseCache;

View File

@ -5,7 +5,7 @@
package com.djrapitops.plan.system.webserver.webapi.bukkit; package com.djrapitops.plan.system.webserver.webapi.bukkit;
import com.djrapitops.plan.PlanPlugin; 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.Response;
import com.djrapitops.plan.system.webserver.webapi.WebAPI; import com.djrapitops.plan.system.webserver.webapi.WebAPI;

View File

@ -5,7 +5,7 @@
package com.djrapitops.plan.system.webserver.webapi.bukkit; package com.djrapitops.plan.system.webserver.webapi.bukkit;
import com.djrapitops.plan.PlanPlugin; 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.Response;
import com.djrapitops.plan.system.webserver.webapi.WebAPI; import com.djrapitops.plan.system.webserver.webapi.WebAPI;

View File

@ -7,7 +7,7 @@ package com.djrapitops.plan.system.webserver.webapi.bukkit;
import com.djrapitops.plan.Plan; import com.djrapitops.plan.Plan;
import com.djrapitops.plan.PlanBungee; import com.djrapitops.plan.PlanBungee;
import com.djrapitops.plan.PlanPlugin; 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.settings.ServerSpecificSettings;
import com.djrapitops.plan.system.settings.Settings; import com.djrapitops.plan.system.settings.Settings;
import com.djrapitops.plan.system.webserver.response.Response; import com.djrapitops.plan.system.webserver.response.Response;

View File

@ -5,7 +5,7 @@
package com.djrapitops.plan.system.webserver.webapi.bukkit; package com.djrapitops.plan.system.webserver.webapi.bukkit;
import com.djrapitops.plan.PlanPlugin; 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.Response;
import com.djrapitops.plan.system.webserver.webapi.WebAPI; import com.djrapitops.plan.system.webserver.webapi.WebAPI;

View File

@ -6,7 +6,7 @@ package com.djrapitops.plan.system.webserver.webapi.bukkit;
import com.djrapitops.plan.Plan; import com.djrapitops.plan.Plan;
import com.djrapitops.plan.PlanPlugin; 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.Response;
import com.djrapitops.plan.system.webserver.webapi.WebAPI; import com.djrapitops.plan.system.webserver.webapi.WebAPI;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;

View File

@ -5,7 +5,7 @@
package com.djrapitops.plan.system.webserver.webapi.bukkit; package com.djrapitops.plan.system.webserver.webapi.bukkit;
import com.djrapitops.plan.PlanPlugin; 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.Response;
import com.djrapitops.plan.system.webserver.webapi.WebAPI; import com.djrapitops.plan.system.webserver.webapi.WebAPI;
import com.djrapitops.plan.systems.info.BukkitInformationManager; import com.djrapitops.plan.systems.info.BukkitInformationManager;

View File

@ -5,8 +5,8 @@
package com.djrapitops.plan.system.webserver.webapi.bungee; package com.djrapitops.plan.system.webserver.webapi.bungee;
import com.djrapitops.plan.PlanPlugin; import com.djrapitops.plan.PlanPlugin;
import com.djrapitops.plan.api.exceptions.WebAPIException; import com.djrapitops.plan.api.exceptions.webapi.WebAPIException;
import com.djrapitops.plan.api.exceptions.WebAPINotFoundException; import com.djrapitops.plan.api.exceptions.webapi.WebAPINotFoundException;
import com.djrapitops.plan.system.webserver.response.Response; import com.djrapitops.plan.system.webserver.response.Response;
import com.djrapitops.plan.system.webserver.webapi.WebAPI; import com.djrapitops.plan.system.webserver.webapi.WebAPI;
import com.djrapitops.plan.systems.info.InformationManager; import com.djrapitops.plan.systems.info.InformationManager;

View File

@ -5,7 +5,7 @@
package com.djrapitops.plan.system.webserver.webapi.bungee; package com.djrapitops.plan.system.webserver.webapi.bungee;
import com.djrapitops.plan.PlanPlugin; 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.settings.Settings;
import com.djrapitops.plan.system.webserver.pagecache.PageId; import com.djrapitops.plan.system.webserver.pagecache.PageId;
import com.djrapitops.plan.system.webserver.pagecache.ResponseCache; import com.djrapitops.plan.system.webserver.pagecache.ResponseCache;

View File

@ -5,7 +5,7 @@
package com.djrapitops.plan.system.webserver.webapi.bungee; package com.djrapitops.plan.system.webserver.webapi.bungee;
import com.djrapitops.plan.PlanPlugin; 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.Response;
import com.djrapitops.plan.system.webserver.webapi.WebAPI; import com.djrapitops.plan.system.webserver.webapi.WebAPI;
import com.djrapitops.plan.systems.info.BungeeInformationManager; import com.djrapitops.plan.systems.info.BungeeInformationManager;

View File

@ -6,7 +6,7 @@ package com.djrapitops.plan.system.webserver.webapi.bungee;
import com.djrapitops.plan.PlanPlugin; 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.Response;
import com.djrapitops.plan.system.webserver.webapi.WebAPI; import com.djrapitops.plan.system.webserver.webapi.WebAPI;
import com.djrapitops.plan.systems.info.BungeeInformationManager; import com.djrapitops.plan.systems.info.BungeeInformationManager;

View File

@ -7,7 +7,7 @@ package com.djrapitops.plan.system.webserver.webapi.bungee;
import com.djrapitops.plan.PlanBungee; import com.djrapitops.plan.PlanBungee;
import com.djrapitops.plan.PlanPlugin; 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.settings.Settings;
import com.djrapitops.plan.system.webserver.response.Response; import com.djrapitops.plan.system.webserver.response.Response;
import com.djrapitops.plan.system.webserver.webapi.WebAPI; import com.djrapitops.plan.system.webserver.webapi.WebAPI;

View File

@ -6,7 +6,7 @@ package com.djrapitops.plan.system.webserver.webapi.bungee;
import com.djrapitops.plan.PlanPlugin; 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.processing.processors.Processor;
import com.djrapitops.plan.system.webserver.response.Response; import com.djrapitops.plan.system.webserver.response.Response;
import com.djrapitops.plan.system.webserver.webapi.WebAPI; import com.djrapitops.plan.system.webserver.webapi.WebAPI;

View File

@ -8,7 +8,7 @@ package com.djrapitops.plan.system.webserver.webapi.bungee;
import com.djrapitops.plan.Plan; import com.djrapitops.plan.Plan;
import com.djrapitops.plan.PlanBungee; import com.djrapitops.plan.PlanBungee;
import com.djrapitops.plan.PlanPlugin; 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.Response;
import com.djrapitops.plan.system.webserver.response.errors.ForbiddenResponse; import com.djrapitops.plan.system.webserver.response.errors.ForbiddenResponse;
import com.djrapitops.plan.system.webserver.webapi.WebAPI; import com.djrapitops.plan.system.webserver.webapi.WebAPI;

View File

@ -8,7 +8,7 @@ package com.djrapitops.plan.system.webserver.webapi.universal;
import com.djrapitops.plan.Plan; import com.djrapitops.plan.Plan;
import com.djrapitops.plan.PlanBungee; import com.djrapitops.plan.PlanBungee;
import com.djrapitops.plan.PlanPlugin; 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.Response;
import com.djrapitops.plan.system.webserver.webapi.WebAPI; import com.djrapitops.plan.system.webserver.webapi.WebAPI;
import com.djrapitops.plan.systems.info.BukkitInformationManager; import com.djrapitops.plan.systems.info.BukkitInformationManager;

View File

@ -5,7 +5,11 @@
package com.djrapitops.plan.systems.info; package com.djrapitops.plan.systems.info;
import com.djrapitops.plan.Plan; 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.command.commands.AnalyzeCommand;
import com.djrapitops.plan.data.AnalysisData; import com.djrapitops.plan.data.AnalysisData;
import com.djrapitops.plan.data.element.InspectContainer; import com.djrapitops.plan.data.element.InspectContainer;

View File

@ -7,9 +7,9 @@ package com.djrapitops.plan.systems.info;
import com.djrapitops.plan.PlanBungee; import com.djrapitops.plan.PlanBungee;
import com.djrapitops.plan.PlanPlugin; import com.djrapitops.plan.PlanPlugin;
import com.djrapitops.plan.api.exceptions.ParseException; import com.djrapitops.plan.api.exceptions.ParseException;
import com.djrapitops.plan.api.exceptions.WebAPIConnectionFailException; import com.djrapitops.plan.api.exceptions.webapi.WebAPIConnectionFailException;
import com.djrapitops.plan.api.exceptions.WebAPIException; import com.djrapitops.plan.api.exceptions.webapi.WebAPIException;
import com.djrapitops.plan.api.exceptions.WebAPINotFoundException; import com.djrapitops.plan.api.exceptions.webapi.WebAPINotFoundException;
import com.djrapitops.plan.system.settings.Settings; import com.djrapitops.plan.system.settings.Settings;
import com.djrapitops.plan.system.webserver.pagecache.PageId; import com.djrapitops.plan.system.webserver.pagecache.PageId;
import com.djrapitops.plan.system.webserver.pagecache.ResponseCache; import com.djrapitops.plan.system.webserver.pagecache.ResponseCache;
@ -68,7 +68,7 @@ public class BungeeInformationManager extends InformationManager {
* *
* @throws SQLException If DB Error occurs. * @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())); bukkitServers = plugin.getDB().getServerTable().getBukkitServers().stream().collect(Collectors.toMap(ServerInfo::getUuid, Function.identity()));
} }

View File

@ -61,13 +61,13 @@ public class InspectPageParser extends PageParser {
} }
Log.logDebug("Database", "Inspect Parse Fetch"); Log.logDebug("Database", "Inspect Parse Fetch");
Benchmark.start("Inspect Parse, Fetch"); Benchmark.start("Inspect Parse, Fetch");
Database db = plugin.getDB(); Database db = Database.getActive();
PlayerProfile profile = db.getPlayerProfile(uuid); PlayerProfile profile = db.fetch().getPlayerProfile(uuid);
if (profile == null) { if (profile == null) {
throw new IllegalStateException("Player profile was null!"); throw new IllegalStateException("Player profile was null!");
} }
UUID serverUUID = PlanPlugin.getInstance().getServerUuid(); UUID serverUUID = PlanPlugin.getInstance().getServerUuid();
Map<UUID, String> serverNames = db.getServerTable().getServerNames(); Map<UUID, String> serverNames = db.fetch().getServerNames();
Benchmark.stop("Inspect Parse, Fetch"); Benchmark.stop("Inspect Parse, Fetch");

View File

@ -9,7 +9,7 @@ import com.djrapitops.plan.Plan;
import com.djrapitops.plan.ServerVariableHolder; import com.djrapitops.plan.ServerVariableHolder;
import com.djrapitops.plan.api.exceptions.EnableException; import com.djrapitops.plan.api.exceptions.EnableException;
import com.djrapitops.plan.system.database.databases.Database; 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.plan.system.settings.Settings;
import com.djrapitops.plugin.api.utility.log.Log; import com.djrapitops.plugin.api.utility.log.Log;

View File

@ -7,9 +7,9 @@ package com.djrapitops.plan.systems.info.server;
import com.djrapitops.plan.PlanBungee; import com.djrapitops.plan.PlanBungee;
import com.djrapitops.plan.ServerVariableHolder; import com.djrapitops.plan.ServerVariableHolder;
import com.djrapitops.plan.api.exceptions.EnableException; 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.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.bukkit.ConfigurationWebAPI;
import com.djrapitops.plan.system.webserver.webapi.universal.PingWebAPI; import com.djrapitops.plan.system.webserver.webapi.universal.PingWebAPI;
import com.djrapitops.plugin.api.TimeAmount; import com.djrapitops.plugin.api.TimeAmount;

View File

@ -1,11 +1,13 @@
package com.djrapitops.plan.utilities; package com.djrapitops.plan.utilities;
import com.djrapitops.plan.Plan; 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.DBSystem;
import com.djrapitops.plan.system.database.databases.Database; import com.djrapitops.plan.system.database.databases.Database;
import com.djrapitops.plan.system.database.databases.SQLiteDB; import com.djrapitops.plan.system.database.databases.sql.SQLDB;
import com.djrapitops.plan.system.database.tables.move.BatchOperationTable; 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 com.djrapitops.plugin.api.utility.log.Log;
import java.sql.SQLException; import java.sql.SQLException;
@ -29,7 +31,7 @@ public class ManageUtils {
* @param dbName Name of database (mysql/sqlite) * @param dbName Name of database (mysql/sqlite)
* @param copyFromDB Database you want to backup. * @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(); Plan plugin = Plan.getInstance();
String timeStamp = new Date().toString().substring(4, 10).replace(" ", "-"); String timeStamp = new Date().toString().substring(4, 10).replace(" ", "-");
String fileName = dbName + "-backup-" + timeStamp; String fileName = dbName + "-backup-" + timeStamp;
@ -52,9 +54,9 @@ public class ManageUtils {
public static Collection<UUID> getUUIDS(Database db) { public static Collection<UUID> getUUIDS(Database db) {
final Set<UUID> uuids = new HashSet<>(); final Set<UUID> uuids = new HashSet<>();
try { try {
uuids.addAll(db.getSavedUUIDs()); uuids.addAll(db.fetch().getSavedUUIDs());
} catch (SQLException e) { } catch (DBException e) {
Log.toLog("ManageUtils.getUUIDS", e); Log.toLog(ManageUtils.class, e);
} }
return uuids; return uuids;
} }
@ -67,15 +69,15 @@ public class ManageUtils {
* @param copyFromDB Database where data will be copied from * @param copyFromDB Database where data will be copied from
*/ */
public static void clearAndCopy(Database clearAndCopyToDB, Database copyFromDB) throws SQLException { public static void clearAndCopy(Database clearAndCopyToDB, Database copyFromDB) throws SQLException {
BatchOperationTable toDB = new BatchOperationTable(clearAndCopyToDB); BatchOperationTable toDB = new BatchOperationTable((SQLDB) clearAndCopyToDB);
BatchOperationTable fromDB = new BatchOperationTable(copyFromDB); BatchOperationTable fromDB = new BatchOperationTable((SQLDB) copyFromDB);
toDB.removeAllData(); toDB.removeAllData();
fromDB.copyEverything(toDB); fromDB.copyEverything(toDB);
} }
@Deprecated @Deprecated
public static Database getDB(String dbName) throws DatabaseInitException { public static Database getDB(String dbName) throws DBInitException {
return DBSystem.getActiveDatabase(dbName); return DBSystem.getInstance().getActiveDatabase(dbName);
} }
} }

View File

@ -6,17 +6,18 @@
package com.djrapitops.plan.system.database; package com.djrapitops.plan.system.database;
import com.djrapitops.plan.Plan; 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.Actions;
import com.djrapitops.plan.data.WebUser; import com.djrapitops.plan.data.WebUser;
import com.djrapitops.plan.data.container.*; import com.djrapitops.plan.data.container.*;
import com.djrapitops.plan.data.time.GMTimes; import com.djrapitops.plan.data.time.GMTimes;
import com.djrapitops.plan.data.time.WorldTimes; import com.djrapitops.plan.data.time.WorldTimes;
import com.djrapitops.plan.system.database.databases.Database; import com.djrapitops.plan.system.database.databases.Database;
import com.djrapitops.plan.system.database.databases.MySQLDB; import com.djrapitops.plan.system.database.databases.sql.MySQLDB;
import com.djrapitops.plan.system.database.databases.SQLDB; import com.djrapitops.plan.system.database.databases.sql.SQLDB;
import com.djrapitops.plan.system.database.databases.SQLiteDB; import com.djrapitops.plan.system.database.databases.sql.SQLiteDB;
import com.djrapitops.plan.system.database.tables.*; import com.djrapitops.plan.system.database.databases.sql.tables.*;
import com.djrapitops.plan.system.processing.processors.player.RegisterProcessor; import com.djrapitops.plan.system.processing.processors.player.RegisterProcessor;
import com.djrapitops.plan.systems.cache.DataCache; import com.djrapitops.plan.systems.cache.DataCache;
import com.djrapitops.plan.systems.info.server.ServerInfo; import com.djrapitops.plan.systems.info.server.ServerInfo;
@ -89,7 +90,7 @@ public class DatabaseTest {
} }
@After @After
public void tearDown() throws IOException, SQLException { public void tearDown() throws IOException {
db.close(); db.close();
if (backup != null) { if (backup != null) {
backup.close(); backup.close();
@ -109,7 +110,7 @@ public class DatabaseTest {
} }
@Test @Test
public void testInit() throws DatabaseInitException { public void testInit() throws DBInitException {
db.init(); db.init();
} }
@ -143,7 +144,7 @@ public class DatabaseTest {
} }
@Test(timeout = 3000) @Test(timeout = 3000)
public void testSaveCommandUse() throws SQLException, DatabaseInitException { public void testSaveCommandUse() throws SQLException, DBInitException {
CommandUseTable commandUseTable = db.getCommandUseTable(); CommandUseTable commandUseTable = db.getCommandUseTable();
Map<String, Integer> expected = new HashMap<>(); Map<String, Integer> expected = new HashMap<>();
@ -247,7 +248,7 @@ public class DatabaseTest {
saveUserOne(db); saveUserOne(db);
} }
private void saveUserOne(Database database) throws SQLException { private void saveUserOne(Database database) {
database.getUsersTable().registerUser(uuid, 123456789L, "Test"); database.getUsersTable().registerUser(uuid, 123456789L, "Test");
} }
@ -255,7 +256,7 @@ public class DatabaseTest {
saveUserTwo(db); saveUserTwo(db);
} }
private void saveUserTwo(Database database) throws SQLException { private void saveUserTwo(Database database) {
database.getUsersTable().registerUser(uuid2, 123456789L, "Test"); database.getUsersTable().registerUser(uuid2, 123456789L, "Test");
} }
@ -274,7 +275,7 @@ public class DatabaseTest {
} }
@Test @Test
public void testIPTable() throws SQLException, DatabaseInitException { public void testIPTable() throws SQLException, DBInitException {
saveUserOne(); saveUserOne();
IPsTable ipsTable = db.getIpsTable(); IPsTable ipsTable = db.getIpsTable();
@ -300,7 +301,7 @@ public class DatabaseTest {
} }
@Test @Test
public void testNicknamesTable() throws SQLException, DatabaseInitException { public void testNicknamesTable() throws SQLException, DBInitException {
saveUserOne(); saveUserOne();
NicknamesTable nickTable = db.getNicknamesTable(); NicknamesTable nickTable = db.getNicknamesTable();
@ -318,7 +319,7 @@ public class DatabaseTest {
} }
@Test @Test
public void testSecurityTable() throws SQLException, DatabaseInitException { public void testSecurityTable() throws SQLException, DBInitException {
SecurityTable securityTable = db.getSecurityTable(); SecurityTable securityTable = db.getSecurityTable();
WebUser expected = new WebUser("Test", "RandomGarbageBlah", 0); WebUser expected = new WebUser("Test", "RandomGarbageBlah", 0);
securityTable.addNewUser(expected); securityTable.addNewUser(expected);
@ -341,7 +342,7 @@ public class DatabaseTest {
} }
@Test @Test
public void testWorldTable() throws SQLException, DatabaseInitException { public void testWorldTable() throws SQLException, DBInitException {
WorldTable worldTable = db.getWorldTable(); WorldTable worldTable = db.getWorldTable();
List<String> worlds = Arrays.asList("Test", "Test2", "Test3"); List<String> worlds = Arrays.asList("Test", "Test2", "Test3");
worldTable.saveWorlds(worlds); worldTable.saveWorlds(worlds);
@ -356,7 +357,7 @@ public class DatabaseTest {
saveTwoWorlds(db); saveTwoWorlds(db);
} }
private void saveTwoWorlds(Database database) throws SQLException { private void saveTwoWorlds(Database database) {
database.getWorldTable().saveWorlds(worlds); database.getWorldTable().saveWorlds(worlds);
} }
@ -381,7 +382,7 @@ public class DatabaseTest {
} }
@Test @Test
public void testSessionPlaytimeSaving() throws SQLException, DatabaseInitException { public void testSessionPlaytimeSaving() throws SQLException, DBInitException {
saveTwoWorlds(); saveTwoWorlds();
saveUserOne(); saveUserOne();
saveUserTwo(); saveUserTwo();
@ -411,7 +412,7 @@ public class DatabaseTest {
} }
@Test @Test
public void testSessionSaving() throws SQLException, DatabaseInitException { public void testSessionSaving() throws SQLException, DBInitException {
saveUserOne(); saveUserOne();
saveUserTwo(); saveUserTwo();
@ -452,7 +453,7 @@ public class DatabaseTest {
} }
@Test @Test
public void testUserInfoTableRegisterUnRegistered() throws SQLException, DatabaseInitException { public void testUserInfoTableRegisterUnRegistered() throws SQLException, DBInitException {
UserInfoTable userInfoTable = db.getUserInfoTable(); UserInfoTable userInfoTable = db.getUserInfoTable();
assertFalse(userInfoTable.isRegistered(uuid)); assertFalse(userInfoTable.isRegistered(uuid));
UsersTable usersTable = db.getUsersTable(); UsersTable usersTable = db.getUsersTable();
@ -476,7 +477,7 @@ public class DatabaseTest {
} }
@Test @Test
public void testUserInfoTableRegisterRegistered() throws SQLException, DatabaseInitException { public void testUserInfoTableRegisterRegistered() throws SQLException, DBInitException {
saveUserOne(); saveUserOne();
UsersTable usersTable = db.getUsersTable(); UsersTable usersTable = db.getUsersTable();
assertTrue(usersTable.isRegistered(uuid)); assertTrue(usersTable.isRegistered(uuid));
@ -502,7 +503,7 @@ public class DatabaseTest {
} }
@Test @Test
public void testUserInfoTableUpdateBannedOpped() throws SQLException, DatabaseInitException { public void testUserInfoTableUpdateBannedOpped() throws SQLException, DBInitException {
UserInfoTable userInfoTable = db.getUserInfoTable(); UserInfoTable userInfoTable = db.getUserInfoTable();
userInfoTable.registerUserInfo(uuid, 223456789L); userInfoTable.registerUserInfo(uuid, 223456789L);
assertTrue(userInfoTable.isRegistered(uuid)); assertTrue(userInfoTable.isRegistered(uuid));
@ -532,7 +533,7 @@ public class DatabaseTest {
} }
@Test @Test
public void testUsersTableUpdateName() throws SQLException, DatabaseInitException { public void testUsersTableUpdateName() throws SQLException, DBInitException {
saveUserOne(); saveUserOne();
UsersTable usersTable = db.getUsersTable(); UsersTable usersTable = db.getUsersTable();
@ -549,7 +550,7 @@ public class DatabaseTest {
} }
@Test @Test
public void testUsersTableKickSaving() throws SQLException, DatabaseInitException { public void testUsersTableKickSaving() throws SQLException, DBInitException {
saveUserOne(); saveUserOne();
UsersTable usersTable = db.getUsersTable(); UsersTable usersTable = db.getUsersTable();
assertEquals(0, usersTable.getTimesKicked(uuid)); assertEquals(0, usersTable.getTimesKicked(uuid));
@ -564,7 +565,7 @@ public class DatabaseTest {
} }
@Test @Test
public void testRemovalSingleUser() throws SQLException { public void testRemovalSingleUser() throws SQLException, DBException {
saveUserTwo(); saveUserTwo();
UserInfoTable userInfoTable = db.getUserInfoTable(); UserInfoTable userInfoTable = db.getUserInfoTable();
@ -589,7 +590,7 @@ public class DatabaseTest {
assertTrue(usersTable.isRegistered(uuid)); assertTrue(usersTable.isRegistered(uuid));
db.removeAccount(uuid); db.remove().player(uuid);
assertFalse(usersTable.isRegistered(uuid)); assertFalse(usersTable.isRegistered(uuid));
assertFalse(userInfoTable.isRegistered(uuid)); assertFalse(userInfoTable.isRegistered(uuid));
@ -600,7 +601,7 @@ public class DatabaseTest {
} }
@Test @Test
public void testRemovalEverything() throws SQLException { public void testRemovalEverything() throws SQLException, DBException {
UserInfoTable userInfoTable = db.getUserInfoTable(); UserInfoTable userInfoTable = db.getUserInfoTable();
UsersTable usersTable = db.getUsersTable(); UsersTable usersTable = db.getUsersTable();
SessionsTable sessionsTable = db.getSessionsTable(); SessionsTable sessionsTable = db.getSessionsTable();
@ -612,7 +613,7 @@ public class DatabaseTest {
saveAllData(db); saveAllData(db);
db.removeAllData(); db.remove().everything();
assertFalse(usersTable.isRegistered(uuid)); assertFalse(usersTable.isRegistered(uuid));
assertFalse(usersTable.isRegistered(uuid2)); assertFalse(usersTable.isRegistered(uuid2));
@ -687,7 +688,7 @@ public class DatabaseTest {
} }
@Test @Test
public void testServerTableBungeeSave() throws SQLException, DatabaseInitException { public void testServerTableBungeeSave() throws SQLException, DBInitException {
ServerTable serverTable = db.getServerTable(); ServerTable serverTable = db.getServerTable();
Optional<ServerInfo> bungeeInfo = serverTable.getBungeeInfo(); Optional<ServerInfo> bungeeInfo = serverTable.getBungeeInfo();
@ -711,7 +712,7 @@ public class DatabaseTest {
} }
@Test @Test
public void testServerTableBungee() throws SQLException, DatabaseInitException { public void testServerTableBungee() throws SQLException, DBInitException {
testServerTableBungeeSave(); testServerTableBungeeSave();
ServerTable serverTable = db.getServerTable(); ServerTable serverTable = db.getServerTable();
@ -720,18 +721,18 @@ public class DatabaseTest {
} }
@Test @Test
public void testSessionTableNPEWhenNoPlayers() throws SQLException { public void testSessionTableNPEWhenNoPlayers() {
Map<UUID, Long> lastSeen = db.getSessionsTable().getLastSeenForAllPlayers(); Map<UUID, Long> lastSeen = db.getSessionsTable().getLastSeenForAllPlayers();
assertTrue(lastSeen.isEmpty()); assertTrue(lastSeen.isEmpty());
} }
private void commitTest() throws DatabaseInitException, SQLException { private void commitTest() throws DBInitException {
db.close(); db.close();
db.init(); db.init();
} }
@Test @Test
public void testSessionTableGetInfoOfServer() throws SQLException, DatabaseInitException { public void testSessionTableGetInfoOfServer() throws SQLException, DBInitException {
saveUserOne(); saveUserOne();
saveUserTwo(); saveUserTwo();
@ -758,7 +759,7 @@ public class DatabaseTest {
} }
@Test @Test
public void testKillTableGetKillsOfServer() throws SQLException, DatabaseInitException { public void testKillTableGetKillsOfServer() throws SQLException, DBInitException {
saveUserOne(); saveUserOne();
saveUserTwo(); saveUserTwo();
@ -777,7 +778,7 @@ public class DatabaseTest {
} }
@Test @Test
public void testBackupAndRestore() throws SQLException, DatabaseInitException { public void testBackupAndRestore() throws SQLException, DBInitException {
SQLiteDB backup = new SQLiteDB("debug-backup" + MiscUtils.getTime()); SQLiteDB backup = new SQLiteDB("debug-backup" + MiscUtils.getTime());
backup.init(); backup.init();
@ -872,7 +873,7 @@ public class DatabaseTest {
} }
@Test @Test
public void testRegisterProcessorRegisterException() throws SQLException { public void testRegisterProcessorRegisterException() {
assertFalse(db.getUsersTable().isRegistered(uuid)); assertFalse(db.getUsersTable().isRegistered(uuid));
assertFalse(db.getUserInfoTable().isRegistered(uuid)); assertFalse(db.getUserInfoTable().isRegistered(uuid));
for (int i = 0; i < 200; i++) { for (int i = 0; i < 200; i++) {
@ -883,7 +884,7 @@ public class DatabaseTest {
} }
@Test @Test
public void testWorldTableGetWorldNamesNoException() throws SQLException { public void testWorldTableGetWorldNamesNoException() {
Set<String> worldNames = db.getWorldTable().getWorldNames(); Set<String> worldNames = db.getWorldTable().getWorldNames();
} }
} }

View File

@ -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 com.djrapitops.plan.data.Actions;
import org.junit.Test; import org.junit.Test;

Some files were not shown because too many files have changed in this diff Show More