mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2024-09-19 02:01:04 +02:00
Progress on database refactoring
This commit is contained in:
parent
8cfaf54cb0
commit
65b45ce92c
@ -4,12 +4,12 @@
|
||||
*/
|
||||
package com.djrapitops.plan;
|
||||
|
||||
import com.djrapitops.plan.api.exceptions.DatabaseInitException;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBInitException;
|
||||
import com.djrapitops.plan.data.Actions;
|
||||
import com.djrapitops.plan.data.container.Action;
|
||||
import com.djrapitops.plan.data.container.Session;
|
||||
import com.djrapitops.plan.system.database.databases.SQLDB;
|
||||
import com.djrapitops.plan.system.database.tables.SessionsTable;
|
||||
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
|
||||
import com.djrapitops.plan.system.database.databases.sql.tables.SessionsTable;
|
||||
import com.djrapitops.plan.systems.cache.DataCache;
|
||||
import com.djrapitops.plan.systems.cache.SessionCache;
|
||||
import com.djrapitops.plan.utilities.MiscUtils;
|
||||
@ -58,7 +58,7 @@ public class ShutdownHook extends Thread {
|
||||
|
||||
saveFirstSessionInformation(now);
|
||||
saveActiveSessions(activeSessions, now);
|
||||
} catch (DatabaseInitException e) {
|
||||
} catch (DBInitException e) {
|
||||
Log.toLog(this.getClass().getName(), e);
|
||||
} finally {
|
||||
if (db != null) {
|
||||
|
@ -2,8 +2,10 @@ package com.djrapitops.plan.api;
|
||||
|
||||
import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.api.exceptions.ParseException;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||
import com.djrapitops.plan.data.AnalysisData;
|
||||
import com.djrapitops.plan.data.plugin.PluginData;
|
||||
import com.djrapitops.plan.system.database.databases.Database;
|
||||
import com.djrapitops.plan.systems.info.BukkitInformationManager;
|
||||
import com.djrapitops.plan.utilities.uuid.UUIDUtility;
|
||||
import com.djrapitops.plugin.utilities.Verify;
|
||||
@ -11,6 +13,7 @@ import org.bukkit.OfflinePlayer;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.UUID;
|
||||
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
@ -198,7 +201,7 @@ public class API {
|
||||
* @throws IllegalArgumentException If uuid is null.
|
||||
* @throws IllegalStateException If the player has not played on the server before.
|
||||
*/
|
||||
public String getPlayerName(UUID uuid) throws SQLException {
|
||||
public String getPlayerName(UUID uuid) {
|
||||
Verify.nullCheck(uuid);
|
||||
String playerName = plugin.getDB().getUsersTable().getPlayerName(uuid);
|
||||
if (playerName != null) {
|
||||
@ -248,7 +251,11 @@ public class API {
|
||||
* @throws SQLException If database error occurs.
|
||||
* @since 3.4.2
|
||||
*/
|
||||
public Collection<UUID> getSavedUUIDs() throws SQLException {
|
||||
return plugin.getDB().getSavedUUIDs();
|
||||
public Collection<UUID> getSavedUUIDs() {
|
||||
try {
|
||||
return Database.getActive().fetch().getSavedUUIDs();
|
||||
} catch (DBException e) {
|
||||
return Collections.EMPTY_SET;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5,6 +5,10 @@
|
||||
package com.djrapitops.plan.api;
|
||||
|
||||
import com.djrapitops.plan.data.plugin.PluginData;
|
||||
import com.djrapitops.plan.system.database.databases.operation.FetchOperations;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* //TODO Class Javadoc Comment
|
||||
@ -18,4 +22,8 @@ public interface PlanAPI {
|
||||
}
|
||||
|
||||
void registerPluginData(PluginData pluginData);
|
||||
|
||||
Map<UUID, String> getKnownUsernames();
|
||||
|
||||
FetchOperations fetchFromPlanDB();
|
||||
}
|
@ -2,14 +2,14 @@
|
||||
* Licence is provided in the jar as license.yml also here:
|
||||
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||
*/
|
||||
package com.djrapitops.plan.api.exceptions;
|
||||
package com.djrapitops.plan.api.exceptions.database;
|
||||
|
||||
/**
|
||||
* Thrown when something goes wrong with creating tables with {@code Table#createTable}.
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class DBCreateTableException extends DatabaseInitException {
|
||||
public class DBCreateTableException extends DBInitException {
|
||||
|
||||
public DBCreateTableException(String tableName, String message, Throwable cause) {
|
||||
super(tableName + ": " + message, cause);
|
@ -2,24 +2,24 @@
|
||||
* Licence is provided in the jar as license.yml also here:
|
||||
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||
*/
|
||||
package com.djrapitops.plan.api.exceptions;
|
||||
package com.djrapitops.plan.api.exceptions.database;
|
||||
|
||||
/**
|
||||
* Thrown when something goes wrong with the Database, generic exception.
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class DatabaseException extends Exception {
|
||||
public class DBException extends Exception {
|
||||
|
||||
public DatabaseException(String message, Throwable cause) {
|
||||
public DBException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public DatabaseException(Throwable cause) {
|
||||
public DBException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public DatabaseException(String message) {
|
||||
public DBException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
@ -2,24 +2,24 @@
|
||||
* Licence is provided in the jar as license.yml also here:
|
||||
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||
*/
|
||||
package com.djrapitops.plan.api.exceptions;
|
||||
package com.djrapitops.plan.api.exceptions.database;
|
||||
|
||||
/**
|
||||
* Thrown when something goes wrong with {@code Database#init}.
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class DatabaseInitException extends DatabaseException {
|
||||
public class DBInitException extends FatalDBException {
|
||||
|
||||
public DatabaseInitException(String message, Throwable cause) {
|
||||
public DBInitException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public DatabaseInitException(Throwable cause) {
|
||||
public DBInitException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public DatabaseInitException(String message) {
|
||||
public DBInitException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
package com.djrapitops.plan.api.exceptions;
|
||||
package com.djrapitops.plan.api.exceptions.database;
|
||||
|
||||
public class DBNoDataException extends DatabaseException {
|
||||
public class DBNoDataException extends DBException {
|
||||
|
||||
public DBNoDataException(String message, Throwable cause) {
|
||||
super(message, cause);
|
@ -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);
|
||||
}
|
||||
}
|
@ -2,7 +2,7 @@
|
||||
* Licence is provided in the jar as license.yml also here:
|
||||
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||
*/
|
||||
package com.djrapitops.plan.api.exceptions;
|
||||
package com.djrapitops.plan.api.exceptions.webapi;
|
||||
|
||||
/**
|
||||
* Thrown when WebAPI fails to connect to an address.
|
@ -2,7 +2,7 @@
|
||||
* Licence is provided in the jar as license.yml also here:
|
||||
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||
*/
|
||||
package com.djrapitops.plan.api.exceptions;
|
||||
package com.djrapitops.plan.api.exceptions.webapi;
|
||||
|
||||
/**
|
||||
* Thrown when WebAPI POST-request fails, general Exception.
|
@ -2,7 +2,7 @@
|
||||
* Licence is provided in the jar as license.yml also here:
|
||||
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||
*/
|
||||
package com.djrapitops.plan.api.exceptions;
|
||||
package com.djrapitops.plan.api.exceptions.webapi;
|
||||
|
||||
/**
|
||||
* Group of WebAPIExceptions that can be considered a failed connection state on some occasions.
|
@ -2,7 +2,7 @@
|
||||
* Licence is provided in the jar as license.yml also here:
|
||||
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||
*/
|
||||
package com.djrapitops.plan.api.exceptions;
|
||||
package com.djrapitops.plan.api.exceptions.webapi;
|
||||
|
||||
/**
|
||||
* Thrown when WebAPI gets a 403 response.
|
@ -2,7 +2,7 @@
|
||||
* Licence is provided in the jar as license.yml also here:
|
||||
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||
*/
|
||||
package com.djrapitops.plan.api.exceptions;
|
||||
package com.djrapitops.plan.api.exceptions.webapi;
|
||||
|
||||
/**
|
||||
* Thrown when WebAPI returns 404, usually when response is supposed to be false.
|
@ -2,7 +2,7 @@
|
||||
* Licence is provided in the jar as license.yml also here:
|
||||
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||
*/
|
||||
package com.djrapitops.plan.api.exceptions;
|
||||
package com.djrapitops.plan.api.exceptions.webapi;
|
||||
|
||||
/**
|
||||
* Thrown when WebAPI returns 404, usually when response is supposed to be false.
|
@ -1,12 +1,5 @@
|
||||
package com.djrapitops.plan.command;
|
||||
|
||||
import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.PlanBungee;
|
||||
import com.djrapitops.plugin.api.Check;
|
||||
import com.djrapitops.plugin.utilities.Verify;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* This class contains methods used by commands
|
||||
*
|
||||
@ -21,23 +14,4 @@ public class ConditionUtils {
|
||||
private ConditionUtils() {
|
||||
throw new IllegalStateException("Utility class");
|
||||
}
|
||||
|
||||
/**
|
||||
* Condition if the player has played.
|
||||
*
|
||||
* @param uuid UUID of player
|
||||
* @return has the player played before, false if uuid is null.
|
||||
*/
|
||||
public static boolean playerHasPlayed(UUID uuid) {
|
||||
if (Verify.containsNull(uuid)) {
|
||||
return false;
|
||||
}
|
||||
boolean hasPlayed;
|
||||
if (Check.isBukkitAvailable()) {
|
||||
hasPlayed = Plan.getInstance().getServer().getOfflinePlayer(uuid).hasPlayedBefore();
|
||||
} else {
|
||||
hasPlayed = PlanBungee.getInstance().getDB().wasSeenBefore(uuid);
|
||||
}
|
||||
return hasPlayed;
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,7 @@
|
||||
package com.djrapitops.plan.command.commands;
|
||||
|
||||
import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.api.exceptions.WebAPIException;
|
||||
import com.djrapitops.plan.api.exceptions.webapi.WebAPIException;
|
||||
import com.djrapitops.plan.settings.locale.Locale;
|
||||
import com.djrapitops.plan.settings.locale.Msg;
|
||||
import com.djrapitops.plan.system.webserver.webapi.WebAPI;
|
||||
|
@ -1,9 +1,11 @@
|
||||
package com.djrapitops.plan.command.commands;
|
||||
|
||||
import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.command.ConditionUtils;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||
import com.djrapitops.plan.api.exceptions.database.FatalDBException;
|
||||
import com.djrapitops.plan.settings.locale.Locale;
|
||||
import com.djrapitops.plan.settings.locale.Msg;
|
||||
import com.djrapitops.plan.system.database.databases.Database;
|
||||
import com.djrapitops.plan.system.processing.processors.info.InspectCacheRequestProcessor;
|
||||
import com.djrapitops.plan.system.settings.Permissions;
|
||||
import com.djrapitops.plan.utilities.Condition;
|
||||
@ -19,7 +21,6 @@ import com.djrapitops.plugin.task.RunnableFactory;
|
||||
import com.djrapitops.plugin.utilities.Verify;
|
||||
import org.bukkit.ChatColor;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
@ -66,26 +67,29 @@ public class InspectCommand extends SubCommand {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
Database activeDB = Database.getActive();
|
||||
UUID uuid = UUIDUtility.getUUIDOf(playerName);
|
||||
if (!Condition.isTrue(Verify.notNull(uuid), Locale.get(Msg.CMD_FAIL_USERNAME_NOT_VALID).toString(), sender)) {
|
||||
return;
|
||||
}
|
||||
if (!Condition.isTrue(ConditionUtils.playerHasPlayed(uuid), Locale.get(Msg.CMD_FAIL_USERNAME_NOT_SEEN).toString(), sender)) {
|
||||
return;
|
||||
}
|
||||
if (!Condition.isTrue(plugin.getDB().wasSeenBefore(uuid), Locale.get(Msg.CMD_FAIL_USERNAME_NOT_KNOWN).toString(), sender)) {
|
||||
if (!Condition.isTrue(activeDB.check().isPlayerRegistered(uuid), Locale.get(Msg.CMD_FAIL_USERNAME_NOT_KNOWN).toString(), sender)) {
|
||||
return;
|
||||
}
|
||||
if (CommandUtils.isPlayer(sender) && plugin.getWebServer().isAuthRequired()) {
|
||||
boolean senderHasWebUser = plugin.getDB().getSecurityTable().userExists(sender.getName());
|
||||
boolean senderHasWebUser = activeDB.check().doesWebUserExists(sender.getName());
|
||||
|
||||
if (!senderHasWebUser) {
|
||||
sender.sendMessage(ChatColor.YELLOW + "[Plan] You might not have a web user, use /plan register <password>");
|
||||
}
|
||||
}
|
||||
|
||||
plugin.addToProcessQueue(new InspectCacheRequestProcessor(uuid, sender, playerName));
|
||||
} catch (SQLException ex) {
|
||||
Log.toLog(this.getClass().getName(), ex);
|
||||
} catch (DBException ex) {
|
||||
if (ex instanceof FatalDBException) {
|
||||
Log.toLog(this.getClass().getName(), ex);
|
||||
sender.sendMessage(ChatColor.RED + "Fatal database exception occurred: " + ex.getMessage());
|
||||
} else {
|
||||
sender.sendMessage(ChatColor.YELLOW + "Non-Fatal database exception occurred: " + ex.getMessage());
|
||||
}
|
||||
} finally {
|
||||
this.cancel();
|
||||
}
|
||||
|
@ -1,10 +1,12 @@
|
||||
package com.djrapitops.plan.command.commands;
|
||||
|
||||
import com.djrapitops.plan.PlanPlugin;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||
import com.djrapitops.plan.data.PlayerProfile;
|
||||
import com.djrapitops.plan.data.element.ActivityIndex;
|
||||
import com.djrapitops.plan.settings.locale.Locale;
|
||||
import com.djrapitops.plan.settings.locale.Msg;
|
||||
import com.djrapitops.plan.system.database.databases.Database;
|
||||
import com.djrapitops.plan.system.settings.Permissions;
|
||||
import com.djrapitops.plan.utilities.Condition;
|
||||
import com.djrapitops.plan.utilities.FormatUtils;
|
||||
@ -20,7 +22,6 @@ import com.djrapitops.plugin.task.AbsRunnable;
|
||||
import com.djrapitops.plugin.task.RunnableFactory;
|
||||
import com.djrapitops.plugin.utilities.Verify;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
@ -71,15 +72,16 @@ public class QInspectCommand extends SubCommand {
|
||||
if (!Condition.isTrue(Verify.notNull(uuid), Locale.get(Msg.CMD_FAIL_USERNAME_NOT_VALID).toString(), sender)) {
|
||||
return;
|
||||
}
|
||||
if (!Condition.isTrue(plugin.getDB().wasSeenBefore(uuid), Locale.get(Msg.CMD_FAIL_USERNAME_NOT_KNOWN).toString(), sender)) {
|
||||
Database database = Database.getActive();
|
||||
if (!Condition.isTrue(database.check().isPlayerRegistered(uuid), Locale.get(Msg.CMD_FAIL_USERNAME_NOT_KNOWN).toString(), sender)) {
|
||||
return;
|
||||
}
|
||||
|
||||
PlayerProfile playerProfile = plugin.getDB().getPlayerProfile(uuid);
|
||||
PlayerProfile playerProfile = database.fetch().getPlayerProfile(uuid);
|
||||
|
||||
sendMsgs(sender, playerProfile);
|
||||
|
||||
} catch (SQLException ex) {
|
||||
} catch (DBException ex) {
|
||||
Log.toLog(this.getClass().getName(), ex);
|
||||
} finally {
|
||||
this.cancel();
|
||||
|
@ -4,7 +4,7 @@ import com.djrapitops.plan.PlanPlugin;
|
||||
import com.djrapitops.plan.data.WebUser;
|
||||
import com.djrapitops.plan.settings.locale.Locale;
|
||||
import com.djrapitops.plan.settings.locale.Msg;
|
||||
import com.djrapitops.plan.system.database.tables.SecurityTable;
|
||||
import com.djrapitops.plan.system.database.databases.sql.tables.SecurityTable;
|
||||
import com.djrapitops.plan.system.settings.Permissions;
|
||||
import com.djrapitops.plan.utilities.Condition;
|
||||
import com.djrapitops.plan.utilities.PassEncryptUtil;
|
||||
|
@ -1,7 +1,7 @@
|
||||
package com.djrapitops.plan.command.commands.manage;
|
||||
|
||||
import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.api.exceptions.DatabaseInitException;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBInitException;
|
||||
import com.djrapitops.plan.settings.locale.Locale;
|
||||
import com.djrapitops.plan.settings.locale.Msg;
|
||||
import com.djrapitops.plan.system.database.databases.Database;
|
||||
@ -63,7 +63,7 @@ public class ManageBackupCommand extends SubCommand {
|
||||
}
|
||||
Log.debug("Backup", "Start");
|
||||
runBackupTask(sender, args, database);
|
||||
} catch (DatabaseInitException | NullPointerException e) {
|
||||
} catch (DBInitException | NullPointerException e) {
|
||||
sender.sendMessage(Locale.get(Msg.MANAGE_FAIL_FAULTY_DB).toString());
|
||||
} finally {
|
||||
Log.logDebug("Backup");
|
||||
|
@ -1,7 +1,8 @@
|
||||
package com.djrapitops.plan.command.commands.manage;
|
||||
|
||||
import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.api.exceptions.DatabaseInitException;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBInitException;
|
||||
import com.djrapitops.plan.data.container.Session;
|
||||
import com.djrapitops.plan.settings.locale.Locale;
|
||||
import com.djrapitops.plan.settings.locale.Msg;
|
||||
@ -20,8 +21,6 @@ import com.djrapitops.plugin.task.AbsRunnable;
|
||||
import com.djrapitops.plugin.task.RunnableFactory;
|
||||
import com.djrapitops.plugin.utilities.Verify;
|
||||
|
||||
import java.sql.SQLException;
|
||||
|
||||
/**
|
||||
* This manage subcommand is used to clear a database of all data.
|
||||
*
|
||||
@ -73,7 +72,7 @@ public class ManageClearCommand extends SubCommand {
|
||||
try {
|
||||
Database database = ManageUtils.getDB(dbName);
|
||||
runClearTask(sender, database);
|
||||
} catch (DatabaseInitException e) {
|
||||
} catch (DBInitException e) {
|
||||
sender.sendMessage(Locale.get(Msg.MANAGE_FAIL_FAULTY_DB).toString());
|
||||
}
|
||||
return true;
|
||||
@ -86,7 +85,7 @@ public class ManageClearCommand extends SubCommand {
|
||||
try {
|
||||
sender.sendMessage(Locale.get(Msg.MANAGE_INFO_START).parse());
|
||||
|
||||
database.removeAllData();
|
||||
database.remove().everything();
|
||||
|
||||
DataCache dataCache = plugin.getDataCache();
|
||||
long now = MiscUtils.getTime();
|
||||
@ -96,7 +95,7 @@ public class ManageClearCommand extends SubCommand {
|
||||
new Session(now, player.getWorld().getName(), player.getGameMode().name()))
|
||||
);
|
||||
sender.sendMessage(Locale.get(Msg.MANAGE_INFO_CLEAR_SUCCESS).toString());
|
||||
} catch (SQLException e) {
|
||||
} catch (DBException e) {
|
||||
sender.sendMessage(Locale.get(Msg.MANAGE_INFO_FAIL).toString());
|
||||
Log.toLog(this.getClass().getSimpleName() + "/" + this.getTaskName(), e);
|
||||
} finally {
|
||||
|
@ -76,7 +76,6 @@ public class ManageHotswapCommand extends SubCommand {
|
||||
|
||||
assert database != null;
|
||||
|
||||
|
||||
database.getVersion(); //Test db connection
|
||||
} catch (Exception e) {
|
||||
Log.toLog(this.getClass().getName(), e);
|
||||
|
@ -1,9 +1,11 @@
|
||||
package com.djrapitops.plan.command.commands.manage;
|
||||
|
||||
import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||
import com.djrapitops.plan.data.container.Session;
|
||||
import com.djrapitops.plan.settings.locale.Locale;
|
||||
import com.djrapitops.plan.settings.locale.Msg;
|
||||
import com.djrapitops.plan.system.database.databases.Database;
|
||||
import com.djrapitops.plan.system.settings.Permissions;
|
||||
import com.djrapitops.plan.systems.cache.DataCache;
|
||||
import com.djrapitops.plan.systems.cache.SessionCache;
|
||||
@ -19,7 +21,6 @@ import com.djrapitops.plugin.task.RunnableFactory;
|
||||
import com.djrapitops.plugin.utilities.Verify;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.UUID;
|
||||
|
||||
import static org.bukkit.Bukkit.getPlayer;
|
||||
@ -80,7 +81,8 @@ public class ManageRemoveCommand extends SubCommand {
|
||||
}
|
||||
|
||||
message = Locale.get(Msg.CMD_FAIL_USERNAME_NOT_KNOWN).toString();
|
||||
if (!Condition.isTrue(plugin.getDB().wasSeenBefore(uuid), message, sender)) {
|
||||
Database database = Database.getActive();
|
||||
if (!Condition.isTrue(database.check().isPlayerRegistered(uuid), message, sender)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -90,20 +92,19 @@ public class ManageRemoveCommand extends SubCommand {
|
||||
}
|
||||
|
||||
sender.sendMessage(Locale.get(Msg.MANAGE_INFO_START).parse());
|
||||
try {
|
||||
plugin.getDB().removeAccount(uuid);
|
||||
|
||||
DataCache dataCache = plugin.getDataCache();
|
||||
Player player = getPlayer(uuid);
|
||||
if (player != null) {
|
||||
SessionCache.getActiveSessions().remove(uuid);
|
||||
dataCache.cacheSession(uuid, new Session(MiscUtils.getTime(), player.getWorld().getName(), player.getGameMode().name()));
|
||||
}
|
||||
sender.sendMessage(Locale.get(Msg.MANAGE_INFO_REMOVE_SUCCESS).parse(playerName, plugin.getDB().getConfigName()));
|
||||
} catch (SQLException e) {
|
||||
Log.toLog(this.getClass().getName(), e);
|
||||
sender.sendMessage(Locale.get(Msg.MANAGE_INFO_FAIL).toString());
|
||||
database.remove().player(uuid);
|
||||
|
||||
DataCache dataCache = plugin.getDataCache();
|
||||
Player player = getPlayer(uuid);
|
||||
if (player != null) {
|
||||
SessionCache.getActiveSessions().remove(uuid);
|
||||
dataCache.cacheSession(uuid, new Session(MiscUtils.getTime(), player.getWorld().getName(), player.getGameMode().name()));
|
||||
}
|
||||
sender.sendMessage(Locale.get(Msg.MANAGE_INFO_REMOVE_SUCCESS).parse(playerName, plugin.getDB().getConfigName()));
|
||||
} catch (DBException e) {
|
||||
Log.toLog(this.getClass().getName(), e);
|
||||
sender.sendMessage(Locale.get(Msg.MANAGE_INFO_FAIL).toString());
|
||||
} finally {
|
||||
this.cancel();
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.settings.locale.Locale;
|
||||
import com.djrapitops.plan.settings.locale.Msg;
|
||||
import com.djrapitops.plan.system.database.databases.Database;
|
||||
import com.djrapitops.plan.system.database.databases.SQLiteDB;
|
||||
import com.djrapitops.plan.system.database.databases.sql.SQLiteDB;
|
||||
import com.djrapitops.plan.system.settings.Permissions;
|
||||
import com.djrapitops.plan.utilities.Condition;
|
||||
import com.djrapitops.plan.utilities.ManageUtils;
|
||||
|
@ -1,8 +1,8 @@
|
||||
package com.djrapitops.plan.command.commands.manage;
|
||||
|
||||
import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.api.exceptions.WebAPIException;
|
||||
import com.djrapitops.plan.api.exceptions.WebAPIForbiddenException;
|
||||
import com.djrapitops.plan.api.exceptions.webapi.WebAPIException;
|
||||
import com.djrapitops.plan.api.exceptions.webapi.WebAPIForbiddenException;
|
||||
import com.djrapitops.plan.settings.locale.Locale;
|
||||
import com.djrapitops.plan.settings.locale.Msg;
|
||||
import com.djrapitops.plan.system.settings.Permissions;
|
||||
|
@ -4,7 +4,7 @@ import com.djrapitops.plan.PlanPlugin;
|
||||
import com.djrapitops.plan.data.WebUser;
|
||||
import com.djrapitops.plan.settings.locale.Locale;
|
||||
import com.djrapitops.plan.settings.locale.Msg;
|
||||
import com.djrapitops.plan.system.database.tables.SecurityTable;
|
||||
import com.djrapitops.plan.system.database.databases.sql.tables.SecurityTable;
|
||||
import com.djrapitops.plan.system.settings.Permissions;
|
||||
import com.djrapitops.plan.utilities.Condition;
|
||||
import com.djrapitops.plugin.api.utility.log.Log;
|
||||
|
@ -3,7 +3,7 @@ package com.djrapitops.plan.command.commands.webuser;
|
||||
import com.djrapitops.plan.PlanPlugin;
|
||||
import com.djrapitops.plan.settings.locale.Locale;
|
||||
import com.djrapitops.plan.settings.locale.Msg;
|
||||
import com.djrapitops.plan.system.database.tables.SecurityTable;
|
||||
import com.djrapitops.plan.system.database.databases.sql.tables.SecurityTable;
|
||||
import com.djrapitops.plan.system.settings.Permissions;
|
||||
import com.djrapitops.plan.utilities.Condition;
|
||||
import com.djrapitops.plugin.api.utility.log.Log;
|
||||
|
@ -4,9 +4,9 @@
|
||||
*/
|
||||
package com.djrapitops.plan.system.database;
|
||||
|
||||
import com.djrapitops.plan.api.exceptions.DatabaseInitException;
|
||||
import com.djrapitops.plan.system.database.databases.MySQLDB;
|
||||
import com.djrapitops.plan.system.database.databases.SQLiteDB;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBInitException;
|
||||
import com.djrapitops.plan.system.database.databases.sql.MySQLDB;
|
||||
import com.djrapitops.plan.system.database.databases.sql.SQLiteDB;
|
||||
import com.djrapitops.plan.system.settings.Settings;
|
||||
|
||||
/**
|
||||
@ -17,7 +17,7 @@ import com.djrapitops.plan.system.settings.Settings;
|
||||
public class BukkitDBSystem extends DBSystem {
|
||||
|
||||
@Override
|
||||
protected void initDatabase() throws DatabaseInitException {
|
||||
protected void initDatabase() throws DBInitException {
|
||||
databases.add(new MySQLDB());
|
||||
databases.add(new SQLiteDB());
|
||||
|
||||
|
@ -4,8 +4,8 @@
|
||||
*/
|
||||
package com.djrapitops.plan.system.database;
|
||||
|
||||
import com.djrapitops.plan.api.exceptions.DatabaseInitException;
|
||||
import com.djrapitops.plan.system.database.databases.MySQLDB;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBInitException;
|
||||
import com.djrapitops.plan.system.database.databases.sql.MySQLDB;
|
||||
|
||||
/**
|
||||
* //TODO Class Javadoc Comment
|
||||
@ -15,7 +15,7 @@ import com.djrapitops.plan.system.database.databases.MySQLDB;
|
||||
public class BungeeDBSystem extends DBSystem {
|
||||
|
||||
@Override
|
||||
protected void initDatabase() throws DatabaseInitException {
|
||||
protected void initDatabase() throws DBInitException {
|
||||
db = new MySQLDB();
|
||||
databases.add(db);
|
||||
db.init();
|
||||
|
@ -4,14 +4,14 @@
|
||||
*/
|
||||
package com.djrapitops.plan.system.database;
|
||||
|
||||
import com.djrapitops.plan.api.exceptions.DatabaseInitException;
|
||||
import com.djrapitops.plan.api.exceptions.EnableException;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBInitException;
|
||||
import com.djrapitops.plan.settings.locale.Locale;
|
||||
import com.djrapitops.plan.settings.locale.Msg;
|
||||
import com.djrapitops.plan.system.PlanSystem;
|
||||
import com.djrapitops.plan.system.SubSystem;
|
||||
import com.djrapitops.plan.system.database.databases.Database;
|
||||
import com.djrapitops.plan.system.database.databases.SQLDB;
|
||||
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
|
||||
import com.djrapitops.plan.utilities.NullCheck;
|
||||
import com.djrapitops.plugin.api.Benchmark;
|
||||
import com.djrapitops.plugin.api.utility.log.Log;
|
||||
@ -50,12 +50,12 @@ public abstract class DBSystem implements SubSystem {
|
||||
db.scheduleClean(10L);
|
||||
Log.info(Locale.get(Msg.ENABLE_DB_INFO).parse(db.getConfigName()));
|
||||
Benchmark.stop("Systems", "Init Database");
|
||||
} catch (DatabaseInitException e) {
|
||||
} catch (DBInitException e) {
|
||||
throw new EnableException(db.getName() + "-Database failed to initialize", e);
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract void initDatabase() throws DatabaseInitException;
|
||||
protected abstract void initDatabase() throws DBInitException;
|
||||
|
||||
public Set<SQLDB> getDatabases() {
|
||||
return databases;
|
||||
@ -80,14 +80,14 @@ public abstract class DBSystem implements SubSystem {
|
||||
return db;
|
||||
}
|
||||
|
||||
public SQLDB getActiveDatabase(String dbName) throws DatabaseInitException {
|
||||
for (SQLDB database : DBSystem.getInstance().getDatabases()) {
|
||||
public SQLDB getActiveDatabase(String dbName) throws DBInitException {
|
||||
for (SQLDB database : getDatabases()) {
|
||||
String dbConfigName = database.getConfigName();
|
||||
if (Verify.equalsIgnoreCase(dbName, dbConfigName)) {
|
||||
database.init();
|
||||
return database;
|
||||
}
|
||||
}
|
||||
throw new DatabaseInitException(Locale.get(Msg.ENABLE_FAIL_WRONG_DB) + " " + dbName);
|
||||
throw new DBInitException(Locale.get(Msg.ENABLE_FAIL_WRONG_DB) + " " + dbName);
|
||||
}
|
||||
}
|
@ -1,18 +1,14 @@
|
||||
package com.djrapitops.plan.system.database.databases;
|
||||
|
||||
import com.djrapitops.plan.api.exceptions.DatabaseInitException;
|
||||
import com.djrapitops.plan.data.PlayerProfile;
|
||||
import com.djrapitops.plan.data.ServerProfile;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBInitException;
|
||||
import com.djrapitops.plan.system.database.DBSystem;
|
||||
import com.djrapitops.plan.system.database.tables.*;
|
||||
import com.djrapitops.plan.system.database.databases.operation.BackupOperations;
|
||||
import com.djrapitops.plan.system.database.databases.operation.CheckOperations;
|
||||
import com.djrapitops.plan.system.database.databases.operation.FetchOperations;
|
||||
import com.djrapitops.plan.system.database.databases.operation.RemoveOperations;
|
||||
import com.djrapitops.plan.utilities.NullCheck;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* Abstract class representing a Database.
|
||||
* <p>
|
||||
@ -23,42 +19,23 @@ import java.util.UUID;
|
||||
*/
|
||||
public abstract class Database {
|
||||
|
||||
protected UsersTable usersTable;
|
||||
protected UserInfoTable userInfoTable;
|
||||
protected ActionsTable actionsTable;
|
||||
protected KillsTable killsTable;
|
||||
protected NicknamesTable nicknamesTable;
|
||||
protected SessionsTable sessionsTable;
|
||||
protected IPsTable ipsTable;
|
||||
protected CommandUseTable commandUseTable;
|
||||
protected TPSTable tpsTable;
|
||||
protected VersionTable versionTable;
|
||||
protected SecurityTable securityTable;
|
||||
protected WorldTable worldTable;
|
||||
protected WorldTimesTable worldTimesTable;
|
||||
protected ServerTable serverTable;
|
||||
private boolean open;
|
||||
|
||||
public static Database getInstance() {
|
||||
public static Database getActive() {
|
||||
Database database = DBSystem.getInstance().getActiveDatabase();
|
||||
NullCheck.check(database, new IllegalStateException("Database was not initialized."));
|
||||
return database;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initiates the database.
|
||||
*
|
||||
* @throws DatabaseInitException if SQLException or other exception occurs.
|
||||
*/
|
||||
public void init() throws DatabaseInitException {
|
||||
}
|
||||
public abstract void init() throws DBInitException;
|
||||
|
||||
/**
|
||||
* Condition if the user is saved in the database.
|
||||
*
|
||||
* @param uuid UUID of the user.
|
||||
* @return true/false
|
||||
*/
|
||||
public abstract boolean wasSeenBefore(UUID uuid);
|
||||
public abstract BackupOperations backup();
|
||||
|
||||
public abstract CheckOperations check();
|
||||
|
||||
public abstract FetchOperations fetch();
|
||||
|
||||
public abstract RemoveOperations remove();
|
||||
|
||||
/**
|
||||
* Used to get the name of the database type.
|
||||
@ -80,146 +57,9 @@ public abstract class Database {
|
||||
return getName().toLowerCase().trim();
|
||||
}
|
||||
|
||||
public abstract boolean isNewDatabase() throws SQLException;
|
||||
public abstract void close() throws DBException;
|
||||
|
||||
/**
|
||||
* Used to get the database schema version.
|
||||
*
|
||||
* @return Integer starting from 0, incremented by one when schema is
|
||||
* updated.
|
||||
* @throws SQLException If a database error occurs.
|
||||
*/
|
||||
public abstract int getVersion() throws SQLException;
|
||||
|
||||
/**
|
||||
* Used to set the database schema version.
|
||||
*
|
||||
* @param version Integer starting from 0, incremented by one when schema is
|
||||
* updated.
|
||||
* @throws SQLException If a database error occurs.
|
||||
*/
|
||||
public abstract void setVersion(int version) throws SQLException;
|
||||
|
||||
/**
|
||||
* Closes the database and it's resources.
|
||||
*
|
||||
* @throws SQLException If a database error occurs.
|
||||
*/
|
||||
public abstract void close() throws SQLException;
|
||||
|
||||
/**
|
||||
* Returns a connection to the MySQL connection pool.
|
||||
* <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;
|
||||
public boolean isOpen() {
|
||||
return open;
|
||||
}
|
||||
}
|
||||
|
@ -1,11 +1,12 @@
|
||||
package com.djrapitops.plan.system.database.databases.operation;
|
||||
|
||||
import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||
import com.djrapitops.plan.system.database.databases.Database;
|
||||
|
||||
public interface BackupOperations {
|
||||
|
||||
void backup(Database toDatabase);
|
||||
void backup(Database toDatabase) throws DBException;
|
||||
|
||||
void restore(Database fromDatabase) throws DBException;
|
||||
|
||||
void restore(Database fromDatabase);
|
||||
|
||||
}
|
||||
|
@ -1,12 +1,15 @@
|
||||
package com.djrapitops.plan.system.database.databases.operation;
|
||||
|
||||
import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public interface CheckOperations {
|
||||
|
||||
boolean wasSeenBefore(UUID player);
|
||||
boolean isPlayerRegistered(UUID player) throws DBException;
|
||||
|
||||
boolean wasSeenBefore(UUID player, UUID server);
|
||||
|
||||
boolean isPlayerRegistered(UUID player, UUID server) throws DBException;
|
||||
|
||||
boolean doesWebUserExists(String username) throws DBException;
|
||||
|
||||
}
|
||||
|
@ -1,19 +1,22 @@
|
||||
package com.djrapitops.plan.system.database.databases.operation;
|
||||
|
||||
import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||
import com.djrapitops.plan.data.PlayerProfile;
|
||||
import com.djrapitops.plan.data.ServerProfile;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
public interface FetchOperations {
|
||||
|
||||
ServerProfile getServerProfile(UUID serverUUID) throws SQLException;
|
||||
ServerProfile getServerProfile(UUID serverUUID) throws DBException;
|
||||
|
||||
PlayerProfile getPlayerProfile(UUID uuid) throws SQLException;
|
||||
PlayerProfile getPlayerProfile(UUID uuid) throws DBException;
|
||||
|
||||
Set<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;
|
||||
}
|
||||
|
@ -1,19 +1,18 @@
|
||||
package com.djrapitops.plan.system.database.databases.operation;
|
||||
|
||||
import com.djrapitops.plan.api.exceptions.DBNoDataException;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.UUID;
|
||||
|
||||
public interface RemoveOperations {
|
||||
|
||||
void removePlayer(UUID uuid) throws SQLException, DBNoDataException;
|
||||
void player(UUID uuid) throws DBException;
|
||||
|
||||
void removePlayer(UUID player, UUID server) throws SQLException, DBNoDataException;
|
||||
void player(UUID player, UUID server) throws DBException;
|
||||
|
||||
void removeServer(UUID serverUUID) throws SQLException, DBNoDataException;
|
||||
void server(UUID serverUUID) throws DBException;
|
||||
|
||||
void removeAll() throws SQLException, DBNoDataException;
|
||||
void everything() throws DBException;
|
||||
|
||||
void removeWebUser(String name) throws SQLException, DBNoDataException;
|
||||
void webUser(String name) throws DBException;
|
||||
}
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package com.djrapitops.plan.system.database.databases;
|
||||
package com.djrapitops.plan.system.database.databases.sql;
|
||||
|
||||
import com.djrapitops.plan.system.settings.Settings;
|
||||
import com.djrapitops.plugin.api.utility.log.Log;
|
@ -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) {
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +1,16 @@
|
||||
package com.djrapitops.plan.system.database.databases;
|
||||
package com.djrapitops.plan.system.database.databases.sql;
|
||||
|
||||
import com.djrapitops.plan.api.exceptions.DatabaseInitException;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBInitException;
|
||||
import com.djrapitops.plan.data.PlayerProfile;
|
||||
import com.djrapitops.plan.data.ServerProfile;
|
||||
import com.djrapitops.plan.data.container.*;
|
||||
import com.djrapitops.plan.system.database.tables.*;
|
||||
import com.djrapitops.plan.system.database.tables.move.Version8TransferTable;
|
||||
import com.djrapitops.plan.system.database.databases.Database;
|
||||
import com.djrapitops.plan.system.database.databases.operation.BackupOperations;
|
||||
import com.djrapitops.plan.system.database.databases.operation.CheckOperations;
|
||||
import com.djrapitops.plan.system.database.databases.operation.FetchOperations;
|
||||
import com.djrapitops.plan.system.database.databases.operation.RemoveOperations;
|
||||
import com.djrapitops.plan.system.database.databases.sql.tables.*;
|
||||
import com.djrapitops.plan.system.database.databases.sql.tables.move.Version8TransferTable;
|
||||
import com.djrapitops.plan.utilities.MiscUtils;
|
||||
import com.djrapitops.plugin.api.Benchmark;
|
||||
import com.djrapitops.plugin.api.TimeAmount;
|
||||
@ -27,6 +32,26 @@ import java.util.*;
|
||||
*/
|
||||
public abstract class SQLDB extends Database {
|
||||
|
||||
private final UsersTable usersTable;
|
||||
private final UserInfoTable userInfoTable;
|
||||
private final ActionsTable actionsTable;
|
||||
private final KillsTable killsTable;
|
||||
private final NicknamesTable nicknamesTable;
|
||||
private final SessionsTable sessionsTable;
|
||||
private final IPsTable ipsTable;
|
||||
private final CommandUseTable commandUseTable;
|
||||
private final TPSTable tpsTable;
|
||||
private final VersionTable versionTable;
|
||||
private final SecurityTable securityTable;
|
||||
private final WorldTable worldTable;
|
||||
private final WorldTimesTable worldTimesTable;
|
||||
private final ServerTable serverTable;
|
||||
|
||||
private final SQLBackupOps backupOps;
|
||||
private final SQLCheckOps checkOps;
|
||||
private final SQLFetchOps fetchOps;
|
||||
private final SQLRemoveOps removeOps;
|
||||
|
||||
private final boolean usingMySQL;
|
||||
private boolean open = false;
|
||||
private ITask dbCleanTask;
|
||||
@ -34,22 +59,27 @@ public abstract class SQLDB extends Database {
|
||||
public SQLDB() {
|
||||
usingMySQL = getName().equals("MySQL");
|
||||
|
||||
versionTable = new VersionTable(this, usingMySQL);
|
||||
serverTable = new ServerTable(this, usingMySQL);
|
||||
securityTable = new SecurityTable(this, usingMySQL);
|
||||
versionTable = new VersionTable(this);
|
||||
serverTable = new ServerTable(this);
|
||||
securityTable = new SecurityTable(this);
|
||||
|
||||
commandUseTable = new CommandUseTable(this, usingMySQL);
|
||||
tpsTable = new TPSTable(this, usingMySQL);
|
||||
commandUseTable = new CommandUseTable(this);
|
||||
tpsTable = new TPSTable(this);
|
||||
|
||||
usersTable = new UsersTable(this, usingMySQL);
|
||||
userInfoTable = new UserInfoTable(this, usingMySQL);
|
||||
actionsTable = new ActionsTable(this, usingMySQL);
|
||||
ipsTable = new IPsTable(this, usingMySQL);
|
||||
nicknamesTable = new NicknamesTable(this, usingMySQL);
|
||||
sessionsTable = new SessionsTable(this, usingMySQL);
|
||||
killsTable = new KillsTable(this, usingMySQL);
|
||||
worldTable = new WorldTable(this, usingMySQL);
|
||||
worldTimesTable = new WorldTimesTable(this, usingMySQL);
|
||||
usersTable = new UsersTable(this);
|
||||
userInfoTable = new UserInfoTable(this);
|
||||
actionsTable = new ActionsTable(this);
|
||||
ipsTable = new IPsTable(this);
|
||||
nicknamesTable = new NicknamesTable(this);
|
||||
sessionsTable = new SessionsTable(this);
|
||||
killsTable = new KillsTable(this);
|
||||
worldTable = new WorldTable(this);
|
||||
worldTimesTable = new WorldTimesTable(this);
|
||||
|
||||
backupOps = new SQLBackupOps(this);
|
||||
checkOps = new SQLCheckOps(this);
|
||||
fetchOps = new SQLFetchOps(this);
|
||||
removeOps = new SQLRemoveOps(this);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -60,10 +90,10 @@ public abstract class SQLDB extends Database {
|
||||
* Converts Unsaved Bukkit player files to database data.
|
||||
* Cleans the database.
|
||||
*
|
||||
* @throws DatabaseInitException if Database fails to initiate.
|
||||
* @throws DBInitException if Database fails to initiate.
|
||||
*/
|
||||
@Override
|
||||
public void init() throws DatabaseInitException {
|
||||
public void init() throws DBInitException {
|
||||
setStatus("Init");
|
||||
String benchName = "Init " + getConfigName();
|
||||
Benchmark.start("Database", benchName);
|
||||
@ -99,9 +129,9 @@ public abstract class SQLDB extends Database {
|
||||
* <p>
|
||||
* Updates to latest schema.
|
||||
*
|
||||
* @throws DatabaseInitException if something goes wrong.
|
||||
* @throws DBInitException if something goes wrong.
|
||||
*/
|
||||
public void setupDatabase() throws DatabaseInitException {
|
||||
public void setupDatabase() throws DBInitException {
|
||||
try {
|
||||
boolean newDatabase = isNewDatabase();
|
||||
|
||||
@ -122,7 +152,7 @@ public abstract class SQLDB extends Database {
|
||||
public void run() {
|
||||
try {
|
||||
new Version8TransferTable(db, isUsingMySQL()).alterTablesToV10();
|
||||
} catch (DatabaseInitException | SQLException e) {
|
||||
} catch (DBInitException | SQLException e) {
|
||||
Log.toLog(this.getClass().getName(), e);
|
||||
}
|
||||
}
|
||||
@ -142,7 +172,7 @@ public abstract class SQLDB extends Database {
|
||||
setVersion(13);
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new DatabaseInitException("Failed to set-up Database", e);
|
||||
throw new DBInitException("Failed to set-up Database", e);
|
||||
}
|
||||
}
|
||||
|
||||
@ -151,7 +181,7 @@ public abstract class SQLDB extends Database {
|
||||
* <p>
|
||||
* Updates table columns to latest schema.
|
||||
*/
|
||||
private void createTables() throws DatabaseInitException {
|
||||
private void createTables() throws DBInitException {
|
||||
Benchmark.start("Database", "Create tables");
|
||||
for (Table table : getAllTables()) {
|
||||
table.createTable();
|
||||
@ -191,15 +221,10 @@ public abstract class SQLDB extends Database {
|
||||
/**
|
||||
* Setups the {@link BasicDataSource}
|
||||
*/
|
||||
public abstract void setupDataSource() throws DatabaseInitException;
|
||||
public abstract void setupDataSource() throws DBInitException;
|
||||
|
||||
/**
|
||||
* Closes the SQLDB
|
||||
*
|
||||
* @throws SQLException DB Error
|
||||
*/
|
||||
@Override
|
||||
public void close() throws SQLException {
|
||||
public void close() {
|
||||
setStatus("Closed");
|
||||
open = false;
|
||||
Log.logDebug("Database"); // Log remaining Debug info if present
|
||||
@ -208,70 +233,18 @@ public abstract class SQLDB extends Database {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return @throws SQLException
|
||||
*/
|
||||
@Override
|
||||
public int getVersion() throws SQLException {
|
||||
return versionTable.getVersion();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVersion(int version) throws SQLException {
|
||||
versionTable.setVersion(version);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isNewDatabase() throws SQLException {
|
||||
return versionTable.isNewDatabase();
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayerProfile getPlayerProfile(UUID uuid) throws SQLException {
|
||||
if (!wasSeenBefore(uuid)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
String playerName = usersTable.getPlayerName(uuid);
|
||||
Optional<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
|
||||
public ServerProfile getServerProfile(UUID serverUUID) throws SQLException {
|
||||
ServerProfile profile = new ServerProfile(serverUUID);
|
||||
@ -330,21 +303,6 @@ public abstract class SQLDB extends Database {
|
||||
return players;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean wasSeenBefore(UUID uuid) {
|
||||
if (uuid == null) {
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
return usersTable.isRegistered(uuid);
|
||||
} catch (SQLException e) {
|
||||
Log.toLog(this.getClass().getName(), e);
|
||||
return false;
|
||||
} finally {
|
||||
setAvailable();
|
||||
}
|
||||
}
|
||||
|
||||
public void removeAccount(UUID uuid) throws SQLException {
|
||||
if (uuid == null) {
|
||||
return;
|
||||
@ -374,18 +332,6 @@ public abstract class SQLDB extends Database {
|
||||
Log.info("Clean complete.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeAllData() throws SQLException {
|
||||
setStatus("Clearing all data");
|
||||
try {
|
||||
for (Table table : getAllTablesInRemoveOrder()) {
|
||||
table.removeAllData();
|
||||
}
|
||||
} finally {
|
||||
setAvailable();
|
||||
}
|
||||
}
|
||||
|
||||
private void setStatus(String status) {
|
||||
Log.logDebug("Database", status);
|
||||
}
|
||||
@ -401,7 +347,6 @@ public abstract class SQLDB extends Database {
|
||||
* <p>
|
||||
* MySQL has Auto Commit enabled.
|
||||
*/
|
||||
@Override
|
||||
public void commit(Connection connection) throws SQLException {
|
||||
try {
|
||||
if (!usingMySQL) {
|
||||
@ -416,7 +361,6 @@ public abstract class SQLDB extends Database {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void returnToPool(Connection connection) throws SQLException {
|
||||
if (usingMySQL && connection != null) {
|
||||
connection.close();
|
||||
@ -438,7 +382,79 @@ public abstract class SQLDB extends Database {
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isOpen() {
|
||||
return open;
|
||||
public UsersTable getUsersTable() {
|
||||
return usersTable;
|
||||
}
|
||||
|
||||
public SessionsTable getSessionsTable() {
|
||||
return sessionsTable;
|
||||
}
|
||||
|
||||
public KillsTable getKillsTable() {
|
||||
return killsTable;
|
||||
}
|
||||
|
||||
public IPsTable getIpsTable() {
|
||||
return ipsTable;
|
||||
}
|
||||
|
||||
public NicknamesTable getNicknamesTable() {
|
||||
return nicknamesTable;
|
||||
}
|
||||
|
||||
public CommandUseTable getCommandUseTable() {
|
||||
return commandUseTable;
|
||||
}
|
||||
|
||||
public TPSTable getTpsTable() {
|
||||
return tpsTable;
|
||||
}
|
||||
|
||||
public SecurityTable getSecurityTable() {
|
||||
return securityTable;
|
||||
}
|
||||
|
||||
public WorldTable getWorldTable() {
|
||||
return worldTable;
|
||||
}
|
||||
|
||||
public WorldTimesTable getWorldTimesTable() {
|
||||
return worldTimesTable;
|
||||
}
|
||||
|
||||
public ServerTable getServerTable() {
|
||||
return serverTable;
|
||||
}
|
||||
|
||||
public ActionsTable getActionsTable() {
|
||||
return actionsTable;
|
||||
}
|
||||
|
||||
public UserInfoTable getUserInfoTable() {
|
||||
return userInfoTable;
|
||||
}
|
||||
|
||||
public boolean isUsingMySQL() {
|
||||
return this instanceof MySQLDB;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BackupOperations backup() {
|
||||
return backupOps;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CheckOperations check() {
|
||||
return checkOps;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FetchOperations fetch() {
|
||||
return fetchOps;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RemoveOperations remove() {
|
||||
return removeOps;
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
package com.djrapitops.plan.system.database.databases;
|
||||
package com.djrapitops.plan.system.database.databases.sql;
|
||||
|
||||
import com.djrapitops.plan.api.exceptions.DatabaseInitException;
|
||||
import com.djrapitops.plan.PlanPlugin;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBInitException;
|
||||
import com.djrapitops.plan.utilities.MiscUtils;
|
||||
import com.djrapitops.plugin.api.utility.log.Log;
|
||||
import com.djrapitops.plugin.task.AbsRunnable;
|
||||
@ -38,11 +39,11 @@ public class SQLiteDB extends SQLDB {
|
||||
* Setups the {@link BasicDataSource}
|
||||
*/
|
||||
@Override
|
||||
public void setupDataSource() throws DatabaseInitException {
|
||||
public void setupDataSource() throws DBInitException {
|
||||
try {
|
||||
connection = getNewConnection(dbName);
|
||||
} catch (SQLException e) {
|
||||
throw new DatabaseInitException(e);
|
||||
throw new DBInitException(e);
|
||||
}
|
||||
startConnectionPingTask();
|
||||
}
|
||||
@ -132,7 +133,7 @@ public class SQLiteDB extends SQLDB {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() throws SQLException {
|
||||
public void close() {
|
||||
stopConnectionPingTask();
|
||||
MiscUtils.close(connection);
|
||||
super.close();
|
@ -2,7 +2,10 @@
|
||||
* Licence is provided in the jar as license.yml also here:
|
||||
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||
*/
|
||||
package com.djrapitops.plan.system.database.processing;
|
||||
package com.djrapitops.plan.system.database.databases.sql.processing;
|
||||
|
||||
import com.djrapitops.plan.system.settings.Settings;
|
||||
import com.djrapitops.plugin.api.utility.log.Log;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.SQLException;
|
||||
@ -18,7 +21,9 @@ public abstract class ExecStatement {
|
||||
|
||||
public ExecStatement(String sql) {
|
||||
this.sql = sql;
|
||||
// Log.debug("Execute Statement: " + sql);
|
||||
if (Settings.DEV_MODE.isTrue()) {
|
||||
Log.debug("Execute Statement: " + sql);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean execute(PreparedStatement statement) throws SQLException {
|
@ -2,7 +2,7 @@
|
||||
* Licence is provided in the jar as license.yml also here:
|
||||
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||
*/
|
||||
package com.djrapitops.plan.system.database.processing;
|
||||
package com.djrapitops.plan.system.database.databases.sql.processing;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
@ -2,7 +2,10 @@
|
||||
* Licence is provided in the jar as license.yml also here:
|
||||
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||
*/
|
||||
package com.djrapitops.plan.system.database.processing;
|
||||
package com.djrapitops.plan.system.database.databases.sql.processing;
|
||||
|
||||
import com.djrapitops.plan.system.settings.Settings;
|
||||
import com.djrapitops.plugin.api.utility.log.Log;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
@ -24,7 +27,9 @@ public abstract class QueryStatement<T> {
|
||||
|
||||
public QueryStatement(String sql, int fetchSize) {
|
||||
this.sql = sql;
|
||||
// Log.debug("Query Statement: " + sql);
|
||||
if (Settings.DEV_MODE.isTrue()) {
|
||||
Log.debug("Query Statement: " + sql);
|
||||
}
|
||||
this.fetchSize = fetchSize;
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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 + ")";
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
@ -2,19 +2,19 @@
|
||||
* Licence is provided in the jar as license.yml also here:
|
||||
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||
*/
|
||||
package com.djrapitops.plan.system.database.tables;
|
||||
package com.djrapitops.plan.system.database.databases.sql.tables;
|
||||
|
||||
import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.api.exceptions.DBCreateTableException;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBCreateTableException;
|
||||
import com.djrapitops.plan.data.Actions;
|
||||
import com.djrapitops.plan.data.container.Action;
|
||||
import com.djrapitops.plan.system.database.databases.SQLDB;
|
||||
import com.djrapitops.plan.system.database.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryStatement;
|
||||
import com.djrapitops.plan.system.database.sql.Select;
|
||||
import com.djrapitops.plan.system.database.sql.Sql;
|
||||
import com.djrapitops.plan.system.database.sql.TableSqlParser;
|
||||
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.Select;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.Sql;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser;
|
||||
import com.djrapitops.plugin.utilities.Verify;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
@ -46,8 +46,8 @@ public class ActionsTable extends UserIDTable {
|
||||
private final ServerTable serverTable;
|
||||
private String insertStatement;
|
||||
|
||||
public ActionsTable(SQLDB db, boolean usingMySQL) {
|
||||
super("plan_actions", db, usingMySQL);
|
||||
public ActionsTable(SQLDB db) {
|
||||
super("plan_actions", db);
|
||||
serverTable = db.getServerTable();
|
||||
insertStatement = "INSERT INTO " + tableName + " ("
|
||||
+ columnUserID + ", "
|
@ -1,14 +1,14 @@
|
||||
package com.djrapitops.plan.system.database.tables;
|
||||
package com.djrapitops.plan.system.database.databases.sql.tables;
|
||||
|
||||
import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.api.exceptions.DBCreateTableException;
|
||||
import com.djrapitops.plan.system.database.databases.SQLDB;
|
||||
import com.djrapitops.plan.system.database.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryStatement;
|
||||
import com.djrapitops.plan.system.database.sql.Select;
|
||||
import com.djrapitops.plan.system.database.sql.Sql;
|
||||
import com.djrapitops.plan.system.database.sql.TableSqlParser;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBCreateTableException;
|
||||
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.Select;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.Sql;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
@ -31,8 +31,8 @@ public class CommandUseTable extends Table {
|
||||
private final ServerTable serverTable;
|
||||
private String insertStatement;
|
||||
|
||||
public CommandUseTable(SQLDB db, boolean usingMySQL) {
|
||||
super("plan_commandusages", db, usingMySQL);
|
||||
public CommandUseTable(SQLDB db) {
|
||||
super("plan_commandusages", db);
|
||||
serverTable = db.getServerTable();
|
||||
insertStatement = "INSERT INTO " + tableName + " ("
|
||||
+ columnCommand + ", "
|
@ -1,14 +1,14 @@
|
||||
package com.djrapitops.plan.system.database.tables;
|
||||
package com.djrapitops.plan.system.database.databases.sql.tables;
|
||||
|
||||
import com.djrapitops.plan.api.exceptions.DBCreateTableException;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBCreateTableException;
|
||||
import com.djrapitops.plan.data.container.GeoInfo;
|
||||
import com.djrapitops.plan.system.database.databases.SQLDB;
|
||||
import com.djrapitops.plan.system.database.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryStatement;
|
||||
import com.djrapitops.plan.system.database.sql.Select;
|
||||
import com.djrapitops.plan.system.database.sql.Sql;
|
||||
import com.djrapitops.plan.system.database.sql.TableSqlParser;
|
||||
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.Select;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.Sql;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser;
|
||||
import com.djrapitops.plugin.utilities.Verify;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
@ -26,12 +26,8 @@ public class IPsTable extends UserIDTable {
|
||||
private final String columnLastUsed = "last_used";
|
||||
private String insertStatement;
|
||||
|
||||
/**
|
||||
* @param db The database
|
||||
* @param usingMySQL if the server is using MySQL
|
||||
*/
|
||||
public IPsTable(SQLDB db, boolean usingMySQL) {
|
||||
super("plan_ips", db, usingMySQL);
|
||||
public IPsTable(SQLDB db) {
|
||||
super("plan_ips", db);
|
||||
insertStatement = "INSERT INTO " + tableName + " ("
|
||||
+ columnUserID + ", "
|
||||
+ columnIP + ", "
|
@ -1,14 +1,14 @@
|
||||
package com.djrapitops.plan.system.database.tables;
|
||||
package com.djrapitops.plan.system.database.databases.sql.tables;
|
||||
|
||||
import com.djrapitops.plan.api.exceptions.DBCreateTableException;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBCreateTableException;
|
||||
import com.djrapitops.plan.data.container.PlayerKill;
|
||||
import com.djrapitops.plan.data.container.Session;
|
||||
import com.djrapitops.plan.system.database.databases.SQLDB;
|
||||
import com.djrapitops.plan.system.database.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryStatement;
|
||||
import com.djrapitops.plan.system.database.sql.Sql;
|
||||
import com.djrapitops.plan.system.database.sql.TableSqlParser;
|
||||
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.Sql;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser;
|
||||
import com.djrapitops.plugin.utilities.Verify;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
@ -30,8 +30,8 @@ public class KillsTable extends UserIDTable {
|
||||
private final SessionsTable sessionsTable;
|
||||
private String insertStatement;
|
||||
|
||||
public KillsTable(SQLDB db, boolean usingMySQL) {
|
||||
super("plan_kills", db, usingMySQL);
|
||||
public KillsTable(SQLDB db) {
|
||||
super("plan_kills", db);
|
||||
sessionsTable = db.getSessionsTable();
|
||||
insertStatement = "INSERT INTO " + tableName + " ("
|
||||
+ columnKillerUserID + ", "
|
@ -1,13 +1,13 @@
|
||||
package com.djrapitops.plan.system.database.tables;
|
||||
package com.djrapitops.plan.system.database.databases.sql.tables;
|
||||
|
||||
import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.api.exceptions.DBCreateTableException;
|
||||
import com.djrapitops.plan.system.database.databases.SQLDB;
|
||||
import com.djrapitops.plan.system.database.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryStatement;
|
||||
import com.djrapitops.plan.system.database.sql.Sql;
|
||||
import com.djrapitops.plan.system.database.sql.TableSqlParser;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBCreateTableException;
|
||||
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.Sql;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser;
|
||||
import com.djrapitops.plugin.utilities.Verify;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
@ -26,12 +26,8 @@ public class NicknamesTable extends UserIDTable {
|
||||
private final ServerTable serverTable;
|
||||
private String insertStatement;
|
||||
|
||||
/**
|
||||
* @param db The database
|
||||
* @param usingMySQL if the server is using MySQL
|
||||
*/
|
||||
public NicknamesTable(SQLDB db, boolean usingMySQL) {
|
||||
super("plan_nicknames", db, usingMySQL);
|
||||
public NicknamesTable(SQLDB db) {
|
||||
super("plan_nicknames", db);
|
||||
serverTable = db.getServerTable();
|
||||
insertStatement = "INSERT INTO " + tableName + " (" +
|
||||
columnUserID + ", " +
|
@ -3,18 +3,18 @@
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package com.djrapitops.plan.system.database.tables;
|
||||
package com.djrapitops.plan.system.database.databases.sql.tables;
|
||||
|
||||
import com.djrapitops.plan.api.exceptions.DBCreateTableException;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBCreateTableException;
|
||||
import com.djrapitops.plan.data.WebUser;
|
||||
import com.djrapitops.plan.system.database.databases.SQLDB;
|
||||
import com.djrapitops.plan.system.database.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryStatement;
|
||||
import com.djrapitops.plan.system.database.sql.Insert;
|
||||
import com.djrapitops.plan.system.database.sql.Select;
|
||||
import com.djrapitops.plan.system.database.sql.Sql;
|
||||
import com.djrapitops.plan.system.database.sql.TableSqlParser;
|
||||
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.Insert;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.Select;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.Sql;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser;
|
||||
import com.djrapitops.plugin.utilities.Verify;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
@ -33,8 +33,8 @@ public class SecurityTable extends Table {
|
||||
private final String columnPermLevel = "permission_level";
|
||||
private String insertStatement;
|
||||
|
||||
public SecurityTable(SQLDB db, boolean usingMySQL) {
|
||||
super("plan_security", db, usingMySQL);
|
||||
public SecurityTable(SQLDB db) {
|
||||
super("plan_security", db);
|
||||
insertStatement = Insert.values(tableName,
|
||||
columnUser,
|
||||
columnSaltedHash,
|
@ -2,14 +2,14 @@
|
||||
* Licence is provided in the jar as license.yml also here:
|
||||
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||
*/
|
||||
package com.djrapitops.plan.system.database.tables;
|
||||
package com.djrapitops.plan.system.database.databases.sql.tables;
|
||||
|
||||
import com.djrapitops.plan.api.exceptions.DBCreateTableException;
|
||||
import com.djrapitops.plan.system.database.databases.SQLDB;
|
||||
import com.djrapitops.plan.system.database.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryStatement;
|
||||
import com.djrapitops.plan.system.database.sql.*;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBCreateTableException;
|
||||
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.*;
|
||||
import com.djrapitops.plan.systems.info.server.ServerInfo;
|
||||
import com.djrapitops.plugin.utilities.Verify;
|
||||
|
||||
@ -45,8 +45,8 @@ public class ServerTable extends Table {
|
||||
private final String columnMaxPlayers = "max_players";
|
||||
private String insertStatement;
|
||||
|
||||
public ServerTable(SQLDB db, boolean usingMySQL) {
|
||||
super("plan_servers", db, usingMySQL);
|
||||
public ServerTable(SQLDB db) {
|
||||
super("plan_servers", db);
|
||||
statementSelectServerID = "(" + Select.from(tableName, tableName + "." + columnServerID).where(columnServerUUID + "=?").toString() + ")";
|
||||
statementSelectServerNameID = "(" + Select.from(tableName, tableName + "." + columnServerName).where(columnServerID + "=?").toString() + ")";
|
||||
insertStatement = Insert.values(tableName,
|
@ -1,15 +1,15 @@
|
||||
package com.djrapitops.plan.system.database.tables;
|
||||
package com.djrapitops.plan.system.database.databases.sql.tables;
|
||||
|
||||
import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.api.exceptions.DBCreateTableException;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBCreateTableException;
|
||||
import com.djrapitops.plan.data.container.Session;
|
||||
import com.djrapitops.plan.system.database.databases.SQLDB;
|
||||
import com.djrapitops.plan.system.database.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryStatement;
|
||||
import com.djrapitops.plan.system.database.sql.Select;
|
||||
import com.djrapitops.plan.system.database.sql.Sql;
|
||||
import com.djrapitops.plan.system.database.sql.TableSqlParser;
|
||||
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.Select;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.Sql;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser;
|
||||
import com.djrapitops.plugin.utilities.Verify;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
@ -34,8 +34,8 @@ public class SessionsTable extends UserIDTable {
|
||||
private final ServerTable serverTable;
|
||||
private String insertStatement;
|
||||
|
||||
public SessionsTable(SQLDB db, boolean usingMySQL) {
|
||||
super("plan_sessions", db, usingMySQL);
|
||||
public SessionsTable(SQLDB db) {
|
||||
super("plan_sessions", db);
|
||||
serverTable = db.getServerTable();
|
||||
insertStatement = "INSERT INTO " + tableName + " ("
|
||||
+ columnUserID + ", "
|
@ -1,14 +1,15 @@
|
||||
package com.djrapitops.plan.system.database.tables;
|
||||
package com.djrapitops.plan.system.database.databases.sql.tables;
|
||||
|
||||
import com.djrapitops.plan.api.exceptions.DBCreateTableException;
|
||||
import com.djrapitops.plan.PlanPlugin;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBCreateTableException;
|
||||
import com.djrapitops.plan.data.container.TPS;
|
||||
import com.djrapitops.plan.system.database.databases.SQLDB;
|
||||
import com.djrapitops.plan.system.database.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryStatement;
|
||||
import com.djrapitops.plan.system.database.sql.Select;
|
||||
import com.djrapitops.plan.system.database.sql.Sql;
|
||||
import com.djrapitops.plan.system.database.sql.TableSqlParser;
|
||||
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.Select;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.Sql;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser;
|
||||
import com.djrapitops.plan.systems.info.server.ServerInfo;
|
||||
import com.djrapitops.plan.utilities.MiscUtils;
|
||||
import com.djrapitops.plugin.api.TimeAmount;
|
||||
@ -39,8 +40,8 @@ public class TPSTable extends Table {
|
||||
private final ServerTable serverTable;
|
||||
private String insertStatement;
|
||||
|
||||
public TPSTable(SQLDB db, boolean usingMySQL) {
|
||||
super("plan_tps", db, usingMySQL);
|
||||
public TPSTable(SQLDB db) {
|
||||
super("plan_tps", db);
|
||||
serverTable = db.getServerTable();
|
||||
insertStatement = "INSERT INTO " + tableName + " ("
|
||||
+ columnServerID + ", "
|
@ -1,9 +1,9 @@
|
||||
package com.djrapitops.plan.system.database.tables;
|
||||
package com.djrapitops.plan.system.database.databases.sql.tables;
|
||||
|
||||
import com.djrapitops.plan.api.exceptions.DBCreateTableException;
|
||||
import com.djrapitops.plan.system.database.databases.SQLDB;
|
||||
import com.djrapitops.plan.system.database.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryStatement;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBCreateTableException;
|
||||
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
|
||||
import com.djrapitops.plan.utilities.MiscUtils;
|
||||
import com.djrapitops.plugin.utilities.Verify;
|
||||
import com.google.common.base.Objects;
|
||||
@ -39,10 +39,15 @@ public abstract class Table {
|
||||
* @param db Database to use.
|
||||
* @param usingMySQL Is the database using MySQL?
|
||||
*/
|
||||
@Deprecated
|
||||
public Table(String name, SQLDB db, boolean usingMySQL) {
|
||||
this(name, db);
|
||||
}
|
||||
|
||||
public Table(String name, SQLDB db) {
|
||||
this.tableName = name;
|
||||
this.db = db;
|
||||
this.usingMySQL = usingMySQL;
|
||||
this.usingMySQL = db.isUsingMySQL();
|
||||
}
|
||||
|
||||
public abstract void createTable() throws DBCreateTableException;
|
@ -1,7 +1,7 @@
|
||||
package com.djrapitops.plan.system.database.tables;
|
||||
package com.djrapitops.plan.system.database.databases.sql.tables;
|
||||
|
||||
import com.djrapitops.plan.system.database.databases.SQLDB;
|
||||
import com.djrapitops.plan.system.database.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.SQLException;
|
||||
@ -18,8 +18,8 @@ public abstract class UserIDTable extends Table {
|
||||
protected final String columnUserID = "user_id";
|
||||
protected final UsersTable usersTable;
|
||||
|
||||
public UserIDTable(String name, SQLDB db, boolean usingMySQL) {
|
||||
super(name, db, usingMySQL);
|
||||
public UserIDTable(String name, SQLDB db) {
|
||||
super(name, db);
|
||||
usersTable = db.getUsersTable();
|
||||
}
|
||||
|
@ -2,19 +2,20 @@
|
||||
* Licence is provided in the jar as license.yml also here:
|
||||
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||
*/
|
||||
package com.djrapitops.plan.system.database.tables;
|
||||
package com.djrapitops.plan.system.database.databases.sql.tables;
|
||||
|
||||
import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.api.exceptions.DBCreateTableException;
|
||||
import com.djrapitops.plan.PlanPlugin;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBCreateTableException;
|
||||
import com.djrapitops.plan.data.container.UserInfo;
|
||||
import com.djrapitops.plan.system.database.databases.SQLDB;
|
||||
import com.djrapitops.plan.system.database.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryStatement;
|
||||
import com.djrapitops.plan.system.database.sql.Select;
|
||||
import com.djrapitops.plan.system.database.sql.Sql;
|
||||
import com.djrapitops.plan.system.database.sql.TableSqlParser;
|
||||
import com.djrapitops.plan.system.database.sql.Update;
|
||||
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.Select;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.Sql;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.Update;
|
||||
import com.djrapitops.plugin.api.utility.log.Log;
|
||||
import com.djrapitops.plugin.utilities.Verify;
|
||||
|
||||
@ -39,8 +40,8 @@ public class UserInfoTable extends UserIDTable {
|
||||
|
||||
private final ServerTable serverTable;
|
||||
|
||||
public UserInfoTable(SQLDB db, boolean usingMySQL) {
|
||||
super("plan_user_info", db, usingMySQL);
|
||||
public UserInfoTable(SQLDB db) {
|
||||
super("plan_user_info", db);
|
||||
serverTable = db.getServerTable();
|
||||
}
|
||||
|
||||
@ -341,4 +342,9 @@ public class UserInfoTable extends UserIDTable {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
// TODO improve performance of this method.
|
||||
public Set<UUID> getSavedUUIDs(UUID serverUUID) throws SQLException {
|
||||
return getSavedUUIDs().get(serverUUID);
|
||||
}
|
||||
}
|
@ -1,12 +1,12 @@
|
||||
package com.djrapitops.plan.system.database.tables;
|
||||
package com.djrapitops.plan.system.database.databases.sql.tables;
|
||||
|
||||
import com.djrapitops.plan.api.exceptions.DBCreateTableException;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBCreateTableException;
|
||||
import com.djrapitops.plan.data.container.UserInfo;
|
||||
import com.djrapitops.plan.system.database.databases.SQLDB;
|
||||
import com.djrapitops.plan.system.database.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryStatement;
|
||||
import com.djrapitops.plan.system.database.sql.*;
|
||||
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.*;
|
||||
import com.djrapitops.plugin.utilities.Verify;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
@ -27,8 +27,8 @@ public class UsersTable extends UserIDTable {
|
||||
private final String columnTimesKicked = "times_kicked";
|
||||
private String insertStatement;
|
||||
|
||||
public UsersTable(SQLDB db, boolean usingMySQL) {
|
||||
super("plan_users", db, usingMySQL);
|
||||
public UsersTable(SQLDB db) {
|
||||
super("plan_users", db);
|
||||
statementSelectID = "(" + Select.from(tableName, tableName + "." + columnID).where(columnUUID + "=?").toString() + ")";
|
||||
insertStatement = Insert.values(tableName,
|
||||
columnUUID,
|
@ -1,12 +1,12 @@
|
||||
package com.djrapitops.plan.system.database.tables;
|
||||
package com.djrapitops.plan.system.database.databases.sql.tables;
|
||||
|
||||
import com.djrapitops.plan.api.exceptions.DBCreateTableException;
|
||||
import com.djrapitops.plan.system.database.databases.SQLDB;
|
||||
import com.djrapitops.plan.system.database.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryStatement;
|
||||
import com.djrapitops.plan.system.database.sql.Sql;
|
||||
import com.djrapitops.plan.system.database.sql.TableSqlParser;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBCreateTableException;
|
||||
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.Sql;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
@ -17,8 +17,8 @@ import java.sql.SQLException;
|
||||
*/
|
||||
public class VersionTable extends Table {
|
||||
|
||||
public VersionTable(SQLDB db, boolean usingMySQL) {
|
||||
super("plan_version", db, usingMySQL);
|
||||
public VersionTable(SQLDB db) {
|
||||
super("plan_version", db);
|
||||
}
|
||||
|
||||
@Override
|
@ -1,12 +1,13 @@
|
||||
package com.djrapitops.plan.system.database.tables;
|
||||
package com.djrapitops.plan.system.database.databases.sql.tables;
|
||||
|
||||
import com.djrapitops.plan.api.exceptions.DBCreateTableException;
|
||||
import com.djrapitops.plan.system.database.databases.SQLDB;
|
||||
import com.djrapitops.plan.system.database.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryStatement;
|
||||
import com.djrapitops.plan.system.database.sql.Sql;
|
||||
import com.djrapitops.plan.system.database.sql.TableSqlParser;
|
||||
import com.djrapitops.plan.PlanPlugin;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBCreateTableException;
|
||||
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.Sql;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser;
|
||||
import com.djrapitops.plugin.utilities.Verify;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
@ -28,14 +29,8 @@ public class WorldTable extends Table {
|
||||
private final String columnWorldId = "id";
|
||||
private final String columnWorldName = "world_name";
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param db Database this table is a part of.
|
||||
* @param usingMySQL Database is a MySQL database.
|
||||
*/
|
||||
public WorldTable(SQLDB db, boolean usingMySQL) {
|
||||
super("plan_worlds", db, usingMySQL);
|
||||
public WorldTable(SQLDB db) {
|
||||
super("plan_worlds", db);
|
||||
statementSelectID = "(SELECT " + columnWorldId + " FROM " + tableName + " WHERE (" + columnWorldName + "=?))";
|
||||
}
|
||||
|
@ -1,16 +1,16 @@
|
||||
package com.djrapitops.plan.system.database.tables;
|
||||
package com.djrapitops.plan.system.database.databases.sql.tables;
|
||||
|
||||
import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.api.exceptions.DBCreateTableException;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBCreateTableException;
|
||||
import com.djrapitops.plan.data.container.Session;
|
||||
import com.djrapitops.plan.data.time.GMTimes;
|
||||
import com.djrapitops.plan.data.time.WorldTimes;
|
||||
import com.djrapitops.plan.system.database.databases.SQLDB;
|
||||
import com.djrapitops.plan.system.database.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.processing.QueryStatement;
|
||||
import com.djrapitops.plan.system.database.sql.Sql;
|
||||
import com.djrapitops.plan.system.database.sql.TableSqlParser;
|
||||
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.Sql;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser;
|
||||
import com.djrapitops.plugin.utilities.Verify;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
@ -38,14 +38,8 @@ public class WorldTimesTable extends UserIDTable {
|
||||
private final SessionsTable sessionsTable;
|
||||
private String insertStatement;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param db Database this table is a part of.
|
||||
* @param usingMySQL Database is a MySQL database.
|
||||
*/
|
||||
public WorldTimesTable(SQLDB db, boolean usingMySQL) {
|
||||
super("plan_world_times", db, usingMySQL);
|
||||
public WorldTimesTable(SQLDB db) {
|
||||
super("plan_world_times", db);
|
||||
worldTable = db.getWorldTable();
|
||||
sessionsTable = db.getSessionsTable();
|
||||
insertStatement = "INSERT INTO " + tableName + " (" +
|
@ -2,14 +2,14 @@
|
||||
* Licence is provided in the jar as license.yml also here:
|
||||
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||
*/
|
||||
package com.djrapitops.plan.system.database.tables.move;
|
||||
package com.djrapitops.plan.system.database.databases.sql.tables.move;
|
||||
|
||||
import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||
import com.djrapitops.plan.data.container.UserInfo;
|
||||
import com.djrapitops.plan.system.database.databases.Database;
|
||||
import com.djrapitops.plan.system.database.databases.SQLDB;
|
||||
import com.djrapitops.plan.system.database.tables.ServerTable;
|
||||
import com.djrapitops.plan.system.database.tables.Table;
|
||||
import com.djrapitops.plan.system.database.tables.UsersTable;
|
||||
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
|
||||
import com.djrapitops.plan.system.database.databases.sql.tables.ServerTable;
|
||||
import com.djrapitops.plan.system.database.databases.sql.tables.Table;
|
||||
import com.djrapitops.plan.system.database.databases.sql.tables.UsersTable;
|
||||
import com.djrapitops.plan.systems.info.server.ServerInfo;
|
||||
import com.djrapitops.plugin.api.utility.log.Log;
|
||||
|
||||
@ -45,8 +45,8 @@ public class BatchOperationTable extends Table {
|
||||
* @throws IllegalStateException if database.init has not been called.
|
||||
* @throws ClassCastException if database is not SQLDB.
|
||||
*/
|
||||
public BatchOperationTable(Database database) {
|
||||
super("", (SQLDB) database, false);
|
||||
public BatchOperationTable(SQLDB database) {
|
||||
super("", database);
|
||||
if (!db.isOpen()) {
|
||||
throw new IllegalStateException("Given Database had not been initialized.");
|
||||
}
|
||||
@ -63,7 +63,15 @@ public class BatchOperationTable extends Table {
|
||||
|
||||
@Override
|
||||
public void removeAllData() throws SQLException {
|
||||
db.removeAllData();
|
||||
try {
|
||||
db.remove().everything();
|
||||
} catch (DBException e) {
|
||||
if (e.getCause() instanceof SQLException) {
|
||||
throw (SQLException) e.getCause();
|
||||
} else {
|
||||
Log.toLog(this.getClass(), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void copyEverything(BatchOperationTable toDB) throws SQLException {
|
@ -2,12 +2,12 @@
|
||||
* Licence is provided in the jar as license.yml also here:
|
||||
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||
*/
|
||||
package com.djrapitops.plan.system.database.tables.move;
|
||||
package com.djrapitops.plan.system.database.databases.sql.tables.move;
|
||||
|
||||
import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.api.exceptions.DBCreateTableException;
|
||||
import com.djrapitops.plan.system.database.databases.SQLDB;
|
||||
import com.djrapitops.plan.system.database.tables.*;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBCreateTableException;
|
||||
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
|
||||
import com.djrapitops.plan.system.database.databases.sql.tables.*;
|
||||
import com.djrapitops.plugin.api.Benchmark;
|
||||
|
||||
import java.sql.SQLException;
|
@ -104,14 +104,14 @@ public abstract class Importer {
|
||||
|
||||
new ImportExecutorHelper() {
|
||||
@Override
|
||||
void execute() throws SQLException {
|
||||
void execute() {
|
||||
db.getTpsTable().insertAllTPS(ImmutableMap.of(uuid, serverImportData.getTpsData()));
|
||||
}
|
||||
}.submit(service);
|
||||
|
||||
new ImportExecutorHelper() {
|
||||
@Override
|
||||
void execute() throws SQLException {
|
||||
void execute() {
|
||||
db.getCommandUseTable().insertCommandUsage(ImmutableMap.of(uuid, serverImportData.getCommandUsages()));
|
||||
}
|
||||
}.submit(service);
|
||||
@ -129,7 +129,7 @@ public abstract class Importer {
|
||||
Benchmark.stop(benchmarkName);
|
||||
}
|
||||
|
||||
private void processUserData() throws SQLException {
|
||||
private void processUserData() {
|
||||
String benchmarkName = "Processing User Data";
|
||||
String getDataBenchmarkName = "Getting User Data";
|
||||
String insertDataIntoCollectionsBenchmarkName = "Insert User Data into Collections";
|
||||
@ -154,8 +154,8 @@ public abstract class Importer {
|
||||
UUID serverUUID = plugin.getServerInfoManager().getServerUUID();
|
||||
Database db = plugin.getDB();
|
||||
|
||||
Set<UUID> existingUUIDs = db.getSavedUUIDs();
|
||||
Set<UUID> existingUserInfoTableUUIDs = db.getUserInfoTable().getSavedUUIDs().get(serverUUID);
|
||||
Set<UUID> existingUUIDs = db.fetch().getSavedUUIDs();
|
||||
Set<UUID> existingUserInfoTableUUIDs = db.fetch().getSavedUUIDs(serverUUID);
|
||||
|
||||
Benchmark.start(insertDataIntoCollectionsBenchmarkName);
|
||||
|
||||
@ -194,35 +194,35 @@ public abstract class Importer {
|
||||
|
||||
new ImportExecutorHelper() {
|
||||
@Override
|
||||
void execute() throws SQLException {
|
||||
void execute() {
|
||||
db.getSessionsTable().insertSessions(ImmutableMap.of(serverUUID, sessions), true);
|
||||
}
|
||||
}.submit(service);
|
||||
|
||||
new ImportExecutorHelper() {
|
||||
@Override
|
||||
void execute() throws SQLException {
|
||||
void execute() {
|
||||
db.getUsersTable().updateKicked(timesKicked);
|
||||
}
|
||||
}.submit(service);
|
||||
|
||||
new ImportExecutorHelper() {
|
||||
@Override
|
||||
void execute() throws SQLException {
|
||||
void execute() {
|
||||
db.getUserInfoTable().insertUserInfo(ImmutableMap.of(serverUUID, userInfo));
|
||||
}
|
||||
}.submit(service);
|
||||
|
||||
new ImportExecutorHelper() {
|
||||
@Override
|
||||
void execute() throws SQLException {
|
||||
void execute() {
|
||||
db.getNicknamesTable().insertNicknames(ImmutableMap.of(serverUUID, nickNames));
|
||||
}
|
||||
}.submit(service);
|
||||
|
||||
new ImportExecutorHelper() {
|
||||
@Override
|
||||
void execute() throws SQLException {
|
||||
void execute() {
|
||||
db.getIpsTable().insertAllGeoInfo(geoInfo);
|
||||
}
|
||||
}.submit(service);
|
||||
|
@ -5,7 +5,7 @@
|
||||
package com.djrapitops.plan.system.processing.processors.player;
|
||||
|
||||
import com.djrapitops.plan.PlanBungee;
|
||||
import com.djrapitops.plan.system.database.tables.UsersTable;
|
||||
import com.djrapitops.plan.system.database.databases.sql.tables.UsersTable;
|
||||
import com.djrapitops.plugin.api.utility.log.Log;
|
||||
|
||||
import java.sql.SQLException;
|
||||
|
@ -6,7 +6,7 @@ package com.djrapitops.plan.system.processing.processors.player;
|
||||
|
||||
import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.system.database.databases.Database;
|
||||
import com.djrapitops.plan.system.database.tables.NicknamesTable;
|
||||
import com.djrapitops.plan.system.database.databases.sql.tables.NicknamesTable;
|
||||
import com.djrapitops.plan.system.processing.processors.NewNickActionProcessor;
|
||||
import com.djrapitops.plan.systems.cache.DataCache;
|
||||
import com.djrapitops.plugin.api.utility.log.Log;
|
||||
|
@ -8,8 +8,8 @@ import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.data.Actions;
|
||||
import com.djrapitops.plan.data.container.Action;
|
||||
import com.djrapitops.plan.system.database.databases.Database;
|
||||
import com.djrapitops.plan.system.database.tables.UserInfoTable;
|
||||
import com.djrapitops.plan.system.database.tables.UsersTable;
|
||||
import com.djrapitops.plan.system.database.databases.sql.tables.UserInfoTable;
|
||||
import com.djrapitops.plan.system.database.databases.sql.tables.UsersTable;
|
||||
import com.djrapitops.plan.system.processing.processors.Processor;
|
||||
import com.djrapitops.plugin.api.utility.log.Log;
|
||||
|
||||
|
@ -6,6 +6,7 @@ package com.djrapitops.plan.system.webserver.pages;
|
||||
|
||||
import com.djrapitops.plan.PlanPlugin;
|
||||
import com.djrapitops.plan.api.exceptions.ParseException;
|
||||
import com.djrapitops.plan.system.database.databases.Database;
|
||||
import com.djrapitops.plan.system.webserver.Request;
|
||||
import com.djrapitops.plan.system.webserver.pagecache.PageId;
|
||||
import com.djrapitops.plan.system.webserver.pagecache.ResponseCache;
|
||||
@ -42,7 +43,7 @@ public class PlayerPageHandler extends PageHandler {
|
||||
return notFound("Player has no UUID");
|
||||
}
|
||||
|
||||
if (PlanPlugin.getInstance().getDB().wasSeenBefore(uuid)) {
|
||||
if (Database.getActive().check().isPlayerRegistered(uuid)) {
|
||||
PlanPlugin.getInstance().getInfoManager().cachePlayer(uuid);
|
||||
Response response = ResponseCache.loadResponse(PageId.PLAYER.of(uuid));
|
||||
// TODO Create a new method that places NotFoundResponse to ResponseCache instead.
|
||||
|
@ -5,7 +5,7 @@
|
||||
package com.djrapitops.plan.system.webserver.webapi;
|
||||
|
||||
import com.djrapitops.plan.PlanPlugin;
|
||||
import com.djrapitops.plan.api.exceptions.*;
|
||||
import com.djrapitops.plan.api.exceptions.webapi.*;
|
||||
import com.djrapitops.plan.system.settings.Settings;
|
||||
import com.djrapitops.plan.system.webserver.pagecache.PageId;
|
||||
import com.djrapitops.plan.system.webserver.pagecache.ResponseCache;
|
||||
|
@ -5,7 +5,7 @@
|
||||
package com.djrapitops.plan.system.webserver.webapi.bukkit;
|
||||
|
||||
import com.djrapitops.plan.PlanPlugin;
|
||||
import com.djrapitops.plan.api.exceptions.WebAPIException;
|
||||
import com.djrapitops.plan.api.exceptions.webapi.WebAPIException;
|
||||
import com.djrapitops.plan.system.webserver.response.Response;
|
||||
import com.djrapitops.plan.system.webserver.webapi.WebAPI;
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
package com.djrapitops.plan.system.webserver.webapi.bukkit;
|
||||
|
||||
import com.djrapitops.plan.PlanPlugin;
|
||||
import com.djrapitops.plan.api.exceptions.WebAPIException;
|
||||
import com.djrapitops.plan.api.exceptions.webapi.WebAPIException;
|
||||
import com.djrapitops.plan.system.webserver.response.Response;
|
||||
import com.djrapitops.plan.system.webserver.webapi.WebAPI;
|
||||
|
||||
|
@ -7,7 +7,7 @@ package com.djrapitops.plan.system.webserver.webapi.bukkit;
|
||||
import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.PlanBungee;
|
||||
import com.djrapitops.plan.PlanPlugin;
|
||||
import com.djrapitops.plan.api.exceptions.WebAPIException;
|
||||
import com.djrapitops.plan.api.exceptions.webapi.WebAPIException;
|
||||
import com.djrapitops.plan.settings.ServerSpecificSettings;
|
||||
import com.djrapitops.plan.system.settings.Settings;
|
||||
import com.djrapitops.plan.system.webserver.response.Response;
|
||||
|
@ -5,7 +5,7 @@
|
||||
package com.djrapitops.plan.system.webserver.webapi.bukkit;
|
||||
|
||||
import com.djrapitops.plan.PlanPlugin;
|
||||
import com.djrapitops.plan.api.exceptions.WebAPIException;
|
||||
import com.djrapitops.plan.api.exceptions.webapi.WebAPIException;
|
||||
import com.djrapitops.plan.system.webserver.response.Response;
|
||||
import com.djrapitops.plan.system.webserver.webapi.WebAPI;
|
||||
|
||||
|
@ -6,7 +6,7 @@ package com.djrapitops.plan.system.webserver.webapi.bukkit;
|
||||
|
||||
import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.PlanPlugin;
|
||||
import com.djrapitops.plan.api.exceptions.WebAPIException;
|
||||
import com.djrapitops.plan.api.exceptions.webapi.WebAPIException;
|
||||
import com.djrapitops.plan.system.webserver.response.Response;
|
||||
import com.djrapitops.plan.system.webserver.webapi.WebAPI;
|
||||
import org.bukkit.entity.Player;
|
||||
|
@ -5,7 +5,7 @@
|
||||
package com.djrapitops.plan.system.webserver.webapi.bukkit;
|
||||
|
||||
import com.djrapitops.plan.PlanPlugin;
|
||||
import com.djrapitops.plan.api.exceptions.WebAPIException;
|
||||
import com.djrapitops.plan.api.exceptions.webapi.WebAPIException;
|
||||
import com.djrapitops.plan.system.webserver.response.Response;
|
||||
import com.djrapitops.plan.system.webserver.webapi.WebAPI;
|
||||
import com.djrapitops.plan.systems.info.BukkitInformationManager;
|
||||
|
@ -5,8 +5,8 @@
|
||||
package com.djrapitops.plan.system.webserver.webapi.bungee;
|
||||
|
||||
import com.djrapitops.plan.PlanPlugin;
|
||||
import com.djrapitops.plan.api.exceptions.WebAPIException;
|
||||
import com.djrapitops.plan.api.exceptions.WebAPINotFoundException;
|
||||
import com.djrapitops.plan.api.exceptions.webapi.WebAPIException;
|
||||
import com.djrapitops.plan.api.exceptions.webapi.WebAPINotFoundException;
|
||||
import com.djrapitops.plan.system.webserver.response.Response;
|
||||
import com.djrapitops.plan.system.webserver.webapi.WebAPI;
|
||||
import com.djrapitops.plan.systems.info.InformationManager;
|
||||
|
@ -5,7 +5,7 @@
|
||||
package com.djrapitops.plan.system.webserver.webapi.bungee;
|
||||
|
||||
import com.djrapitops.plan.PlanPlugin;
|
||||
import com.djrapitops.plan.api.exceptions.WebAPIException;
|
||||
import com.djrapitops.plan.api.exceptions.webapi.WebAPIException;
|
||||
import com.djrapitops.plan.system.settings.Settings;
|
||||
import com.djrapitops.plan.system.webserver.pagecache.PageId;
|
||||
import com.djrapitops.plan.system.webserver.pagecache.ResponseCache;
|
||||
|
@ -5,7 +5,7 @@
|
||||
package com.djrapitops.plan.system.webserver.webapi.bungee;
|
||||
|
||||
import com.djrapitops.plan.PlanPlugin;
|
||||
import com.djrapitops.plan.api.exceptions.WebAPIException;
|
||||
import com.djrapitops.plan.api.exceptions.webapi.WebAPIException;
|
||||
import com.djrapitops.plan.system.webserver.response.Response;
|
||||
import com.djrapitops.plan.system.webserver.webapi.WebAPI;
|
||||
import com.djrapitops.plan.systems.info.BungeeInformationManager;
|
||||
|
@ -6,7 +6,7 @@ package com.djrapitops.plan.system.webserver.webapi.bungee;
|
||||
|
||||
|
||||
import com.djrapitops.plan.PlanPlugin;
|
||||
import com.djrapitops.plan.api.exceptions.WebAPIException;
|
||||
import com.djrapitops.plan.api.exceptions.webapi.WebAPIException;
|
||||
import com.djrapitops.plan.system.webserver.response.Response;
|
||||
import com.djrapitops.plan.system.webserver.webapi.WebAPI;
|
||||
import com.djrapitops.plan.systems.info.BungeeInformationManager;
|
||||
|
@ -7,7 +7,7 @@ package com.djrapitops.plan.system.webserver.webapi.bungee;
|
||||
|
||||
import com.djrapitops.plan.PlanBungee;
|
||||
import com.djrapitops.plan.PlanPlugin;
|
||||
import com.djrapitops.plan.api.exceptions.WebAPIException;
|
||||
import com.djrapitops.plan.api.exceptions.webapi.WebAPIException;
|
||||
import com.djrapitops.plan.system.settings.Settings;
|
||||
import com.djrapitops.plan.system.webserver.response.Response;
|
||||
import com.djrapitops.plan.system.webserver.webapi.WebAPI;
|
||||
|
@ -6,7 +6,7 @@ package com.djrapitops.plan.system.webserver.webapi.bungee;
|
||||
|
||||
|
||||
import com.djrapitops.plan.PlanPlugin;
|
||||
import com.djrapitops.plan.api.exceptions.WebAPIException;
|
||||
import com.djrapitops.plan.api.exceptions.webapi.WebAPIException;
|
||||
import com.djrapitops.plan.system.processing.processors.Processor;
|
||||
import com.djrapitops.plan.system.webserver.response.Response;
|
||||
import com.djrapitops.plan.system.webserver.webapi.WebAPI;
|
||||
|
@ -8,7 +8,7 @@ package com.djrapitops.plan.system.webserver.webapi.bungee;
|
||||
import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.PlanBungee;
|
||||
import com.djrapitops.plan.PlanPlugin;
|
||||
import com.djrapitops.plan.api.exceptions.WebAPIException;
|
||||
import com.djrapitops.plan.api.exceptions.webapi.WebAPIException;
|
||||
import com.djrapitops.plan.system.webserver.response.Response;
|
||||
import com.djrapitops.plan.system.webserver.response.errors.ForbiddenResponse;
|
||||
import com.djrapitops.plan.system.webserver.webapi.WebAPI;
|
||||
|
@ -8,7 +8,7 @@ package com.djrapitops.plan.system.webserver.webapi.universal;
|
||||
import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.PlanBungee;
|
||||
import com.djrapitops.plan.PlanPlugin;
|
||||
import com.djrapitops.plan.api.exceptions.WebAPIException;
|
||||
import com.djrapitops.plan.api.exceptions.webapi.WebAPIException;
|
||||
import com.djrapitops.plan.system.webserver.response.Response;
|
||||
import com.djrapitops.plan.system.webserver.webapi.WebAPI;
|
||||
import com.djrapitops.plan.systems.info.BukkitInformationManager;
|
||||
|
@ -5,7 +5,11 @@
|
||||
package com.djrapitops.plan.systems.info;
|
||||
|
||||
import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.api.exceptions.*;
|
||||
import com.djrapitops.plan.api.exceptions.ParseException;
|
||||
import com.djrapitops.plan.api.exceptions.webapi.WebAPIConnectionFailException;
|
||||
import com.djrapitops.plan.api.exceptions.webapi.WebAPIException;
|
||||
import com.djrapitops.plan.api.exceptions.webapi.WebAPIFailException;
|
||||
import com.djrapitops.plan.api.exceptions.webapi.WebAPINotFoundException;
|
||||
import com.djrapitops.plan.command.commands.AnalyzeCommand;
|
||||
import com.djrapitops.plan.data.AnalysisData;
|
||||
import com.djrapitops.plan.data.element.InspectContainer;
|
||||
|
@ -7,9 +7,9 @@ package com.djrapitops.plan.systems.info;
|
||||
import com.djrapitops.plan.PlanBungee;
|
||||
import com.djrapitops.plan.PlanPlugin;
|
||||
import com.djrapitops.plan.api.exceptions.ParseException;
|
||||
import com.djrapitops.plan.api.exceptions.WebAPIConnectionFailException;
|
||||
import com.djrapitops.plan.api.exceptions.WebAPIException;
|
||||
import com.djrapitops.plan.api.exceptions.WebAPINotFoundException;
|
||||
import com.djrapitops.plan.api.exceptions.webapi.WebAPIConnectionFailException;
|
||||
import com.djrapitops.plan.api.exceptions.webapi.WebAPIException;
|
||||
import com.djrapitops.plan.api.exceptions.webapi.WebAPINotFoundException;
|
||||
import com.djrapitops.plan.system.settings.Settings;
|
||||
import com.djrapitops.plan.system.webserver.pagecache.PageId;
|
||||
import com.djrapitops.plan.system.webserver.pagecache.ResponseCache;
|
||||
@ -68,7 +68,7 @@ public class BungeeInformationManager extends InformationManager {
|
||||
*
|
||||
* @throws SQLException If DB Error occurs.
|
||||
*/
|
||||
private void refreshBukkitServerMap() throws SQLException {
|
||||
private void refreshBukkitServerMap() {
|
||||
bukkitServers = plugin.getDB().getServerTable().getBukkitServers().stream().collect(Collectors.toMap(ServerInfo::getUuid, Function.identity()));
|
||||
}
|
||||
|
||||
|
@ -61,13 +61,13 @@ public class InspectPageParser extends PageParser {
|
||||
}
|
||||
Log.logDebug("Database", "Inspect Parse Fetch");
|
||||
Benchmark.start("Inspect Parse, Fetch");
|
||||
Database db = plugin.getDB();
|
||||
PlayerProfile profile = db.getPlayerProfile(uuid);
|
||||
Database db = Database.getActive();
|
||||
PlayerProfile profile = db.fetch().getPlayerProfile(uuid);
|
||||
if (profile == null) {
|
||||
throw new IllegalStateException("Player profile was null!");
|
||||
}
|
||||
UUID serverUUID = PlanPlugin.getInstance().getServerUuid();
|
||||
Map<UUID, String> serverNames = db.getServerTable().getServerNames();
|
||||
Map<UUID, String> serverNames = db.fetch().getServerNames();
|
||||
|
||||
Benchmark.stop("Inspect Parse, Fetch");
|
||||
|
||||
|
@ -9,7 +9,7 @@ import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.ServerVariableHolder;
|
||||
import com.djrapitops.plan.api.exceptions.EnableException;
|
||||
import com.djrapitops.plan.system.database.databases.Database;
|
||||
import com.djrapitops.plan.system.database.tables.ServerTable;
|
||||
import com.djrapitops.plan.system.database.databases.sql.tables.ServerTable;
|
||||
import com.djrapitops.plan.system.settings.Settings;
|
||||
import com.djrapitops.plugin.api.utility.log.Log;
|
||||
|
||||
|
@ -7,9 +7,9 @@ package com.djrapitops.plan.systems.info.server;
|
||||
import com.djrapitops.plan.PlanBungee;
|
||||
import com.djrapitops.plan.ServerVariableHolder;
|
||||
import com.djrapitops.plan.api.exceptions.EnableException;
|
||||
import com.djrapitops.plan.api.exceptions.WebAPIException;
|
||||
import com.djrapitops.plan.api.exceptions.webapi.WebAPIException;
|
||||
import com.djrapitops.plan.system.database.databases.Database;
|
||||
import com.djrapitops.plan.system.database.tables.ServerTable;
|
||||
import com.djrapitops.plan.system.database.databases.sql.tables.ServerTable;
|
||||
import com.djrapitops.plan.system.webserver.webapi.bukkit.ConfigurationWebAPI;
|
||||
import com.djrapitops.plan.system.webserver.webapi.universal.PingWebAPI;
|
||||
import com.djrapitops.plugin.api.TimeAmount;
|
||||
|
@ -1,11 +1,13 @@
|
||||
package com.djrapitops.plan.utilities;
|
||||
|
||||
import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.api.exceptions.DatabaseInitException;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBInitException;
|
||||
import com.djrapitops.plan.system.database.DBSystem;
|
||||
import com.djrapitops.plan.system.database.databases.Database;
|
||||
import com.djrapitops.plan.system.database.databases.SQLiteDB;
|
||||
import com.djrapitops.plan.system.database.tables.move.BatchOperationTable;
|
||||
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
|
||||
import com.djrapitops.plan.system.database.databases.sql.SQLiteDB;
|
||||
import com.djrapitops.plan.system.database.databases.sql.tables.move.BatchOperationTable;
|
||||
import com.djrapitops.plugin.api.utility.log.Log;
|
||||
|
||||
import java.sql.SQLException;
|
||||
@ -29,7 +31,7 @@ public class ManageUtils {
|
||||
* @param dbName Name of database (mysql/sqlite)
|
||||
* @param copyFromDB Database you want to backup.
|
||||
*/
|
||||
public static void backup(String dbName, Database copyFromDB) throws DatabaseInitException, SQLException {
|
||||
public static void backup(String dbName, Database copyFromDB) throws DBInitException, SQLException {
|
||||
Plan plugin = Plan.getInstance();
|
||||
String timeStamp = new Date().toString().substring(4, 10).replace(" ", "-");
|
||||
String fileName = dbName + "-backup-" + timeStamp;
|
||||
@ -52,9 +54,9 @@ public class ManageUtils {
|
||||
public static Collection<UUID> getUUIDS(Database db) {
|
||||
final Set<UUID> uuids = new HashSet<>();
|
||||
try {
|
||||
uuids.addAll(db.getSavedUUIDs());
|
||||
} catch (SQLException e) {
|
||||
Log.toLog("ManageUtils.getUUIDS", e);
|
||||
uuids.addAll(db.fetch().getSavedUUIDs());
|
||||
} catch (DBException e) {
|
||||
Log.toLog(ManageUtils.class, e);
|
||||
}
|
||||
return uuids;
|
||||
}
|
||||
@ -67,15 +69,15 @@ public class ManageUtils {
|
||||
* @param copyFromDB Database where data will be copied from
|
||||
*/
|
||||
public static void clearAndCopy(Database clearAndCopyToDB, Database copyFromDB) throws SQLException {
|
||||
BatchOperationTable toDB = new BatchOperationTable(clearAndCopyToDB);
|
||||
BatchOperationTable fromDB = new BatchOperationTable(copyFromDB);
|
||||
BatchOperationTable toDB = new BatchOperationTable((SQLDB) clearAndCopyToDB);
|
||||
BatchOperationTable fromDB = new BatchOperationTable((SQLDB) copyFromDB);
|
||||
|
||||
toDB.removeAllData();
|
||||
fromDB.copyEverything(toDB);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static Database getDB(String dbName) throws DatabaseInitException {
|
||||
return DBSystem.getActiveDatabase(dbName);
|
||||
public static Database getDB(String dbName) throws DBInitException {
|
||||
return DBSystem.getInstance().getActiveDatabase(dbName);
|
||||
}
|
||||
}
|
||||
|
@ -6,17 +6,18 @@
|
||||
package com.djrapitops.plan.system.database;
|
||||
|
||||
import com.djrapitops.plan.Plan;
|
||||
import com.djrapitops.plan.api.exceptions.DatabaseInitException;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBInitException;
|
||||
import com.djrapitops.plan.data.Actions;
|
||||
import com.djrapitops.plan.data.WebUser;
|
||||
import com.djrapitops.plan.data.container.*;
|
||||
import com.djrapitops.plan.data.time.GMTimes;
|
||||
import com.djrapitops.plan.data.time.WorldTimes;
|
||||
import com.djrapitops.plan.system.database.databases.Database;
|
||||
import com.djrapitops.plan.system.database.databases.MySQLDB;
|
||||
import com.djrapitops.plan.system.database.databases.SQLDB;
|
||||
import com.djrapitops.plan.system.database.databases.SQLiteDB;
|
||||
import com.djrapitops.plan.system.database.tables.*;
|
||||
import com.djrapitops.plan.system.database.databases.sql.MySQLDB;
|
||||
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
|
||||
import com.djrapitops.plan.system.database.databases.sql.SQLiteDB;
|
||||
import com.djrapitops.plan.system.database.databases.sql.tables.*;
|
||||
import com.djrapitops.plan.system.processing.processors.player.RegisterProcessor;
|
||||
import com.djrapitops.plan.systems.cache.DataCache;
|
||||
import com.djrapitops.plan.systems.info.server.ServerInfo;
|
||||
@ -89,7 +90,7 @@ public class DatabaseTest {
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() throws IOException, SQLException {
|
||||
public void tearDown() throws IOException {
|
||||
db.close();
|
||||
if (backup != null) {
|
||||
backup.close();
|
||||
@ -109,7 +110,7 @@ public class DatabaseTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInit() throws DatabaseInitException {
|
||||
public void testInit() throws DBInitException {
|
||||
db.init();
|
||||
}
|
||||
|
||||
@ -143,7 +144,7 @@ public class DatabaseTest {
|
||||
}
|
||||
|
||||
@Test(timeout = 3000)
|
||||
public void testSaveCommandUse() throws SQLException, DatabaseInitException {
|
||||
public void testSaveCommandUse() throws SQLException, DBInitException {
|
||||
CommandUseTable commandUseTable = db.getCommandUseTable();
|
||||
Map<String, Integer> expected = new HashMap<>();
|
||||
|
||||
@ -247,7 +248,7 @@ public class DatabaseTest {
|
||||
saveUserOne(db);
|
||||
}
|
||||
|
||||
private void saveUserOne(Database database) throws SQLException {
|
||||
private void saveUserOne(Database database) {
|
||||
database.getUsersTable().registerUser(uuid, 123456789L, "Test");
|
||||
}
|
||||
|
||||
@ -255,7 +256,7 @@ public class DatabaseTest {
|
||||
saveUserTwo(db);
|
||||
}
|
||||
|
||||
private void saveUserTwo(Database database) throws SQLException {
|
||||
private void saveUserTwo(Database database) {
|
||||
database.getUsersTable().registerUser(uuid2, 123456789L, "Test");
|
||||
}
|
||||
|
||||
@ -274,7 +275,7 @@ public class DatabaseTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIPTable() throws SQLException, DatabaseInitException {
|
||||
public void testIPTable() throws SQLException, DBInitException {
|
||||
saveUserOne();
|
||||
IPsTable ipsTable = db.getIpsTable();
|
||||
|
||||
@ -300,7 +301,7 @@ public class DatabaseTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNicknamesTable() throws SQLException, DatabaseInitException {
|
||||
public void testNicknamesTable() throws SQLException, DBInitException {
|
||||
saveUserOne();
|
||||
NicknamesTable nickTable = db.getNicknamesTable();
|
||||
|
||||
@ -318,7 +319,7 @@ public class DatabaseTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSecurityTable() throws SQLException, DatabaseInitException {
|
||||
public void testSecurityTable() throws SQLException, DBInitException {
|
||||
SecurityTable securityTable = db.getSecurityTable();
|
||||
WebUser expected = new WebUser("Test", "RandomGarbageBlah", 0);
|
||||
securityTable.addNewUser(expected);
|
||||
@ -341,7 +342,7 @@ public class DatabaseTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWorldTable() throws SQLException, DatabaseInitException {
|
||||
public void testWorldTable() throws SQLException, DBInitException {
|
||||
WorldTable worldTable = db.getWorldTable();
|
||||
List<String> worlds = Arrays.asList("Test", "Test2", "Test3");
|
||||
worldTable.saveWorlds(worlds);
|
||||
@ -356,7 +357,7 @@ public class DatabaseTest {
|
||||
saveTwoWorlds(db);
|
||||
}
|
||||
|
||||
private void saveTwoWorlds(Database database) throws SQLException {
|
||||
private void saveTwoWorlds(Database database) {
|
||||
database.getWorldTable().saveWorlds(worlds);
|
||||
}
|
||||
|
||||
@ -381,7 +382,7 @@ public class DatabaseTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSessionPlaytimeSaving() throws SQLException, DatabaseInitException {
|
||||
public void testSessionPlaytimeSaving() throws SQLException, DBInitException {
|
||||
saveTwoWorlds();
|
||||
saveUserOne();
|
||||
saveUserTwo();
|
||||
@ -411,7 +412,7 @@ public class DatabaseTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSessionSaving() throws SQLException, DatabaseInitException {
|
||||
public void testSessionSaving() throws SQLException, DBInitException {
|
||||
saveUserOne();
|
||||
saveUserTwo();
|
||||
|
||||
@ -452,7 +453,7 @@ public class DatabaseTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUserInfoTableRegisterUnRegistered() throws SQLException, DatabaseInitException {
|
||||
public void testUserInfoTableRegisterUnRegistered() throws SQLException, DBInitException {
|
||||
UserInfoTable userInfoTable = db.getUserInfoTable();
|
||||
assertFalse(userInfoTable.isRegistered(uuid));
|
||||
UsersTable usersTable = db.getUsersTable();
|
||||
@ -476,7 +477,7 @@ public class DatabaseTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUserInfoTableRegisterRegistered() throws SQLException, DatabaseInitException {
|
||||
public void testUserInfoTableRegisterRegistered() throws SQLException, DBInitException {
|
||||
saveUserOne();
|
||||
UsersTable usersTable = db.getUsersTable();
|
||||
assertTrue(usersTable.isRegistered(uuid));
|
||||
@ -502,7 +503,7 @@ public class DatabaseTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUserInfoTableUpdateBannedOpped() throws SQLException, DatabaseInitException {
|
||||
public void testUserInfoTableUpdateBannedOpped() throws SQLException, DBInitException {
|
||||
UserInfoTable userInfoTable = db.getUserInfoTable();
|
||||
userInfoTable.registerUserInfo(uuid, 223456789L);
|
||||
assertTrue(userInfoTable.isRegistered(uuid));
|
||||
@ -532,7 +533,7 @@ public class DatabaseTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUsersTableUpdateName() throws SQLException, DatabaseInitException {
|
||||
public void testUsersTableUpdateName() throws SQLException, DBInitException {
|
||||
saveUserOne();
|
||||
|
||||
UsersTable usersTable = db.getUsersTable();
|
||||
@ -549,7 +550,7 @@ public class DatabaseTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUsersTableKickSaving() throws SQLException, DatabaseInitException {
|
||||
public void testUsersTableKickSaving() throws SQLException, DBInitException {
|
||||
saveUserOne();
|
||||
UsersTable usersTable = db.getUsersTable();
|
||||
assertEquals(0, usersTable.getTimesKicked(uuid));
|
||||
@ -564,7 +565,7 @@ public class DatabaseTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRemovalSingleUser() throws SQLException {
|
||||
public void testRemovalSingleUser() throws SQLException, DBException {
|
||||
saveUserTwo();
|
||||
|
||||
UserInfoTable userInfoTable = db.getUserInfoTable();
|
||||
@ -589,7 +590,7 @@ public class DatabaseTest {
|
||||
|
||||
assertTrue(usersTable.isRegistered(uuid));
|
||||
|
||||
db.removeAccount(uuid);
|
||||
db.remove().player(uuid);
|
||||
|
||||
assertFalse(usersTable.isRegistered(uuid));
|
||||
assertFalse(userInfoTable.isRegistered(uuid));
|
||||
@ -600,7 +601,7 @@ public class DatabaseTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRemovalEverything() throws SQLException {
|
||||
public void testRemovalEverything() throws SQLException, DBException {
|
||||
UserInfoTable userInfoTable = db.getUserInfoTable();
|
||||
UsersTable usersTable = db.getUsersTable();
|
||||
SessionsTable sessionsTable = db.getSessionsTable();
|
||||
@ -612,7 +613,7 @@ public class DatabaseTest {
|
||||
|
||||
saveAllData(db);
|
||||
|
||||
db.removeAllData();
|
||||
db.remove().everything();
|
||||
|
||||
assertFalse(usersTable.isRegistered(uuid));
|
||||
assertFalse(usersTable.isRegistered(uuid2));
|
||||
@ -687,7 +688,7 @@ public class DatabaseTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testServerTableBungeeSave() throws SQLException, DatabaseInitException {
|
||||
public void testServerTableBungeeSave() throws SQLException, DBInitException {
|
||||
ServerTable serverTable = db.getServerTable();
|
||||
|
||||
Optional<ServerInfo> bungeeInfo = serverTable.getBungeeInfo();
|
||||
@ -711,7 +712,7 @@ public class DatabaseTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testServerTableBungee() throws SQLException, DatabaseInitException {
|
||||
public void testServerTableBungee() throws SQLException, DBInitException {
|
||||
testServerTableBungeeSave();
|
||||
ServerTable serverTable = db.getServerTable();
|
||||
|
||||
@ -720,18 +721,18 @@ public class DatabaseTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSessionTableNPEWhenNoPlayers() throws SQLException {
|
||||
public void testSessionTableNPEWhenNoPlayers() {
|
||||
Map<UUID, Long> lastSeen = db.getSessionsTable().getLastSeenForAllPlayers();
|
||||
assertTrue(lastSeen.isEmpty());
|
||||
}
|
||||
|
||||
private void commitTest() throws DatabaseInitException, SQLException {
|
||||
private void commitTest() throws DBInitException {
|
||||
db.close();
|
||||
db.init();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSessionTableGetInfoOfServer() throws SQLException, DatabaseInitException {
|
||||
public void testSessionTableGetInfoOfServer() throws SQLException, DBInitException {
|
||||
saveUserOne();
|
||||
saveUserTwo();
|
||||
|
||||
@ -758,7 +759,7 @@ public class DatabaseTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testKillTableGetKillsOfServer() throws SQLException, DatabaseInitException {
|
||||
public void testKillTableGetKillsOfServer() throws SQLException, DBInitException {
|
||||
saveUserOne();
|
||||
saveUserTwo();
|
||||
|
||||
@ -777,7 +778,7 @@ public class DatabaseTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBackupAndRestore() throws SQLException, DatabaseInitException {
|
||||
public void testBackupAndRestore() throws SQLException, DBInitException {
|
||||
SQLiteDB backup = new SQLiteDB("debug-backup" + MiscUtils.getTime());
|
||||
backup.init();
|
||||
|
||||
@ -872,7 +873,7 @@ public class DatabaseTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRegisterProcessorRegisterException() throws SQLException {
|
||||
public void testRegisterProcessorRegisterException() {
|
||||
assertFalse(db.getUsersTable().isRegistered(uuid));
|
||||
assertFalse(db.getUserInfoTable().isRegistered(uuid));
|
||||
for (int i = 0; i < 200; i++) {
|
||||
@ -883,7 +884,7 @@ public class DatabaseTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWorldTableGetWorldNamesNoException() throws SQLException {
|
||||
public void testWorldTableGetWorldNamesNoException() {
|
||||
Set<String> worldNames = db.getWorldTable().getWorldNames();
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.djrapitops.plan.system.database.tables;
|
||||
package com.djrapitops.plan.system.database.databases.sql.tables;
|
||||
|
||||
import com.djrapitops.plan.data.Actions;
|
||||
import org.junit.Test;
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user