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