From 3925a99ead9f2bd2c2f21d279741b0f26ac95c36 Mon Sep 17 00:00:00 2001 From: Rsl1122 Date: Tue, 8 Aug 2017 20:14:28 +0300 Subject: [PATCH 1/2] APF 2.0.2 Fix Tests Debug Messages & Benchmarks addHelp method override --- Plan/pom.xml | 2 +- .../main/java/com/djrapitops/plan/Log.java | 50 +++++++++++ .../main/java/com/djrapitops/plan/Plan.java | 53 ++++++----- .../djrapitops/plan/command/PlanCommand.java | 7 +- .../plan/command/commands/AnalyzeCommand.java | 7 +- .../plan/command/commands/InspectCommand.java | 7 +- .../plan/command/commands/ListCommand.java | 9 +- .../plan/command/commands/ManageCommand.java | 7 +- .../command/commands/QuickAnalyzeCommand.java | 7 +- .../command/commands/QuickInspectCommand.java | 7 +- .../command/commands/RegisterCommand.java | 7 +- .../plan/command/commands/SearchCommand.java | 7 +- .../plan/command/commands/WebUserCommand.java | 7 +- .../commands/manage/ManageClearCommand.java | 7 +- .../commands/manage/ManageHotswapCommand.java | 7 +- .../commands/manage/ManageImportCommand.java | 7 +- .../commands/manage/ManageRemoveCommand.java | 7 +- .../commands/webuser/WebDeleteCommand.java | 2 +- .../djrapitops/plan/data/AnalysisData.java | 4 +- .../com/djrapitops/plan/data/WebUser.java | 19 ++++ .../plan/data/additional/HookHandler.java | 3 +- .../plan/database/databases/SQLDB.java | 89 ++++++++++++------- .../plan/database/tables/CommandUseTable.java | 9 +- .../plan/database/tables/GMTimesTable.java | 18 ++-- .../plan/database/tables/IPsTable.java | 22 ++--- .../plan/database/tables/KillsTable.java | 18 ++-- .../plan/database/tables/NicknamesTable.java | 18 ++-- .../plan/database/tables/SessionsTable.java | 22 +++-- .../plan/database/tables/TPSTable.java | 24 ++--- .../plan/database/tables/Table.java | 5 +- .../plan/database/tables/UsersTable.java | 64 ++++++------- .../plan/database/tables/VersionTable.java | 1 + .../html/tables/CommandUseTableCreator.java | 6 +- .../ui/html/tables/PlayersTableCreator.java | 4 - .../djrapitops/plan/utilities/Benchmark.java | 13 ++- .../com/djrapitops/plan/utilities/Check.java | 1 - .../plan/utilities/PassEncryptUtil.java | 2 +- .../plan/utilities/analysis/Analysis.java | 33 +++---- .../utilities/analysis/AnalysisUtils.java | 3 +- .../djrapitops/plan/database/DBUtilsTest.java | 22 ++--- .../plan/database/DatabaseCommitTest.java | 2 +- Plan/src/test/java/utils/TestInit.java | 2 +- 42 files changed, 358 insertions(+), 253 deletions(-) diff --git a/Plan/pom.xml b/Plan/pom.xml index 8d6d3b44d..964526153 100644 --- a/Plan/pom.xml +++ b/Plan/pom.xml @@ -28,7 +28,7 @@ com.djrapitops abstract-plugin-framework - 2.0.1 + 2.0.2 compile diff --git a/Plan/src/main/java/com/djrapitops/plan/Log.java b/Plan/src/main/java/com/djrapitops/plan/Log.java index e64feca63..ba0e42dd7 100644 --- a/Plan/src/main/java/com/djrapitops/plan/Log.java +++ b/Plan/src/main/java/com/djrapitops/plan/Log.java @@ -1,5 +1,8 @@ package main.java.com.djrapitops.plan; +import com.djrapitops.plugin.utilities.log.DebugInfo; +import main.java.com.djrapitops.plan.utilities.MiscUtils; + import java.util.Collection; /** @@ -55,6 +58,48 @@ public class Log { Plan.getInstance().getPluginLogger().debug(message); } + /** + * Used for logging larger debug complexes. + * + * @param task complex this debug message is a part of. + * @param message message + * @return full debug complex so far. + */ + public static DebugInfo debug(String task, String message) { + DebugInfo debug = getDebug(task); + debug.addLine(message, MiscUtils.getTime()); + return debug; + } + + /** + * Used for logging larger debug complexes. + * + * @param task complex to get + * @return full debug complex so far. + */ + public static DebugInfo getDebug(String task) { + return Plan.getInstance().getPluginLogger().getDebug(task); + } + + /** + * Logs the full debug complex to the debug log. + * + * @param task complex to log. + */ + public static void logDebug(String task) { + getDebug(task).toLog(); + } + + /** + * Logs the full debug complex to the debug log with an execution time. + * + * @param task complex to log. + * @param time execution time. + */ + public static void logDebug(String task, long time) { + getDebug(task).toLog(time); + } + /** * Logs trace of caught Exception to Errors.txt and notifies on console. * @@ -80,7 +125,10 @@ public class Log { * * @param message Message to log to Errors.txt [timestamp] Message * @param filename Name of the file to write to. + * @deprecated Should no longer be used, may break other log handling mechanisms. + * If exception requires additional information it should be placed in the source string. */ + @Deprecated public static void toLog(String message, String filename) { Plan.getInstance().getPluginLogger().toLog(message, filename); } @@ -89,7 +137,9 @@ public class Log { * Used to get the name for the error log file. * * @return Name of the error log file. + * @deprecated Should no longer be used, Errors.txt is handled by a separate class. */ + @Deprecated public static String getErrorsFilename() { return Plan.getInstance().getPluginLogger().getErrorsFilename(); } diff --git a/Plan/src/main/java/com/djrapitops/plan/Plan.java b/Plan/src/main/java/com/djrapitops/plan/Plan.java index 7da45aa3a..a721748e4 100644 --- a/Plan/src/main/java/com/djrapitops/plan/Plan.java +++ b/Plan/src/main/java/com/djrapitops/plan/Plan.java @@ -122,20 +122,20 @@ public class Plan extends BukkitPlugin { // Initializes BukkitPlugin variables, Checks version & Logs the debug header super.onEnableDefaultTasks(); - processStatus().startExecution("Enable"); + Benchmark.start("Enable"); initLocale(); - Benchmark.start("Enable: Reading server variables"); + Benchmark.start("Reading server variables"); serverVariableHolder = new ServerVariableHolder(getServer()); - Benchmark.stop("Enable: Reading server variables"); + Benchmark.stop("Enable", "Reading server variables"); - Benchmark.start("Enable: Copy default config"); + Benchmark.start("Copy default config"); getConfig().options().copyDefaults(true); getConfig().options().header(Phrase.CONFIG_HEADER.toString()); saveConfig(); - Benchmark.stop("Enable: Copy default config"); + Benchmark.stop("Enable", "Copy default config"); - Benchmark.start("Enable: Init Database"); + Benchmark.start("Init Database"); Log.info(Phrase.DB_INIT.toString()); if (Check.ErrorIfFalse(initDatabase(), Phrase.DB_FAILURE_DISABLE.toString())) { Log.info(Phrase.DB_ESTABLISHED.parse(db.getConfigName())); @@ -143,23 +143,23 @@ public class Plan extends BukkitPlugin { disablePlugin(); return; } - Benchmark.stop("Enable: Init Database"); + Benchmark.stop("Enable", "Init Database"); - Benchmark.start("Enable: Init DataCache"); + Benchmark.start("Init DataCache"); this.handler = new DataCacheHandler(this); this.inspectCache = new InspectCacheHandler(this); this.analysisCache = new AnalysisCacheHandler(this); - Benchmark.stop("Enable: Init DataCache"); + Benchmark.stop("Enable", "Init DataCache"); super.getRunnableFactory().createNew(new TPSCountTimer(this)).runTaskTimer(1000, TimeAmount.SECOND.ticks()); registerListeners(); this.api = new API(this); - Benchmark.start("Enable: Handle Reload"); + Benchmark.start("Handle Reload"); handler.handleReload(); - Benchmark.stop("Enable: Handle Reload"); + Benchmark.stop("Enable", "Handle Reload"); - Benchmark.start("Enable: Analysis refresh task registration"); + Benchmark.start("Analysis refresh task registration"); // Analysis refresh settings boolean bootAnalysisIsEnabled = Settings.ANALYSIS_REFRESH_ON_ENABLE.isTrue(); int analysisRefreshMinutes = Settings.ANALYSIS_AUTO_REFRESH.getNumber(); @@ -172,9 +172,9 @@ public class Plan extends BukkitPlugin { if (analysisRefreshTaskIsEnabled) { startAnalysisRefreshTask(analysisRefreshMinutes); } - Benchmark.stop("Enable: Analysis refresh task registration"); + Benchmark.stop("Enable", "Analysis refresh task registration"); - Benchmark.start("Enable: WebServer Initialization"); + Benchmark.start("WebServer Initialization"); // Data view settings boolean webserverIsEnabled = Settings.WEBSERVER_ENABLED.isTrue(); boolean usingAlternativeIP = Settings.SHOW_ALTERNATIVE_IP.isTrue(); @@ -196,20 +196,20 @@ public class Plan extends BukkitPlugin { if (!usingAlternativeIP && serverVariableHolder.getIp().isEmpty()) { Log.infoColor(Phrase.NOTIFY_EMPTY_IP.toString()); } - Benchmark.stop("Enable: WebServer Initialization"); + Benchmark.stop("Enable", "WebServer Initialization"); registerCommand(new PlanCommand(this)); - Benchmark.start("Enable: Hook to 3rd party plugins"); + Benchmark.start("Hook to 3rd party plugins"); hookHandler = new HookHandler(this); - Benchmark.stop("Enable: Hook to 3rd party plugins"); + Benchmark.stop("Enable", "Hook to 3rd party plugins"); BStats bStats = new BStats(this); bStats.registerMetrics(); Log.debug("Verbose debug messages are enabled."); + Log.logDebug("Enable", Benchmark.stop("Enable", "Enable")); Log.info(Phrase.ENABLED.toString()); - processStatus().finishExecution("Enable"); } /** @@ -248,7 +248,7 @@ public class Plan extends BukkitPlugin { } private void registerListeners() { - Benchmark.start("Enable: Register Listeners"); + Benchmark.start("Register Listeners"); registerListener(new PlanPlayerListener(this)); boolean chatListenerIsEnabled = Check.isTrue(Settings.GATHERCHAT.isTrue(), Phrase.NOTIFY_DISABLED_CHATLISTENER.toString()); boolean commandListenerIsEnabled = Check.isTrue(Settings.GATHERCOMMANDS.isTrue(), Phrase.NOTIFY_DISABLED_COMMANDLISTENER.toString()); @@ -269,7 +269,7 @@ public class Plan extends BukkitPlugin { registerListener(new PlanDeathEventListener(this)); } - Benchmark.stop("Enable: Register Listeners"); + Benchmark.stop("Register Listeners"); } /** @@ -288,7 +288,6 @@ public class Plan extends BukkitPlugin { for (Database database : databases) { String databaseType = database.getConfigName().toLowerCase().trim(); - Log.debug(databaseType + ": " + Verify.equalsIgnoreCase(dbType, databaseType)); if (Verify.equalsIgnoreCase(dbType, databaseType)) { this.db = database; break; @@ -304,7 +303,7 @@ public class Plan extends BukkitPlugin { } private void startAnalysisRefreshTask(int everyXMinutes) throws IllegalStateException { - Benchmark.start("Enable: Schedule PeriodicAnalysisTask"); + Benchmark.start("Schedule PeriodicAnalysisTask"); if (everyXMinutes <= 0) { return; } @@ -317,11 +316,11 @@ public class Plan extends BukkitPlugin { } } }).runTaskTimerAsynchronously(everyXMinutes * TimeAmount.MINUTE.ticks(), everyXMinutes * TimeAmount.MINUTE.ticks()); - Benchmark.stop("Enable: Schedule PeriodicAnalysisTask"); + Benchmark.stop("Schedule PeriodicAnalysisTask"); } private void startBootAnalysisTask() throws IllegalStateException { - Benchmark.start("Enable: Schedule boot analysis task"); + Benchmark.start("Schedule boot analysis task"); Log.info(Phrase.ANALYSIS_BOOT_NOTIFY + ""); ITask bootAnalysisTask = getRunnableFactory().createNew("BootAnalysisTask", new AbsRunnable() { @Override @@ -333,7 +332,7 @@ public class Plan extends BukkitPlugin { } }).runTaskLaterAsynchronously(30 * TimeAmount.SECOND.ticks()); bootAnalysisTaskID = bootAnalysisTask.getTaskId(); - Benchmark.stop("Enable: Schedule boot analysis task"); + Benchmark.stop("Enable", "Schedule boot analysis task"); } /** @@ -367,7 +366,7 @@ public class Plan extends BukkitPlugin { String defaultLocale = "Default: EN"; String locale = Settings.LOCALE.toString().toUpperCase(); - Benchmark.start("Enable: Initializing locale"); + Benchmark.start("Initializing locale"); File localeFile = new File(getDataFolder(), "locale.txt"); String usingLocale; @@ -441,7 +440,7 @@ public class Plan extends BukkitPlugin { * @implNote Removes clutter in the method */ private void stopInitLocale(String usingLocale) { - Benchmark.stop("Enable: Initializing locale"); + Benchmark.stop("Enable", "Initializing locale"); Log.info("Using locale: " + usingLocale); } diff --git a/Plan/src/main/java/com/djrapitops/plan/command/PlanCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/PlanCommand.java index 9a840ab58..5720937fb 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/PlanCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/PlanCommand.java @@ -28,10 +28,10 @@ public class PlanCommand extends TreeCommand { public PlanCommand(Plan plugin) { super(plugin, "plan", CommandType.CONSOLE, "", "", "plan"); super.setDefaultCommand("inspect"); - setHelp(plugin); } - private void setHelp(Plan plugin) { + @Override + public String[] addHelp() { ColorScheme colorScheme = plugin.getColorScheme(); String mCol = colorScheme.getMainColor(); @@ -44,8 +44,7 @@ public class PlanCommand extends TreeCommand { sCol + " /plan - List subcommands", sCol + " /plan ? - in depth help" }; - - setInDepthHelp(help); + return help; } @Override diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/AnalyzeCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/AnalyzeCommand.java index 93db0e186..2054af449 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/AnalyzeCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/AnalyzeCommand.java @@ -36,10 +36,10 @@ public class AnalyzeCommand extends SubCommand { super("analyze, analyse, analysis, a", CommandType.CONSOLE, Permissions.ANALYZE.getPermission(), Phrase.CMD_USG_ANALYZE.parse()); this.plugin = plugin; analysisCache = plugin.getAnalysisCache(); - setHelp(plugin); } - private void setHelp(Plan plugin) { + @Override + public String[] addHelp() { ColorScheme colorScheme = plugin.getColorScheme(); String mCol = colorScheme.getMainColor(); @@ -52,8 +52,7 @@ public class AnalyzeCommand extends SubCommand { sCol + " /plan status can be used to check status of analysis while it is running.", sCol + " Aliases: analyze, analyse, analysis, a" }; - - setInDepthHelp(help); + return help; } @Override diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/InspectCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/InspectCommand.java index 9a16ff96a..c3bad335b 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/InspectCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/InspectCommand.java @@ -42,10 +42,11 @@ public class InspectCommand extends SubCommand { this.plugin = plugin; inspectCache = plugin.getInspectCache(); - setHelp(plugin); + } - private void setHelp(Plan plugin) { + @Override + public String[] addHelp() { ColorScheme colorScheme = plugin.getColorScheme(); String mCol = colorScheme.getMainColor(); @@ -59,7 +60,7 @@ public class InspectCommand extends SubCommand { sCol + " Alias: /plan " }; - super.setInDepthHelp(help); + return help; } @Override diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/ListCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/ListCommand.java index 7c805e4b2..f66c070e4 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/ListCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/ListCommand.java @@ -30,11 +30,12 @@ public class ListCommand extends SubCommand { public ListCommand(Plan plugin) { super("list, pl", CommandType.CONSOLE, Permissions.INSPECT_OTHER.getPermission(), "List to all cached players", ""); - setHelp(plugin); + } - private void setHelp(Plan plugin) { - ColorScheme colorScheme = plugin.getColorScheme(); + @Override + public String[] addHelp() { + ColorScheme colorScheme = Plan.getInstance().getColorScheme(); String mCol = colorScheme.getMainColor(); String sCol = colorScheme.getSecondaryColor(); @@ -47,7 +48,7 @@ public class ListCommand extends SubCommand { sCol + " Alias: /plan pl" }; - setInDepthHelp(help); + return help; } @Override diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/ManageCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/ManageCommand.java index e476ac497..233e8cac9 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/ManageCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/ManageCommand.java @@ -25,10 +25,11 @@ public class ManageCommand extends TreeCommand { */ public ManageCommand(Plan plugin) { super(plugin, "manage,m", CommandType.CONSOLE, Permissions.MANAGE.getPermission(), Phrase.CMD_USG_MANAGE + "", "plan m"); - setHelp(plugin); + } - private void setHelp(Plan plugin) { + @Override + public String[] addHelp() { ColorScheme colorScheme = plugin.getColorScheme(); String mCol = colorScheme.getMainColor(); @@ -43,7 +44,7 @@ public class ManageCommand extends TreeCommand { sCol + " /plan m ? - in depth help" }; - setInDepthHelp(help); + return help; } @Override diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/QuickAnalyzeCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/QuickAnalyzeCommand.java index 150543275..f31a74d1d 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/QuickAnalyzeCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/QuickAnalyzeCommand.java @@ -37,10 +37,11 @@ public class QuickAnalyzeCommand extends SubCommand { super("qanalyze, qanalyse, qanalysis, qa", CommandType.CONSOLE, Permissions.QUICK_ANALYZE.getPermission(), Phrase.CMD_USG_QANALYZE.parse()); this.plugin = plugin; analysisCache = plugin.getAnalysisCache(); - setHelp(plugin); + } - private void setHelp(Plan plugin) { + @Override + public String[] addHelp() { ColorScheme colorScheme = plugin.getColorScheme(); String mCol = colorScheme.getMainColor(); @@ -54,7 +55,7 @@ public class QuickAnalyzeCommand extends SubCommand { sCol + " Aliases: qanalyze, ganalyse, qanalysis, qa" }; - setInDepthHelp(help); + return help; } @Override diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/QuickInspectCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/QuickInspectCommand.java index 10b35dc39..536ca9a9e 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/QuickInspectCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/QuickInspectCommand.java @@ -42,10 +42,11 @@ public class QuickInspectCommand extends SubCommand { this.plugin = plugin; inspectCache = plugin.getInspectCache(); - setHelp(plugin); + } - private void setHelp(Plan plugin) { + @Override + public String[] addHelp() { ColorScheme colorScheme = plugin.getColorScheme(); String mCol = colorScheme.getMainColor(); @@ -59,7 +60,7 @@ public class QuickInspectCommand extends SubCommand { sCol + " Alias: /plan qi" }; - setInDepthHelp(help); + return help; } @Override diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/RegisterCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/RegisterCommand.java index 55021ed41..263d0045d 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/RegisterCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/RegisterCommand.java @@ -35,10 +35,11 @@ public class RegisterCommand extends SubCommand { public RegisterCommand(Plan plugin) { super("register", CommandType.CONSOLE_WITH_ARGUMENTS, "", "Register a user for the webserver", " [name] [access lvl]"); this.plugin = plugin; - setHelp(plugin); + } - private void setHelp(Plan plugin) { + @Override + public String[] addHelp() { ColorScheme colorScheme = plugin.getColorScheme(); String mCol = colorScheme.getMainColor(); @@ -52,7 +53,7 @@ public class RegisterCommand extends SubCommand { sCol + " Passwords are hashed with PBKDF2 (64,000 iterations of SHA1) using a cryptographically-random salt." }; - setInDepthHelp(help); + return help; } @Override diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/SearchCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/SearchCommand.java index 9b10e0b76..8348e94de 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/SearchCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/SearchCommand.java @@ -33,10 +33,11 @@ public class SearchCommand extends SubCommand { public SearchCommand(Plan plugin) { super("search", CommandType.CONSOLE_WITH_ARGUMENTS, Permissions.SEARCH.getPermission(), Phrase.CMD_USG_SEARCH.toString(), Phrase.ARG_SEARCH.toString()); this.plugin = plugin; - setHelp(plugin); + } - private void setHelp(Plan plugin) { + @Override + public String[] addHelp() { ColorScheme colorScheme = plugin.getColorScheme(); String mCol = colorScheme.getMainColor(); @@ -49,7 +50,7 @@ public class SearchCommand extends SubCommand { sCol + " Example: /plan search 123 - Finds all users with 123 in their name." }; - setInDepthHelp(help); + return help; } @Override diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/WebUserCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/WebUserCommand.java index 7aa69b078..ff7c0dc45 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/WebUserCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/WebUserCommand.java @@ -21,10 +21,11 @@ public class WebUserCommand extends TreeCommand { public WebUserCommand(Plan plugin, RegisterCommand register) { super(plugin, "webuser, web", CommandType.CONSOLE, Permissions.MANAGE_WEB.getPerm(), "Manage Webusers", "plan web"); commands.add(register); - setHelp(plugin); + } - private void setHelp(Plan plugin) { + @Override + public String[] addHelp() { ColorScheme colorScheme = plugin.getColorScheme(); String mCol = colorScheme.getMainColor(); @@ -41,7 +42,7 @@ public class WebUserCommand extends TreeCommand { sCol + " Alias: /plan web" }; - setInDepthHelp(help); + return help; } @Override diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageClearCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageClearCommand.java index 6aba02654..efdd3b807 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageClearCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageClearCommand.java @@ -33,10 +33,11 @@ public class ManageClearCommand extends SubCommand { super("clear", CommandType.CONSOLE_WITH_ARGUMENTS, Permissions.MANAGE.getPermission(), Phrase.CMD_USG_MANAGE_CLEAR + "", " [-a]"); this.plugin = plugin; - setHelp(plugin); + } - private void setHelp(Plan plugin) { + @Override + public String[] addHelp() { ColorScheme colorScheme = plugin.getColorScheme(); String mCol = colorScheme.getMainColor(); @@ -50,7 +51,7 @@ public class ManageClearCommand extends SubCommand { sCol + " Alias: /plan pl" }; - setInDepthHelp(help); + return help; } @Override diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageHotswapCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageHotswapCommand.java index a08f59a83..38be12524 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageHotswapCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageHotswapCommand.java @@ -33,10 +33,11 @@ public class ManageHotswapCommand extends SubCommand { super("hotswap", CommandType.CONSOLE_WITH_ARGUMENTS, Permissions.MANAGE.getPermission(), Phrase.CMD_USG_MANAGE_HOTSWAP.toString(), ""); this.plugin = plugin; - setHelp(plugin); + } - private void setHelp(Plan plugin) { + @Override + public String[] addHelp() { ColorScheme colorScheme = plugin.getColorScheme(); String mCol = colorScheme.getMainColor(); @@ -49,7 +50,7 @@ public class ManageHotswapCommand extends SubCommand { sCol + " Does not change database if connection fails" }; - setInDepthHelp(help); + return help; } @Override diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageImportCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageImportCommand.java index e13d5baf7..6eb6970fb 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageImportCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageImportCommand.java @@ -40,10 +40,11 @@ public class ManageImportCommand extends SubCommand { public ManageImportCommand(Plan plugin) { super("import", CommandType.CONSOLE, Permissions.MANAGE.getPermission(), Phrase.CMD_USG_MANAGE_IMPORT.toString(), Phrase.ARG_IMPORT.toString()); this.plugin = plugin; - setHelp(plugin); + } - private void setHelp(Plan plugin) { + @Override + public String[] addHelp() { ColorScheme colorScheme = plugin.getColorScheme(); String mCol = colorScheme.getMainColor(); @@ -57,7 +58,7 @@ public class ManageImportCommand extends SubCommand { sCol + " If a lot of users are not in the database, saving may take a long time." }; - setInDepthHelp(help); + return help; } @Override diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageRemoveCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageRemoveCommand.java index 30e6afc1c..631595dd2 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageRemoveCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageRemoveCommand.java @@ -36,10 +36,11 @@ public class ManageRemoveCommand extends SubCommand { super("remove", CommandType.CONSOLE_WITH_ARGUMENTS, Permissions.MANAGE.getPermission(), Phrase.CMD_USG_MANAGE_REMOVE.toString(), Phrase.ARG_PLAYER + " [-a]"); this.plugin = plugin; - setHelp(plugin); + } - private void setHelp(Plan plugin) { + @Override + public String[] addHelp() { ColorScheme colorScheme = plugin.getColorScheme(); String mCol = colorScheme.getMainColor(); @@ -50,7 +51,7 @@ public class ManageRemoveCommand extends SubCommand { tCol + " Used to Remove user's data from the active database." }; - setInDepthHelp(help); + return help; } @Override diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/webuser/WebDeleteCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/webuser/WebDeleteCommand.java index a173297dd..2c2b6ca4d 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/webuser/WebDeleteCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/webuser/WebDeleteCommand.java @@ -23,7 +23,7 @@ public class WebDeleteCommand extends SubCommand { private final Plan plugin; public WebDeleteCommand(Plan plugin) { - super("delete", CommandType.CONSOLE_WITH_ARGUMENTS, Permissions.MANAGE_WEB.getPerm(), "Delete a webuser", ""); + super("delete, remove", CommandType.CONSOLE_WITH_ARGUMENTS, Permissions.MANAGE_WEB.getPerm(), "Delete a webuser", ""); this.plugin = plugin; } diff --git a/Plan/src/main/java/com/djrapitops/plan/data/AnalysisData.java b/Plan/src/main/java/com/djrapitops/plan/data/AnalysisData.java index b740fabaa..235efa784 100644 --- a/Plan/src/main/java/com/djrapitops/plan/data/AnalysisData.java +++ b/Plan/src/main/java/com/djrapitops/plan/data/AnalysisData.java @@ -142,9 +142,9 @@ public class AnalysisData extends RawData { final List parts = getAllParts(); parts.forEach(part -> { try { - Benchmark.start("Analysis Phase: " + part.getClass().getSimpleName()); + Benchmark.start(part.getClass().getSimpleName()); part.analyseData(); - Benchmark.stop("Analysis Phase: " + part.getClass().getSimpleName()); + Benchmark.stop("Analysis", part.getClass().getSimpleName()); if (part.isAnalysed()) { addValues(part.getReplaceMap()); } diff --git a/Plan/src/main/java/com/djrapitops/plan/data/WebUser.java b/Plan/src/main/java/com/djrapitops/plan/data/WebUser.java index c2c8c1441..b1cda0647 100644 --- a/Plan/src/main/java/com/djrapitops/plan/data/WebUser.java +++ b/Plan/src/main/java/com/djrapitops/plan/data/WebUser.java @@ -30,4 +30,23 @@ public class WebUser { return permLevel; } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + WebUser webUser = (WebUser) o; + + if (permLevel != webUser.permLevel) return false; + if (!user.equals(webUser.user)) return false; + return saltedPassHash.equals(webUser.saltedPassHash); + } + + @Override + public int hashCode() { + int result = user.hashCode(); + result = 31 * result + saltedPassHash.hashCode(); + result = 31 * result + permLevel; + return result; + } } diff --git a/Plan/src/main/java/com/djrapitops/plan/data/additional/HookHandler.java b/Plan/src/main/java/com/djrapitops/plan/data/additional/HookHandler.java index 45eaf5d43..84961d4de 100644 --- a/Plan/src/main/java/com/djrapitops/plan/data/additional/HookHandler.java +++ b/Plan/src/main/java/com/djrapitops/plan/data/additional/HookHandler.java @@ -166,8 +166,7 @@ public class HookHandler { } catch (Exception e) { addReplace.put(source.getPlaceholder(""), "Error occurred: " + e); Log.error("PluginDataSource caused an exception: " + source.getSourcePlugin()); - Log.toLog("PluginDataSource caused an exception: " + source.getSourcePlugin(), Log.getErrorsFilename()); - Log.toLog(this.getClass().getName(), e); + Log.toLog("PluginDataSource " + source.getSourcePlugin(), e); } } return addReplace; diff --git a/Plan/src/main/java/com/djrapitops/plan/database/databases/SQLDB.java b/Plan/src/main/java/com/djrapitops/plan/database/databases/SQLDB.java index 8614e8fe0..5dd28814b 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/databases/SQLDB.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/databases/SQLDB.java @@ -12,6 +12,7 @@ import main.java.com.djrapitops.plan.database.Database; import main.java.com.djrapitops.plan.database.tables.*; import main.java.com.djrapitops.plan.utilities.Benchmark; import main.java.com.djrapitops.plan.utilities.FormatUtils; +import main.java.com.djrapitops.plan.utilities.MiscUtils; import java.net.InetAddress; import java.sql.Connection; @@ -61,10 +62,9 @@ public abstract class SQLDB extends Database { } /** - * @throws IllegalArgumentException - * @throws IllegalStateException + * Starts repeating Async task that maintains the Database connection. */ - public void startConnectionPingTask() throws IllegalArgumentException, IllegalStateException { + public void startConnectionPingTask() { // Maintains Connection. plugin.getRunnableFactory().createNew(new AbsRunnable("DBConnectionPingTask " + getName()) { @Override @@ -78,26 +78,28 @@ public abstract class SQLDB extends Database { } catch (SQLException e) { connection = getNewConnection(); } finally { - if (statement != null) { - try { - statement.close(); - } catch (SQLException e) { - Log.error("Error at closing statement"); - } - } + MiscUtils.close(statement); } } }).runTaskTimerAsynchronously(60 * 20, 60 * 20); } /** - * @return + * Initializes the Database. + *

+ * All tables exist in the database after call to this. + * Updates Schema to latest version. + * Converts Unsaved Bukkit player files to database data. + * Cleans the database. + * + * @return Was the Initialization successful. */ @Override public boolean init() { super.init(); setStatus("Init"); - Benchmark.start("Database: Init " + getConfigName()); + String benchName = "Init " + getConfigName(); + Benchmark.start(benchName); try { if (!checkConnection()) { return false; @@ -109,12 +111,18 @@ public abstract class SQLDB extends Database { Log.toLog(this.getClass().getName(), e); return false; } finally { - Benchmark.stop("Database: Init " + getConfigName()); + Benchmark.stop("Database", benchName); + Log.logDebug("Database"); } } /** - * @return @throws SQLException + * Ensures connection functions correctly and all tables exist. + *

+ * Updates to latest schema. + * + * @return Is the connection usable? + * @throws SQLException */ public boolean checkConnection() throws SQLException { if (connection == null || connection.isClosed()) { @@ -141,7 +149,7 @@ public abstract class SQLDB extends Database { setVersion(8); } - Benchmark.start("Database: Create tables"); + Benchmark.start("DCreate tables"); for (Table table : getAllTables()) { if (!table.createTable()) { @@ -154,7 +162,7 @@ public abstract class SQLDB extends Database { Log.error("Failed to create table: " + securityTable.getTableName()); return false; } - Benchmark.stop("Database: Create tables"); + Benchmark.stop("Database", "Create tables"); if (!newDatabase && getVersion() < 8) { setVersion(8); @@ -171,7 +179,7 @@ public abstract class SQLDB extends Database { @Override public void run() { try { - Benchmark.start("Database: Convert Bukkitdata to DB data"); + Benchmark.start("Convert BukkitData to DB data"); Set uuids = usersTable.getSavedUUIDs(); uuids.removeAll(usersTable.getContainsBukkitData(uuids)); if (uuids.isEmpty()) { @@ -186,7 +194,7 @@ public abstract class SQLDB extends Database { plugin.getServer().getScheduler().cancelTask(id); } saveMultipleUserData(getUserDataForUUIDS(uuids)); - Log.info("Conversion complete, took: " + FormatUtils.formatTimeAmount(Benchmark.stop("Database: Convert Bukkitdata to DB data")) + " ms"); + Log.info("Conversion complete, took: " + FormatUtils.formatTimeAmount(Benchmark.stop("Database", "Convert BukkitData to DB data")) + " ms"); } catch (SQLException ex) { Log.toLog(this.getClass().getName(), ex); } finally { @@ -232,6 +240,7 @@ public abstract class SQLDB extends Database { if (connection != null) { connection.close(); } + Log.logDebug("Database"); // Log remaining Debug info if present setStatus("Closed"); } @@ -285,8 +294,8 @@ public abstract class SQLDB extends Database { } try { setStatus("Remove account " + uuid); - Benchmark.start("Database: Remove Account"); - Log.debug("Removing Account: " + uuid); + Benchmark.start("Remove Account"); + Log.debug("Database", "Removing Account: " + uuid); try { checkConnection(); } catch (Exception e) { @@ -310,7 +319,7 @@ public abstract class SQLDB extends Database { } return success; } finally { - Benchmark.stop("Database: Remove Account"); + Benchmark.stop("Database", "Remove Account"); setAvailable(); } } @@ -322,7 +331,7 @@ public abstract class SQLDB extends Database { */ @Override public void giveUserDataToProcessors(UUID uuid, Collection processors) throws SQLException { - Benchmark.start("Database: Give userdata to processors"); + Benchmark.start("Give userdata to processors"); try { checkConnection(); } catch (Exception e) { @@ -361,7 +370,7 @@ public abstract class SQLDB extends Database { data.addSessions(sessions); data.setPlayerKills(killsTable.getPlayerKills(userId)); processors.forEach(processor -> processor.process(data)); - Benchmark.stop("Database: Give userdata to processors"); + Benchmark.stop("Database", "Give userdata to processors"); setAvailable(); } @@ -376,7 +385,7 @@ public abstract class SQLDB extends Database { return new ArrayList<>(); } setStatus("Get userdata (multiple) for: " + uuidsCol.size()); - Benchmark.start("Database: Get UserData for " + uuidsCol.size()); + Benchmark.start("Get UserData for " + uuidsCol.size()); Map userIds = usersTable.getAllUserIds(); Set remove = uuidsCol.stream() .filter(uuid -> !userIds.containsKey(uuid)) @@ -384,22 +393,32 @@ public abstract class SQLDB extends Database { List uuids = new ArrayList<>(uuidsCol); Log.debug("Data not found for: " + remove.size()); uuids.removeAll(remove); - Benchmark.start("Database: Create UserData objects for " + userIds.size()); + Benchmark.start("Create UserData objects for " + userIds.size()); List data = usersTable.getUserData(new ArrayList<>(uuids)); - Benchmark.stop("Database: Create UserData objects for " + userIds.size()); + Benchmark.stop("Database", "Create UserData objects for " + userIds.size()); if (data.isEmpty()) { return data; } Map idUuidRel = userIds.entrySet().stream().collect(Collectors.toMap(Map.Entry::getValue, Map.Entry::getKey)); List ids = userIds.entrySet().stream().filter(e -> uuids.contains(e.getKey())).map(Map.Entry::getValue).collect(Collectors.toList()); - Log.debug("Ids: " + ids.size()); + Log.debug("Database", "Using IDs: " + ids.size()); Map> nicknames = nicknamesTable.getNicknames(ids); Map> ipList = ipsTable.getIPList(ids); Map> playerKills = killsTable.getPlayerKills(ids, idUuidRel); Map> sessionData = sessionsTable.getSessionData(ids); Map> gmTimes = gmTimesTable.getGMTimes(ids); Map> worldTimes = worldTimesTable.getWorldTimes(ids); - Log.debug("Sizes: UUID:" + uuids.size() + " DATA:" + data.size() + " ID:" + userIds.size() + " N:" + nicknames.size() + " I:" + ipList.size() + " K:" + playerKills.size() + " S:" + sessionData.size()); + + Log.debug("Database", "Data found for:"); + Log.debug("Database", "UUIDs: " + uuids.size()); + Log.debug("Database", "IDs: " + userIds.size()); + Log.debug("Database", "UserData: " + data.size()); + Log.debug("Database", " Nicknames: " + nicknames.size()); + Log.debug("Database", " IPs: " + ipList.size()); + Log.debug("Database", " Kills: " + playerKills.size()); + Log.debug("Database", " Sessions: " + sessionData.size()); + Log.debug("Database", " GM Times: " + gmTimes.size()); + Log.debug("Database", " World Times: " + worldTimes.size()); for (UserData uData : data) { UUID uuid = uData.getUuid(); @@ -420,7 +439,7 @@ public abstract class SQLDB extends Database { } } - Benchmark.stop("Database: Get UserData for " + uuidsCol.size()); + Benchmark.stop("Database", "Get UserData for " + uuidsCol.size()); setAvailable(); return data; } @@ -435,7 +454,7 @@ public abstract class SQLDB extends Database { return; } - Benchmark.start("Database: Save multiple Userdata"); + Benchmark.start("Save multiple Userdata"); data.removeIf(Objects::isNull); checkConnection(); @@ -473,7 +492,7 @@ public abstract class SQLDB extends Database { Integer id = userIds.get(uuid); if (id == -1) { - Log.debug("User not seen before, saving last: " + uuid); + Log.debug("Database", "User not seen before, saving last: " + uuid); continue; } @@ -500,7 +519,7 @@ public abstract class SQLDB extends Database { .filter(Objects::nonNull) .filter(UserData::isAccessed) .forEach(UserData::stopAccessing); - Benchmark.stop("Database: Save multiple Userdata"); + Benchmark.stop("Database", "Save multiple Userdata"); setAvailable(); } @@ -519,7 +538,8 @@ public abstract class SQLDB extends Database { } setStatus("Save userdata: " + uuid); checkConnection(); - Log.debug("DB_Save: " + data); + Log.debug("Database", "DB_Save:"); + Log.debug("Database", data.toString()); data.access(); usersTable.saveUserDataInformation(data); int userId = usersTable.getUserId(uuid.toString()); @@ -595,8 +615,9 @@ public abstract class SQLDB extends Database { plugin.processStatus().setStatus("DB-" + getName(), status); } - private void setAvailable() { + public void setAvailable() { setStatus("Running"); + Log.logDebug("Database"); } /** diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/CommandUseTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/CommandUseTable.java index 2fcd5755d..cef699ea0 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/tables/CommandUseTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/CommandUseTable.java @@ -50,7 +50,7 @@ public class CommandUseTable extends Table { * @return @throws SQLException */ public Map getCommandUse() throws SQLException { - Benchmark.start("Database: Get CommandUse"); + Benchmark.start("Get CommandUse"); Map commandUse = new HashMap<>(); PreparedStatement statement = null; ResultSet set = null; @@ -70,7 +70,7 @@ public class CommandUseTable extends Table { } finally { close(set); close(statement); - Benchmark.stop("Database: Get CommandUse"); + Benchmark.stop("Database", "Get CommandUse"); } } @@ -84,7 +84,7 @@ public class CommandUseTable extends Table { return; } - Benchmark.start("Database: Save Commanduse"); + Benchmark.start("Save Commanduse"); Map newData = new HashMap<>(data); Map saved = getCommandUse(); newData.keySet().removeAll(saved.keySet()); @@ -106,7 +106,8 @@ public class CommandUseTable extends Table { updateCommands(updateData); commit(); - Benchmark.stop("Database: Save Commanduse"); + Benchmark.stop("Database", "Save Commanduse"); + db.setAvailable(); } private void updateCommands(Map data) throws SQLException { diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/GMTimesTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/GMTimesTable.java index 0af21a887..40e70bfb2 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/tables/GMTimesTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/GMTimesTable.java @@ -201,7 +201,7 @@ public class GMTimesTable extends Table { return; } - Benchmark.start("Database: Save GMTimes"); + Benchmark.start("Save GMTimes"); Set savedIDs = getSavedIDs(); @@ -220,7 +220,7 @@ public class GMTimesTable extends Table { List>> batches = DBUtils.splitIntoBatchesWithID(gmTimes); - batches.stream().forEach(batch -> { + batches.forEach(batch -> { try { saveGMTimesBatch(batch); } catch (SQLException e) { @@ -231,7 +231,7 @@ public class GMTimesTable extends Table { gamemodeTimes.keySet().removeAll(savedIDs); addNewGMTimesRows(gamemodeTimes); - Benchmark.stop("Database: Save GMTimes"); + Benchmark.stop("Database", "Save GMTimes"); } private void saveGMTimesBatch(List> batch) throws SQLException { @@ -240,7 +240,7 @@ public class GMTimesTable extends Table { } int batchSize = batch.size(); - Log.debug("Preparing insertion of GM Times... Batch Size: " + batchSize); + Log.debug("Database", "Preparing update of GM Times - Batch Size: " + batchSize); String[] gms = getGMKeyArray(); Set savedIDs = getSavedIDs(); @@ -274,7 +274,7 @@ public class GMTimesTable extends Table { statement.addBatch(); } - Log.debug("Executing GM Times batch: " + batchSize); + Log.debug("Database", "Executing GM Times batch: " + batchSize); statement.executeBatch(); } finally { close(statement); @@ -286,7 +286,7 @@ public class GMTimesTable extends Table { return; } - Benchmark.start("Database: Add GMTimes Rows"); + Benchmark.start("Add GMTimes Rows"); Map gmTimes = new HashMap<>(); @@ -306,7 +306,7 @@ public class GMTimesTable extends Table { } }); - Benchmark.stop("Database: Add GMTimes Rows"); + Benchmark.stop("Database", "Add GMTimes Rows"); } private void addNewGMTimesBatch(List> batch) throws SQLException { @@ -315,7 +315,7 @@ public class GMTimesTable extends Table { } int batchSize = batch.size(); - Log.debug("Preparing insertion of GM Times... Batch Size: " + batchSize); + Log.debug("Database", "Preparing insertion of GM Times - Batch Size: " + batchSize); String[] gms = getGMKeyArray(); @@ -343,7 +343,7 @@ public class GMTimesTable extends Table { statement.addBatch(); } - Log.debug("Executing GM Times batch: " + batchSize); + Log.debug("Database", "Executing GM Times batch: " + batchSize); statement.executeBatch(); } finally { close(statement); diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/IPsTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/IPsTable.java index 3e3cee558..e6a272dd8 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/tables/IPsTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/IPsTable.java @@ -74,7 +74,7 @@ public class IPsTable extends Table { * @throws SQLException */ public List getIPAddresses(int userId) throws SQLException { - Benchmark.start("Database: Get Ips"); + Benchmark.start("Get Ips"); PreparedStatement statement = null; ResultSet set = null; try { @@ -95,7 +95,7 @@ public class IPsTable extends Table { } finally { close(set); close(statement); - Benchmark.stop("Database: Get Ips"); + Benchmark.stop("Database", "Get Ips"); } } @@ -109,7 +109,7 @@ public class IPsTable extends Table { return; } - Benchmark.start("Database: Save Ips"); + Benchmark.start("Save Ips"); ips.removeAll(getIPAddresses(userId)); if (ips.isEmpty()) { @@ -141,7 +141,7 @@ public class IPsTable extends Table { } } finally { close(statement); - Benchmark.stop("Database: Save Ips"); + Benchmark.stop("Database", "Save Ips"); } } @@ -155,7 +155,7 @@ public class IPsTable extends Table { return new HashMap<>(); } - Benchmark.start("Database: Get Ips Multiple"); + Benchmark.start("Get Ips Multiple"); PreparedStatement statement = null; ResultSet set = null; @@ -188,7 +188,7 @@ public class IPsTable extends Table { } finally { close(set); close(statement); - Benchmark.stop("Database: Get Ips Multiple"); + Benchmark.stop("Database", "Get Ips Multiple"); } } @@ -200,7 +200,7 @@ public class IPsTable extends Table { if (ips == null || ips.isEmpty()) { return; } - Benchmark.start("Database: Save Ips Multiple"); + Benchmark.start("Save Ips Multiple"); Map> saved = getIPList(ips.keySet()); PreparedStatement statement = null; try { @@ -209,7 +209,7 @@ public class IPsTable extends Table { + columnIP + ") VALUES (?, ?)"); boolean commitRequired = false; - int i = 0; + int batchSize = 0; for (Map.Entry> entrySet : ips.entrySet()) { Integer id = entrySet.getKey(); Set ipAddresses = entrySet.getValue(); @@ -233,17 +233,17 @@ public class IPsTable extends Table { statement.setString(2, ip.getHostAddress()); statement.addBatch(); commitRequired = true; - i++; + batchSize++; } } if (commitRequired) { - Log.debug("Executing ips batch: " + i); + Log.debug("Database", "Executing ips batch: " + batchSize); statement.executeBatch(); } } finally { close(statement); - Benchmark.stop("Database: Save Ips Multiple"); + Benchmark.stop("Database", "Save Ips Multiple"); } } } diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/KillsTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/KillsTable.java index f8dd0b5f8..e39c52595 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/tables/KillsTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/KillsTable.java @@ -82,7 +82,7 @@ public class KillsTable extends Table { * @throws SQLException */ public List getPlayerKills(int userId) throws SQLException { - Benchmark.start("Database: Get Kills"); + Benchmark.start("Get Kills"); UsersTable usersTable = db.getUsersTable(); PreparedStatement statement = null; ResultSet set = null; @@ -100,7 +100,7 @@ public class KillsTable extends Table { } finally { close(set); close(statement); - Benchmark.stop("Database: Get Kills"); + Benchmark.stop("Database", "Get Kills"); } } @@ -113,7 +113,7 @@ public class KillsTable extends Table { if (kills == null) { return; } - Benchmark.start("Database: Save Kills"); + Benchmark.start("Save Kills"); kills.removeAll(getPlayerKills(userId)); if (kills.isEmpty()) { return; @@ -154,7 +154,7 @@ public class KillsTable extends Table { } } finally { close(statement); - Benchmark.stop("Database: Save Kills"); + Benchmark.stop("Database", "Save Kills"); } } @@ -168,7 +168,7 @@ public class KillsTable extends Table { if (ids == null || ids.isEmpty()) { return new HashMap<>(); } - Benchmark.start("Database: Get Kills multiple"); + Benchmark.start("Get Kills multiple"); PreparedStatement statement = null; ResultSet set = null; try { @@ -191,7 +191,7 @@ public class KillsTable extends Table { } finally { close(set); close(statement); - Benchmark.stop("Database: Get Kills multiple"); + Benchmark.stop("Database", "Get Kills multiple"); } } @@ -205,7 +205,7 @@ public class KillsTable extends Table { return; } - Benchmark.start("Database: Save Kills multiple"); + Benchmark.start("Save Kills multiple"); Map> saved = getPlayerKills(kills.keySet(), uuids); PreparedStatement statement = null; @@ -258,13 +258,13 @@ public class KillsTable extends Table { } if (commitRequired) { - Log.debug("Executing kills batch: " + i); + Log.debug("Database", "Executing kills batch: " + i); statement.executeBatch(); } } } finally { close(statement); - Benchmark.stop("Database: Save Kills multiple"); + Benchmark.stop("Database", "Save Kills multiple"); } } } diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/NicknamesTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/NicknamesTable.java index ec85698b8..0f3d59cf3 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/tables/NicknamesTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/NicknamesTable.java @@ -82,7 +82,7 @@ public class NicknamesTable extends Table { * @throws SQLException */ public List getNicknames(int userId) throws SQLException { - Benchmark.start("Database: Get Nicknames"); + Benchmark.start("Get Nicknames"); PreparedStatement statement = null; ResultSet set = null; try { @@ -109,7 +109,7 @@ public class NicknamesTable extends Table { } finally { close(set); close(statement); - Benchmark.stop("Database: Get Nicknames"); + Benchmark.stop("Database", "Get Nicknames"); } } @@ -123,7 +123,7 @@ public class NicknamesTable extends Table { if (names == null || names.isEmpty()) { return; } - Benchmark.start("Database: Save Nicknames"); + Benchmark.start("Save Nicknames"); names.removeAll(getNicknames(userId)); if (names.isEmpty()) { return; @@ -146,13 +146,13 @@ public class NicknamesTable extends Table { i++; } if (commitRequired) { - Log.debug("Executing nicknames batch: " + i); + Log.debug("Database", "Executing nicknames batch: " + i); statement.executeBatch(); } } finally { close(statement); - Benchmark.stop("Database: Save Nicknames"); + Benchmark.stop("Database", "Save Nicknames"); } } @@ -165,7 +165,7 @@ public class NicknamesTable extends Table { if (ids == null || ids.isEmpty()) { return new HashMap<>(); } - Benchmark.start("Database: Get Nicknames Multiple"); + Benchmark.start("Get Nicknames Multiple"); PreparedStatement statement = null; ResultSet set = null; try { @@ -208,7 +208,7 @@ public class NicknamesTable extends Table { } finally { close(set); close(statement); - Benchmark.stop("Database: Get Nicknames Multiple"); + Benchmark.stop("Database", "Get Nicknames Multiple"); } } @@ -222,7 +222,7 @@ public class NicknamesTable extends Table { return; } - Benchmark.start("Database: Save Nicknames Multiple"); + Benchmark.start("Save Nicknames Multiple"); Map> saved = getNicknames(nicknames.keySet()); PreparedStatement statement = null; @@ -263,7 +263,7 @@ public class NicknamesTable extends Table { } } finally { close(statement); - Benchmark.stop("Database: Save Nicknames Multiple"); + Benchmark.stop("Database", "Save Nicknames Multiple"); } } } diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/SessionsTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/SessionsTable.java index dc77351ae..3c4ada40b 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/tables/SessionsTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/SessionsTable.java @@ -58,7 +58,7 @@ public class SessionsTable extends Table { * @throws SQLException */ public List getSessionData(int userId) throws SQLException { - Benchmark.start("Database: Get Sessions"); + Benchmark.start("Get Sessions"); PreparedStatement statement = null; ResultSet set = null; try { @@ -75,7 +75,7 @@ public class SessionsTable extends Table { } finally { close(set); close(statement); - Benchmark.stop("Database: Get Sessions"); + Benchmark.stop("Database", "Get Sessions"); } } @@ -108,16 +108,14 @@ public class SessionsTable extends Table { return; } - Benchmark.start("Database: Save Sessions"); sessions.removeAll(getSessionData(userId)); if (sessions.isEmpty()) { - Benchmark.stop("Database: Save Sessions"); return; } + Benchmark.start("Save Sessions"); PreparedStatement statement = null; - try { statement = prepareStatement("INSERT INTO " + tableName + " (" + columnUserID + ", " @@ -141,7 +139,7 @@ public class SessionsTable extends Table { statement.executeBatch(); } finally { close(statement); - Benchmark.stop("Database: Save Sessions"); + Benchmark.stop("Database", "Save Sessions"); } } @@ -155,7 +153,7 @@ public class SessionsTable extends Table { return new HashMap<>(); } - Benchmark.start("Database: Get Sessions multiple"); + Benchmark.start("Get Sessions multiple"); PreparedStatement statement = null; ResultSet set = null; @@ -184,7 +182,7 @@ public class SessionsTable extends Table { } finally { close(set); close(statement); - Benchmark.stop("Database: Get Sessions multiple"); + Benchmark.stop("Database", "Get Sessions multiple"); } } @@ -197,7 +195,7 @@ public class SessionsTable extends Table { return; } - Benchmark.start("Database: Save Sessions multiple"); + Benchmark.start("Save Sessions multiple"); Map> saved = getSessionData(sessions.keySet()); for (Map.Entry> entrySet : sessions.entrySet()) { @@ -226,7 +224,7 @@ public class SessionsTable extends Table { } }); - Benchmark.stop("Database: Save Sessions multiple"); + Benchmark.stop("Database", "Save Sessions multiple"); } private void saveSessionBatch(List> batch) throws SQLException { @@ -235,7 +233,7 @@ public class SessionsTable extends Table { } int batchSize = batch.size(); - Log.debug("Preparing insertion of sessions... Batch Size: " + batchSize); + Log.debug("Database", "Preparing insertion of sessions - Batch Size: " + batchSize); PreparedStatement statement = null; try { @@ -258,7 +256,7 @@ public class SessionsTable extends Table { statement.addBatch(); } - Log.debug("Executing session batch: " + batchSize); + Log.debug("Database", "Executing session batch: " + batchSize); statement.executeBatch(); } finally { close(statement); diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/TPSTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/TPSTable.java index 92ba3c432..98956c216 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/tables/TPSTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/TPSTable.java @@ -88,7 +88,7 @@ public class TPSTable extends Table { * @return @throws SQLException */ public List getTPSData() throws SQLException { - Benchmark.start("Database: Get TPS"); + Benchmark.start("Get TPS"); List data = new ArrayList<>(); PreparedStatement statement = null; ResultSet set = null; @@ -109,7 +109,7 @@ public class TPSTable extends Table { } finally { close(set); close(statement); - Benchmark.stop("Database: Get TPS"); + Benchmark.stop("Database", "Get TPS"); } } @@ -119,14 +119,14 @@ public class TPSTable extends Table { */ public void saveTPSData(List data) throws SQLException { List> batches = DBUtils.splitIntoBatches(data); - batches.stream() - .forEach(batch -> { - try { - saveTPSBatch(batch); - } catch (SQLException e) { - Log.toLog("UsersTable.saveUserDataInformationBatch", e); - } - }); + batches.forEach(batch -> { + try { + saveTPSBatch(batch); + } catch (SQLException e) { + Log.toLog("UsersTable.saveUserDataInformationBatch", e); + } + }); + db.setAvailable(); commit(); } @@ -136,7 +136,7 @@ public class TPSTable extends Table { } int batchSize = batch.size(); - Log.debug("Preparing insertion of TPS... Batch Size: " + batchSize); + Log.debug("Database", "Preparing insertion of TPS - Batch Size: " + batchSize); PreparedStatement statement = null; try { @@ -161,7 +161,7 @@ public class TPSTable extends Table { statement.addBatch(); } - Log.debug("Executing tps batch: " + batchSize); + Log.debug("Database", "Executing tps batch: " + batchSize); statement.executeBatch(); } finally { close(statement); diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/Table.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/Table.java index 2022ecd3b..eb40a5324 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/tables/Table.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/Table.java @@ -107,7 +107,7 @@ public abstract class Table { * @throws SQLException */ protected PreparedStatement prepareStatement(String sql) throws SQLException { - Log.debug(sql); + Log.debug("Database", sql); return getConnection().prepareStatement(sql); } @@ -175,8 +175,9 @@ public abstract class Table { /** * Commits changes to .db file when using SQLite databse. - * + *

* Auto Commit enabled when using MySQL + * * @throws SQLException If commit fails or there is nothing to commit. */ protected void commit() throws SQLException { diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/UsersTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/UsersTable.java index 21e912da8..0c8100269 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/tables/UsersTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/UsersTable.java @@ -223,7 +223,7 @@ public class UsersTable extends Table { * @return @throws SQLException */ public Set getSavedUUIDs() throws SQLException { - Benchmark.start("Database: Get Saved UUIDS"); + Benchmark.start("Get Saved UUIDS"); PreparedStatement statement = null; ResultSet set = null; try { @@ -238,7 +238,7 @@ public class UsersTable extends Table { } finally { close(set); close(statement); - Benchmark.stop("Database: Get Saved UUIDS"); + Benchmark.stop("Database", "Get Saved UUIDS"); } } @@ -274,7 +274,7 @@ public class UsersTable extends Table { * @throws SQLException */ public UserData getUserData(UUID uuid) throws SQLException { - Benchmark.start("Database: Get UserData"); + Benchmark.start("Get UserData"); boolean containsBukkitData = getContainsBukkitData(uuid); UserData data = null; if (containsBukkitData) { @@ -284,7 +284,7 @@ public class UsersTable extends Table { data = new UserData(Fetch.getIOfflinePlayer(uuid)); addUserInformationToUserData(data); } - Benchmark.stop("Database: Get UserData"); + Benchmark.stop("Database", "Get UserData"); return data; } @@ -312,7 +312,7 @@ public class UsersTable extends Table { * @throws SQLException */ public List getUserData(Collection uuids) throws SQLException { - Benchmark.start("Database: Get UserData Multiple"); + Benchmark.start("Get UserData Multiple"); List containsBukkitData = getContainsBukkitData(uuids); List datas = new ArrayList<>(); datas.addAll(getUserDataForKnown(containsBukkitData)); @@ -320,17 +320,17 @@ public class UsersTable extends Table { uuids.removeAll(containsBukkitData); if (!uuids.isEmpty()) { List noBukkitData = new ArrayList<>(); - Benchmark.start("Database: Create UserData objects for No BukkitData players"); + Benchmark.start("Create UserData objects for No BukkitData players"); for (UUID uuid : uuids) { UserData uData = new UserData(Fetch.getIOfflinePlayer(uuid)); noBukkitData.add(uData); } - Benchmark.stop("Database: Create UserData objects for No BukkitData players"); + Benchmark.stop("Database", "Create UserData objects for No BukkitData players"); addUserInformationToUserData(noBukkitData); datas.addAll(noBukkitData); } - Benchmark.stop("Database: Get UserData Multiple"); + Benchmark.stop("Database", "Get UserData Multiple"); return datas; } @@ -365,7 +365,7 @@ public class UsersTable extends Table { } private UserData getUserDataForKnown(UUID uuid) throws SQLException { - Benchmark.start("Database: getUserDataForKnown UserData"); + Benchmark.start("getUserDataForKnown UserData"); PreparedStatement statement = null; ResultSet set = null; try { @@ -401,13 +401,13 @@ public class UsersTable extends Table { } finally { close(set); close(statement); - Benchmark.stop("Database: getUserDataForKnown UserData"); + Benchmark.stop("Database", "getUserDataForKnown UserData"); } return null; } private List getUserDataForKnown(Collection uuids) throws SQLException { - Benchmark.start("Database: getUserDataForKnown Multiple"); + Benchmark.start("getUserDataForKnown Multiple"); PreparedStatement statement = null; ResultSet set = null; List datas = new ArrayList<>(); @@ -448,7 +448,7 @@ public class UsersTable extends Table { } finally { close(set); close(statement); - Benchmark.stop("Database: getUserDataForKnown Multiple"); + Benchmark.stop("Database", "getUserDataForKnown Multiple"); } return datas; } @@ -458,7 +458,7 @@ public class UsersTable extends Table { * @throws SQLException */ public void addUserInformationToUserData(UserData data) throws SQLException { - Benchmark.start("Database: addUserInformationToUserData"); + Benchmark.start("addUserInformationToUserData"); PreparedStatement statement = null; ResultSet set = null; try { @@ -488,7 +488,7 @@ public class UsersTable extends Table { } finally { close(set); close(statement); - Benchmark.stop("Database: addUserInformationToUserData"); + Benchmark.stop("Database", "addUserInformationToUserData"); } } @@ -497,7 +497,7 @@ public class UsersTable extends Table { * @throws SQLException */ public void addUserInformationToUserData(List data) throws SQLException { - Benchmark.start("Database: addUserInformationToUserData Multiple"); + Benchmark.start("addUserInformationToUserData Multiple"); PreparedStatement statement = null; ResultSet set = null; try { @@ -533,7 +533,7 @@ public class UsersTable extends Table { } finally { close(set); close(statement); - Benchmark.stop("Database: addUserInformationToUserData Multiple"); + Benchmark.stop("Database", "addUserInformationToUserData Multiple"); } } @@ -542,7 +542,7 @@ public class UsersTable extends Table { * @throws SQLException */ public void saveUserDataInformation(UserData data) throws SQLException { - Benchmark.start("Database: Save UserInfo"); + Benchmark.start("Save UserInfo"); PreparedStatement statement = null; try { UUID uuid = data.getUuid(); @@ -598,7 +598,7 @@ public class UsersTable extends Table { } } finally { close(statement); - Benchmark.stop("Database: Save UserInfo"); + Benchmark.stop("Database", "Save UserInfo"); } } @@ -612,7 +612,7 @@ public class UsersTable extends Table { try { statement = prepareStatement("SELECT age FROM " + tableName + " LIMIT 1"); set = statement.executeQuery(); - Log.debug("UsersTable has V4 columns."); + Log.debug("Database", "UsersTable has V4 columns."); return true; } catch (SQLException e) { return false; @@ -676,10 +676,10 @@ public class UsersTable extends Table { * @throws SQLException */ public void saveUserDataInformationBatch(Collection data) throws SQLException { - Benchmark.start("Database: Save UserInfo multiple"); + Benchmark.start("Save UserInfo multiple"); try { List newUserdata = updateExistingUserData(data); - Benchmark.start("Database: Insert new UserInfo multiple"); + Benchmark.start("Insert new UserInfo multiple"); List> batches = DBUtils.splitIntoBatches(newUserdata); @@ -692,9 +692,9 @@ public class UsersTable extends Table { } }); - Benchmark.stop("Database: Insert new UserInfo multiple"); + Benchmark.stop("Database", "Insert new UserInfo multiple"); } finally { - Benchmark.stop("Database: Save UserInfo multiple"); + Benchmark.stop("Database", "Save UserInfo multiple"); } } @@ -704,7 +704,7 @@ public class UsersTable extends Table { } int batchSize = data.size(); - Log.debug("Preparing insertion of new users... Batch Size: " + batchSize); + Log.debug("Database", "Preparing insertion of new users - Batch Size: " + batchSize); PreparedStatement statement = null; try { @@ -738,7 +738,7 @@ public class UsersTable extends Table { statement.addBatch(); } - Log.debug("Executing users batch: " + batchSize); + Log.debug("Database", "Executing users batch: " + batchSize); statement.executeBatch(); } finally { close(statement); @@ -801,7 +801,7 @@ public class UsersTable extends Table { i++; } if (commitRequired) { - Log.debug("Executing userinfo batch update: " + i); + Log.debug("Database", "Executing userinfo batch update: " + i); statement.executeBatch(); } return saveLast; @@ -816,7 +816,7 @@ public class UsersTable extends Table { * @throws SQLException */ public Map getUserIds(Collection uuids) throws SQLException { - Benchmark.start("Database: Get User IDS Multiple"); + Benchmark.start("Get User IDS Multiple"); PreparedStatement statement = null; ResultSet set = null; try { @@ -835,7 +835,7 @@ public class UsersTable extends Table { } finally { close(set); close(statement); - Benchmark.stop("Database: Get User IDS Multiple"); + Benchmark.stop("Database", "Get User IDS Multiple"); } } @@ -843,7 +843,7 @@ public class UsersTable extends Table { * @return @throws SQLException */ public Map getAllUserIds() throws SQLException { - Benchmark.start("Database: Get User IDS ALL"); + Benchmark.start("Get User IDS ALL"); PreparedStatement statement = null; ResultSet set = null; try { @@ -859,7 +859,7 @@ public class UsersTable extends Table { } finally { close(set); close(statement); - Benchmark.stop("Database: Get User IDS ALL"); + Benchmark.stop("Database", "Get User IDS ALL"); } } @@ -867,7 +867,7 @@ public class UsersTable extends Table { * @return @throws SQLException */ public Map getLoginTimes() throws SQLException { - Benchmark.start("Database: Get Logintimes"); + Benchmark.start("Get Logintimes"); PreparedStatement statement = null; ResultSet set = null; try { @@ -882,7 +882,7 @@ public class UsersTable extends Table { } finally { close(set); close(statement); - Benchmark.stop("Database: Get Logintimes"); + Benchmark.stop("Database", "Get Logintimes"); } } diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/VersionTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/VersionTable.java index 52629d805..5395ccf21 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/tables/VersionTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/VersionTable.java @@ -51,6 +51,7 @@ public class VersionTable extends Table { if (set.next()) { version = set.getInt("version"); } + Log.debug("Database", "DB Schema version: " + version); return version; } finally { close(set); diff --git a/Plan/src/main/java/com/djrapitops/plan/ui/html/tables/CommandUseTableCreator.java b/Plan/src/main/java/com/djrapitops/plan/ui/html/tables/CommandUseTableCreator.java index 1b682c900..5975375da 100644 --- a/Plan/src/main/java/com/djrapitops/plan/ui/html/tables/CommandUseTableCreator.java +++ b/Plan/src/main/java/com/djrapitops/plan/ui/html/tables/CommandUseTableCreator.java @@ -2,7 +2,6 @@ package main.java.com.djrapitops.plan.ui.html.tables; import main.java.com.djrapitops.plan.Log; import main.java.com.djrapitops.plan.ui.html.Html; -import main.java.com.djrapitops.plan.utilities.Benchmark; import main.java.com.djrapitops.plan.utilities.comparators.MapComparator; import java.util.Collections; @@ -26,7 +25,6 @@ public class CommandUseTableCreator { * @return */ public static String createSortedCommandUseTable(Map commandUse) { - Benchmark.start("Create CommandUse table"); List sorted = MapComparator.sortByValue(commandUse); StringBuilder html = new StringBuilder(); if (sorted.isEmpty()) { @@ -43,14 +41,12 @@ public class CommandUseTableCreator { try { html.append(Html.TABLELINE_2.parse(values[1], values[0])); } catch (IllegalArgumentException e) { - Log.toLog("SortableCommandUseTableCreator", e); - Log.toLog("Cause: " + values[0] + " " + values[1], Log.getErrorsFilename()); + Log.toLog("CommandUseTable - Cause: " + values[0] + " " + values[1], e); } i++; } } - Benchmark.stop("Create CommandUse table"); return html.toString(); } } diff --git a/Plan/src/main/java/com/djrapitops/plan/ui/html/tables/PlayersTableCreator.java b/Plan/src/main/java/com/djrapitops/plan/ui/html/tables/PlayersTableCreator.java index 7bf09b02e..b78afaf5f 100644 --- a/Plan/src/main/java/com/djrapitops/plan/ui/html/tables/PlayersTableCreator.java +++ b/Plan/src/main/java/com/djrapitops/plan/ui/html/tables/PlayersTableCreator.java @@ -3,7 +3,6 @@ package main.java.com.djrapitops.plan.ui.html.tables; import main.java.com.djrapitops.plan.Settings; import main.java.com.djrapitops.plan.data.UserData; import main.java.com.djrapitops.plan.ui.html.Html; -import main.java.com.djrapitops.plan.utilities.Benchmark; import main.java.com.djrapitops.plan.utilities.FormatUtils; import main.java.com.djrapitops.plan.utilities.HtmlUtils; import main.java.com.djrapitops.plan.utilities.MiscUtils; @@ -28,7 +27,6 @@ public class PlayersTableCreator { * @return */ public static String createSortablePlayersTable(List data) { - Benchmark.start("Create Players table"); StringBuilder html = new StringBuilder(); long now = MiscUtils.getTime(); @@ -62,11 +60,9 @@ public class PlayersTableCreator { )); } catch (NullPointerException ignored) { } - i++; } - Benchmark.stop("Create Players table"); return html.toString(); } } diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/Benchmark.java b/Plan/src/main/java/com/djrapitops/plan/utilities/Benchmark.java index a3238eacc..0be905ccb 100644 --- a/Plan/src/main/java/com/djrapitops/plan/utilities/Benchmark.java +++ b/Plan/src/main/java/com/djrapitops/plan/utilities/Benchmark.java @@ -20,7 +20,6 @@ public class Benchmark { */ public static void start(String source) { Plan.getInstance().benchmark().start(source); - Log.debug(source); } /** @@ -34,4 +33,16 @@ public class Benchmark { } return ms; } + + /** + * Used to add Benchmark timings to larger Debug log task parts. + * + * @param task Task this benchmark is a part of. + * @param source Bench source + * @return Execution time in ms. + */ + public static long stop(String task, String source) { + long ms = Plan.getInstance().benchmark().stop(task, source); + return ms; + } } diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/Check.java b/Plan/src/main/java/com/djrapitops/plan/utilities/Check.java index 4f093f0bf..f2884e9d8 100644 --- a/Plan/src/main/java/com/djrapitops/plan/utilities/Check.java +++ b/Plan/src/main/java/com/djrapitops/plan/utilities/Check.java @@ -57,7 +57,6 @@ public class Check { public static boolean ErrorIfFalse(boolean condition, String message) { if (!condition) { Log.error(message); - Log.toLog(message, Log.getErrorsFilename()); } return condition; } diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/PassEncryptUtil.java b/Plan/src/main/java/com/djrapitops/plan/utilities/PassEncryptUtil.java index 22dd15f51..2b3116f73 100644 --- a/Plan/src/main/java/com/djrapitops/plan/utilities/PassEncryptUtil.java +++ b/Plan/src/main/java/com/djrapitops/plan/utilities/PassEncryptUtil.java @@ -149,7 +149,7 @@ public class PassEncryptUtil { return skf.generateSecret(spec).getEncoded(); } catch (NoSuchAlgorithmException ex) { throw new CannotPerformOperationException( - "Hash algorithm not supported.", ex + "Hash algorithm not supported: " + PBKDF2_ALGORITHM, ex ); } catch (InvalidKeySpecException ex) { throw new CannotPerformOperationException( diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/analysis/Analysis.java b/Plan/src/main/java/com/djrapitops/plan/utilities/analysis/Analysis.java index 6aab4c71a..051d36a97 100644 --- a/Plan/src/main/java/com/djrapitops/plan/utilities/analysis/Analysis.java +++ b/Plan/src/main/java/com/djrapitops/plan/utilities/analysis/Analysis.java @@ -60,7 +60,7 @@ public class Analysis { return; } - plugin.processStatus().startExecution("Analysis"); + Benchmark.start("Analysis"); log(Phrase.ANALYSIS_START.toString()); // Async task for Analysis plugin.getRunnableFactory().createNew(new AbsRunnable("AnalysisTask") { @@ -84,8 +84,8 @@ public class Analysis { */ public boolean analyze(AnalysisCacheHandler analysisCache, Database db) { log(Phrase.ANALYSIS_FETCH_DATA.toString()); - Benchmark.start("Analysis: Fetch Phase"); - + Benchmark.start("Fetch Phase"); + Log.debug("Database", "Analysis Fetch"); plugin.processStatus().setStatus("Analysis", "Analysis Fetch Phase"); try { inspectCache.cacheAllUserData(db); @@ -104,7 +104,8 @@ public class Analysis { try { tpsData = db.getTpsTable().getTPSData(); - Log.debug("TPS Data Size: " + tpsData.size()); + Log.debug("Analysis", "Raw Data Size: " + rawData.size()); + Log.debug("Analysis", "TPS Data Size: " + tpsData.size()); } catch (Exception ex) { Log.toLog(this.getClass().getName(), ex); } @@ -122,7 +123,7 @@ public class Analysis { try { rawData.sort(new UserDataLastPlayedComparator()); List uuids = rawData.stream().map(UserData::getUuid).collect(Collectors.toList()); - Benchmark.start("Analysis: Create Empty dataset"); + Benchmark.start("Create Empty dataset"); DataCacheHandler handler = plugin.getHandler(); Map commandUse = handler.getCommandUse(); @@ -134,8 +135,8 @@ public class Analysis { analysisData.getPlayerCountPart().addPlayers(uuids); activityPart.setRecentPlayers(rawData.stream().map(UserData::getName).collect(Collectors.toList())); - Benchmark.stop("Analysis: Create Empty dataset"); - long fetchPhaseLength = Benchmark.stop("Analysis: Fetch Phase"); + Benchmark.stop("Analysis", "Create Empty dataset"); + long fetchPhaseLength = Benchmark.stop("Analysis", "Fetch Phase"); Benchmark.start("Analysis Phase"); plugin.processStatus().setStatus("Analysis", "Analysis Phase"); @@ -147,14 +148,16 @@ public class Analysis { fillDataset(analysisData, rawData); // Analyze analysisData.analyseData(); - Benchmark.stop("Analysis Phase"); + Benchmark.stop("Analysis", "Analysis Phase"); log(Phrase.ANALYSIS_THIRD_PARTY.toString()); plugin.processStatus().setStatus("Analysis", "Analyzing additional data sources (3rd party)"); analysisData.setAdditionalDataReplaceMap(analyzeAdditionalPluginData(uuids)); analysisCache.cache(analysisData); - long time = plugin.processStatus().finishExecution("Analysis"); + long time = Benchmark.stop("Analysis", "Analysis"); + + Log.logDebug("Analysis", time); if (Settings.ANALYSIS_LOG_FINISHED.isTrue()) { Log.info(Phrase.ANALYSIS_COMPLETE.parse(String.valueOf(time), HtmlUtils.getServerAnalysisUrlWithProtocol())); @@ -178,7 +181,7 @@ public class Analysis { } private Map analyzeAdditionalPluginData(List uuids) { - Benchmark.start("Analysis: 3rd party"); + Benchmark.start("3rd party"); final Map replaceMap = new HashMap<>(); final HookHandler hookHandler = plugin.getHookHandler(); final List sources = hookHandler.getAdditionalDataSources().stream() @@ -192,7 +195,7 @@ public class Analysis { }; final AnalysisType bool = AnalysisType.BOOLEAN_PERCENTAGE; final AnalysisType boolTot = AnalysisType.BOOLEAN_TOTAL; - Log.debug("Analyzing additional sources: " + sources.size()); + Log.debug("Analysis", "Additional Sources: " + sources.size()); sources.parallelStream().filter(Verify::notNull).forEach(source -> { try { Benchmark.start("Source " + source.getPlaceholder("").replace("%", "")); @@ -225,10 +228,10 @@ public class Analysis { Log.toLog(this.getClass().getName(), e); } finally { - Benchmark.stop("Source " + source.getPlaceholder("").replace("%", "")); + Benchmark.stop("Analysis", "Source " + source.getPlaceholder("").replace("%", "")); } }); - Benchmark.stop("Analysis: 3rd party"); + Benchmark.stop("Analysis", "3rd party"); return replaceMap; } @@ -260,7 +263,7 @@ public class Analysis { long now = MiscUtils.getTime(); - Benchmark.start("Analysis: Fill Dataset"); + Benchmark.start("Fill Dataset"); rawData.forEach(uData -> { uData.access(); Map gmTimes = uData.getGmTimes().getTimes(); @@ -307,6 +310,6 @@ public class Analysis { joinInfo.addSessions(uuid, sessions); uData.stopAccessing(); }); - Benchmark.stop("Analysis: Fill Dataset"); + Benchmark.stop("Analysis", "Fill Dataset"); } } diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/analysis/AnalysisUtils.java b/Plan/src/main/java/com/djrapitops/plan/utilities/analysis/AnalysisUtils.java index ece30fa69..0c0ebf260 100644 --- a/Plan/src/main/java/com/djrapitops/plan/utilities/analysis/AnalysisUtils.java +++ b/Plan/src/main/java/com/djrapitops/plan/utilities/analysis/AnalysisUtils.java @@ -201,8 +201,7 @@ public class AnalysisUtils { private static String logPluginDataCausedError(PluginData source, Throwable e) { Log.error("A PluginData-source caused an exception: " + source.getPlaceholder("").replace("%", "")); - Log.toLog("A PluginData-source caused an exception: " + source.getPlaceholder("").replace("%", ""), Log.getErrorsFilename()); - Log.toLog("com.djrapitops.plan.utilities.AnalysisUtils", e); + Log.toLog("PluginData-source caused an exception: " + source.getPlaceholder("").replace("%", ""), e); return source.parseContainer("", "Exception during calculation."); } diff --git a/Plan/src/test/java/main/java/com/djrapitops/plan/database/DBUtilsTest.java b/Plan/src/test/java/main/java/com/djrapitops/plan/database/DBUtilsTest.java index 7d954173a..2632a19e7 100644 --- a/Plan/src/test/java/main/java/com/djrapitops/plan/database/DBUtilsTest.java +++ b/Plan/src/test/java/main/java/com/djrapitops/plan/database/DBUtilsTest.java @@ -37,39 +37,41 @@ public class DBUtilsTest { @Test public void testSplitIntoBatches() { List list = new ArrayList<>(); - for (int i = 0; i < 3000; i++) { + for (int i = 0; i < 21336; i++) { list.add(i); } List> result = DBUtils.splitIntoBatches(list); - assertEquals(2, result.size()); - assertEquals(2048, result.get(0).size()); - assertEquals(952, result.get(1).size()); + assertEquals(3, result.size()); + assertEquals(10192, result.get(0).size()); + assertEquals(10192, result.get(1).size()); + assertEquals(952, result.get(2).size()); } @Test public void testSplitIntoBatchesSingleBatch() { List list = new ArrayList<>(); - for (int i = 0; i < 2048; i++) { + for (int i = 0; i < 10192; i++) { list.add(i); } List> result = DBUtils.splitIntoBatches(list); assertEquals(1, result.size()); - assertEquals(2048, result.get(0).size()); + assertEquals(10192, result.get(0).size()); } @Test public void testSplitIntoBatchesId() { Map> map = new HashMap<>(); for (int i = 0; i < 10; i++) { - for (int j = 0; j < 300; j++) { + for (int j = 0; j < 2133; j++) { map.computeIfAbsent(i, k -> new ArrayList<>()); map.get(i).add(j); } } List>> result = DBUtils.splitIntoBatchesId(map); - assertEquals(2, result.size()); - assertEquals(2048, result.get(0).size()); - assertEquals(952, result.get(1).size()); + assertEquals(3, result.size()); + assertEquals(10192, result.get(0).size()); + assertEquals(10192, result.get(1).size()); + assertEquals(946, result.get(2).size()); } } diff --git a/Plan/src/test/java/main/java/com/djrapitops/plan/database/DatabaseCommitTest.java b/Plan/src/test/java/main/java/com/djrapitops/plan/database/DatabaseCommitTest.java index 92ebaa450..adc959fa9 100644 --- a/Plan/src/test/java/main/java/com/djrapitops/plan/database/DatabaseCommitTest.java +++ b/Plan/src/test/java/main/java/com/djrapitops/plan/database/DatabaseCommitTest.java @@ -132,7 +132,7 @@ public class DatabaseCommitTest { public void testCommitToDBFile5() throws SQLException, PassEncryptUtil.CannotPerformOperationException { db.init(); List data = RandomData.randomUserData(); - WebUser webUser = new WebUser("Test", PassEncryptUtil.createHash("surprise"), 0); + WebUser webUser = new WebUser("Test", "SHA1:rioegnorgiengoieng:oiegnoeigneo:352", 0); db.getSecurityTable().addNewUser(webUser); db.close(); db.init(); diff --git a/Plan/src/test/java/utils/TestInit.java b/Plan/src/test/java/utils/TestInit.java index 304849bfa..1ffd03e3a 100644 --- a/Plan/src/test/java/utils/TestInit.java +++ b/Plan/src/test/java/utils/TestInit.java @@ -78,7 +78,7 @@ public class TestInit { // Abstract Plugin Framework Mocks. BukkitLog log = new BukkitLog<>(planMock, "console", ""); - BenchUtil bench = new BenchUtil(); + BenchUtil bench = new BenchUtil(planMock); ServerVariableHolder serverVariableHolder = new ServerVariableHolder(mockServer); ProcessStatus process = new ProcessStatus<>(planMock); Fetch fetch = new Fetch(planMock); From c8126cf7d32d296914ca7755000c74a63085dfa6 Mon Sep 17 00:00:00 2001 From: Rsl1122 Date: Tue, 8 Aug 2017 22:30:15 +0300 Subject: [PATCH 2/2] Implement #222 (and #223) Fix #228 Fix NPE due to plugin variable not being initialized when SubCommand super constructor is called. (Calls addHelp) --- ...itops_abstract_plugin_framework_2_0_2.xml} | 8 +- .../main/java/com/djrapitops/plan/Plan.java | 190 +++++++++--------- .../djrapitops/plan/command/PlanCommand.java | 2 +- .../plan/command/commands/AnalyzeCommand.java | 2 +- .../plan/command/commands/InspectCommand.java | 2 +- .../plan/command/commands/ManageCommand.java | 2 +- .../command/commands/QuickAnalyzeCommand.java | 2 +- .../command/commands/QuickInspectCommand.java | 2 +- .../command/commands/RegisterCommand.java | 2 +- .../plan/command/commands/SearchCommand.java | 2 +- .../plan/command/commands/WebUserCommand.java | 2 +- .../commands/manage/ManageClearCommand.java | 2 +- .../commands/manage/ManageHotswapCommand.java | 2 +- .../commands/manage/ManageImportCommand.java | 2 +- .../commands/manage/ManageRemoveCommand.java | 2 +- .../plan/data/additional/PluginData.java | 9 + .../plan/ui/webserver/WebServer.java | 2 +- .../plan/utilities/analysis/Analysis.java | 19 +- .../plan/utilities/metrics/BStats.java | 2 +- 19 files changed, 144 insertions(+), 112 deletions(-) rename Plan/.idea/libraries/{Maven__com_djrapitops_abstract_plugin_framework_2_0_1.xml => Maven__com_djrapitops_abstract_plugin_framework_2_0_2.xml} (67%) diff --git a/Plan/.idea/libraries/Maven__com_djrapitops_abstract_plugin_framework_2_0_1.xml b/Plan/.idea/libraries/Maven__com_djrapitops_abstract_plugin_framework_2_0_2.xml similarity index 67% rename from Plan/.idea/libraries/Maven__com_djrapitops_abstract_plugin_framework_2_0_1.xml rename to Plan/.idea/libraries/Maven__com_djrapitops_abstract_plugin_framework_2_0_2.xml index 826d210d1..d291e16ee 100644 --- a/Plan/.idea/libraries/Maven__com_djrapitops_abstract_plugin_framework_2_0_1.xml +++ b/Plan/.idea/libraries/Maven__com_djrapitops_abstract_plugin_framework_2_0_2.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/Plan/src/main/java/com/djrapitops/plan/Plan.java b/Plan/src/main/java/com/djrapitops/plan/Plan.java index a721748e4..c4aab76dd 100644 --- a/Plan/src/main/java/com/djrapitops/plan/Plan.java +++ b/Plan/src/main/java/com/djrapitops/plan/Plan.java @@ -111,105 +111,111 @@ public class Plan extends BukkitPlugin { */ @Override public void onEnable() { - // Sets the Required variables for BukkitPlugin instance to function correctly - setInstance(this); - super.setDebugMode(Settings.DEBUG.toString()); - super.setColorScheme(new ColorScheme(Phrase.COLOR_MAIN.color(), Phrase.COLOR_SEC.color(), Phrase.COLOR_TER.color())); - super.setLogPrefix("[Plan]"); - super.setUpdateCheckUrl("https://raw.githubusercontent.com/Rsl1122/Plan-PlayerAnalytics/master/Plan/src/main/resources/plugin.yml"); - super.setUpdateUrl("https://www.spigotmc.org/resources/plan-player-analytics.32536/"); + try { + // Sets the Required variables for BukkitPlugin instance to function correctly + setInstance(this); + super.setDebugMode(Settings.DEBUG.toString()); + super.setColorScheme(new ColorScheme(Phrase.COLOR_MAIN.color(), Phrase.COLOR_SEC.color(), Phrase.COLOR_TER.color())); + super.setLogPrefix("[Plan]"); + super.setUpdateCheckUrl("https://raw.githubusercontent.com/Rsl1122/Plan-PlayerAnalytics/master/Plan/src/main/resources/plugin.yml"); + super.setUpdateUrl("https://www.spigotmc.org/resources/plan-player-analytics.32536/"); - // Initializes BukkitPlugin variables, Checks version & Logs the debug header - super.onEnableDefaultTasks(); + // Initializes BukkitPlugin variables, Checks version & Logs the debug header + super.onEnableDefaultTasks(); - Benchmark.start("Enable"); + Benchmark.start("Enable"); - initLocale(); - Benchmark.start("Reading server variables"); - serverVariableHolder = new ServerVariableHolder(getServer()); - Benchmark.stop("Enable", "Reading server variables"); + initLocale(); + Benchmark.start("Reading server variables"); + serverVariableHolder = new ServerVariableHolder(getServer()); + Benchmark.stop("Enable", "Reading server variables"); - Benchmark.start("Copy default config"); - getConfig().options().copyDefaults(true); - getConfig().options().header(Phrase.CONFIG_HEADER.toString()); - saveConfig(); - Benchmark.stop("Enable", "Copy default config"); + Benchmark.start("Copy default config"); + getConfig().options().copyDefaults(true); + getConfig().options().header(Phrase.CONFIG_HEADER.toString()); + saveConfig(); + Benchmark.stop("Enable", "Copy default config"); - Benchmark.start("Init Database"); - Log.info(Phrase.DB_INIT.toString()); - if (Check.ErrorIfFalse(initDatabase(), Phrase.DB_FAILURE_DISABLE.toString())) { - Log.info(Phrase.DB_ESTABLISHED.parse(db.getConfigName())); - } else { - disablePlugin(); - return; - } - Benchmark.stop("Enable", "Init Database"); - - Benchmark.start("Init DataCache"); - this.handler = new DataCacheHandler(this); - this.inspectCache = new InspectCacheHandler(this); - this.analysisCache = new AnalysisCacheHandler(this); - Benchmark.stop("Enable", "Init DataCache"); - - super.getRunnableFactory().createNew(new TPSCountTimer(this)).runTaskTimer(1000, TimeAmount.SECOND.ticks()); - registerListeners(); - - this.api = new API(this); - Benchmark.start("Handle Reload"); - handler.handleReload(); - Benchmark.stop("Enable", "Handle Reload"); - - Benchmark.start("Analysis refresh task registration"); - // Analysis refresh settings - boolean bootAnalysisIsEnabled = Settings.ANALYSIS_REFRESH_ON_ENABLE.isTrue(); - int analysisRefreshMinutes = Settings.ANALYSIS_AUTO_REFRESH.getNumber(); - boolean analysisRefreshTaskIsEnabled = analysisRefreshMinutes > 0; - - // Analysis refresh tasks - if (bootAnalysisIsEnabled) { - startBootAnalysisTask(); - } - if (analysisRefreshTaskIsEnabled) { - startAnalysisRefreshTask(analysisRefreshMinutes); - } - Benchmark.stop("Enable", "Analysis refresh task registration"); - - Benchmark.start("WebServer Initialization"); - // Data view settings - boolean webserverIsEnabled = Settings.WEBSERVER_ENABLED.isTrue(); - boolean usingAlternativeIP = Settings.SHOW_ALTERNATIVE_IP.isTrue(); - boolean usingAlternativeUI = Settings.USE_ALTERNATIVE_UI.isTrue(); - boolean hasDataViewCapability = usingAlternativeIP || usingAlternativeUI || webserverIsEnabled; - - if (webserverIsEnabled) { - uiServer = new WebServer(this); - uiServer.initServer(); - - if (!uiServer.isEnabled()) { - Log.error("WebServer was not successfully initialized."); + Benchmark.start("Init Database"); + Log.info(Phrase.DB_INIT.toString()); + if (Check.ErrorIfFalse(initDatabase(), Phrase.DB_FAILURE_DISABLE.toString())) { + Log.info(Phrase.DB_ESTABLISHED.parse(db.getConfigName())); + } else { + disablePlugin(); + return; } + Benchmark.stop("Enable", "Init Database"); - setupFilter(); - } else if (!hasDataViewCapability) { - Log.infoColor(Phrase.ERROR_NO_DATA_VIEW.toString()); + Benchmark.start("Init DataCache"); + this.handler = new DataCacheHandler(this); + this.inspectCache = new InspectCacheHandler(this); + this.analysisCache = new AnalysisCacheHandler(this); + Benchmark.stop("Enable", "Init DataCache"); + + super.getRunnableFactory().createNew(new TPSCountTimer(this)).runTaskTimer(1000, TimeAmount.SECOND.ticks()); + registerListeners(); + + this.api = new API(this); + Benchmark.start("Handle Reload"); + handler.handleReload(); + Benchmark.stop("Enable", "Handle Reload"); + + Benchmark.start("Analysis refresh task registration"); + // Analysis refresh settings + boolean bootAnalysisIsEnabled = Settings.ANALYSIS_REFRESH_ON_ENABLE.isTrue(); + int analysisRefreshMinutes = Settings.ANALYSIS_AUTO_REFRESH.getNumber(); + boolean analysisRefreshTaskIsEnabled = analysisRefreshMinutes > 0; + + // Analysis refresh tasks + if (bootAnalysisIsEnabled) { + startBootAnalysisTask(); + } + if (analysisRefreshTaskIsEnabled) { + startAnalysisRefreshTask(analysisRefreshMinutes); + } + Benchmark.stop("Enable", "Analysis refresh task registration"); + + Benchmark.start("WebServer Initialization"); + // Data view settings + boolean webserverIsEnabled = Settings.WEBSERVER_ENABLED.isTrue(); + boolean usingAlternativeIP = Settings.SHOW_ALTERNATIVE_IP.isTrue(); + boolean usingAlternativeUI = Settings.USE_ALTERNATIVE_UI.isTrue(); + boolean hasDataViewCapability = usingAlternativeIP || usingAlternativeUI || webserverIsEnabled; + + uiServer = new WebServer(this); + if (webserverIsEnabled) { + uiServer.initServer(); + + if (!uiServer.isEnabled()) { + Log.error("WebServer was not successfully initialized."); + } + + setupFilter(); + } else if (!hasDataViewCapability) { + Log.infoColor(Phrase.ERROR_NO_DATA_VIEW.toString()); + } + if (!usingAlternativeIP && serverVariableHolder.getIp().isEmpty()) { + Log.infoColor(Phrase.NOTIFY_EMPTY_IP.toString()); + } + Benchmark.stop("Enable", "WebServer Initialization"); + + registerCommand(new PlanCommand(this)); + + Benchmark.start("Hook to 3rd party plugins"); + hookHandler = new HookHandler(this); + Benchmark.stop("Enable", "Hook to 3rd party plugins"); + + BStats bStats = new BStats(this); + bStats.registerMetrics(); + + Log.debug("Verbose debug messages are enabled."); + Log.logDebug("Enable", Benchmark.stop("Enable", "Enable")); + Log.info(Phrase.ENABLED.toString()); + } catch (Exception e) { + Log.error("Plugin Failed to Initialize Correctly."); + Log.toLog(this.getClass().getName(), e); + disablePlugin(); } - if (!usingAlternativeIP && serverVariableHolder.getIp().isEmpty()) { - Log.infoColor(Phrase.NOTIFY_EMPTY_IP.toString()); - } - Benchmark.stop("Enable", "WebServer Initialization"); - - registerCommand(new PlanCommand(this)); - - Benchmark.start("Hook to 3rd party plugins"); - hookHandler = new HookHandler(this); - Benchmark.stop("Enable", "Hook to 3rd party plugins"); - - BStats bStats = new BStats(this); - bStats.registerMetrics(); - - Log.debug("Verbose debug messages are enabled."); - Log.logDebug("Enable", Benchmark.stop("Enable", "Enable")); - Log.info(Phrase.ENABLED.toString()); } /** @@ -269,7 +275,7 @@ public class Plan extends BukkitPlugin { registerListener(new PlanDeathEventListener(this)); } - Benchmark.stop("Register Listeners"); + Benchmark.stop("Enable", "Register Listeners"); } /** diff --git a/Plan/src/main/java/com/djrapitops/plan/command/PlanCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/PlanCommand.java index 5720937fb..dfd3f9060 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/PlanCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/PlanCommand.java @@ -32,7 +32,7 @@ public class PlanCommand extends TreeCommand { @Override public String[] addHelp() { - ColorScheme colorScheme = plugin.getColorScheme(); + ColorScheme colorScheme = Plan.getInstance().getColorScheme(); String mCol = colorScheme.getMainColor(); String sCol = colorScheme.getSecondaryColor(); diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/AnalyzeCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/AnalyzeCommand.java index 2054af449..21b0aeda7 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/AnalyzeCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/AnalyzeCommand.java @@ -40,7 +40,7 @@ public class AnalyzeCommand extends SubCommand { @Override public String[] addHelp() { - ColorScheme colorScheme = plugin.getColorScheme(); + ColorScheme colorScheme = Plan.getInstance().getColorScheme(); String mCol = colorScheme.getMainColor(); String sCol = colorScheme.getSecondaryColor(); diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/InspectCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/InspectCommand.java index c3bad335b..911dbf11e 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/InspectCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/InspectCommand.java @@ -47,7 +47,7 @@ public class InspectCommand extends SubCommand { @Override public String[] addHelp() { - ColorScheme colorScheme = plugin.getColorScheme(); + ColorScheme colorScheme = Plan.getInstance().getColorScheme(); String mCol = colorScheme.getMainColor(); String sCol = colorScheme.getSecondaryColor(); diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/ManageCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/ManageCommand.java index 233e8cac9..cda4d46f6 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/ManageCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/ManageCommand.java @@ -30,7 +30,7 @@ public class ManageCommand extends TreeCommand { @Override public String[] addHelp() { - ColorScheme colorScheme = plugin.getColorScheme(); + ColorScheme colorScheme = Plan.getInstance().getColorScheme(); String mCol = colorScheme.getMainColor(); String sCol = colorScheme.getSecondaryColor(); diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/QuickAnalyzeCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/QuickAnalyzeCommand.java index f31a74d1d..94e088a27 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/QuickAnalyzeCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/QuickAnalyzeCommand.java @@ -42,7 +42,7 @@ public class QuickAnalyzeCommand extends SubCommand { @Override public String[] addHelp() { - ColorScheme colorScheme = plugin.getColorScheme(); + ColorScheme colorScheme = Plan.getInstance().getColorScheme(); String mCol = colorScheme.getMainColor(); String sCol = colorScheme.getSecondaryColor(); diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/QuickInspectCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/QuickInspectCommand.java index 536ca9a9e..c0aa43761 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/QuickInspectCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/QuickInspectCommand.java @@ -47,7 +47,7 @@ public class QuickInspectCommand extends SubCommand { @Override public String[] addHelp() { - ColorScheme colorScheme = plugin.getColorScheme(); + ColorScheme colorScheme = Plan.getInstance().getColorScheme(); String mCol = colorScheme.getMainColor(); String sCol = colorScheme.getSecondaryColor(); diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/RegisterCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/RegisterCommand.java index 263d0045d..dd11d06d7 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/RegisterCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/RegisterCommand.java @@ -40,7 +40,7 @@ public class RegisterCommand extends SubCommand { @Override public String[] addHelp() { - ColorScheme colorScheme = plugin.getColorScheme(); + ColorScheme colorScheme = Plan.getInstance().getColorScheme(); String mCol = colorScheme.getMainColor(); String sCol = colorScheme.getSecondaryColor(); diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/SearchCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/SearchCommand.java index 8348e94de..a5e2c7112 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/SearchCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/SearchCommand.java @@ -38,7 +38,7 @@ public class SearchCommand extends SubCommand { @Override public String[] addHelp() { - ColorScheme colorScheme = plugin.getColorScheme(); + ColorScheme colorScheme = Plan.getInstance().getColorScheme(); String mCol = colorScheme.getMainColor(); String sCol = colorScheme.getSecondaryColor(); diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/WebUserCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/WebUserCommand.java index ff7c0dc45..1686cf874 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/WebUserCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/WebUserCommand.java @@ -26,7 +26,7 @@ public class WebUserCommand extends TreeCommand { @Override public String[] addHelp() { - ColorScheme colorScheme = plugin.getColorScheme(); + ColorScheme colorScheme = Plan.getInstance().getColorScheme(); String mCol = colorScheme.getMainColor(); String sCol = colorScheme.getSecondaryColor(); diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageClearCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageClearCommand.java index efdd3b807..b28ec326d 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageClearCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageClearCommand.java @@ -38,7 +38,7 @@ public class ManageClearCommand extends SubCommand { @Override public String[] addHelp() { - ColorScheme colorScheme = plugin.getColorScheme(); + ColorScheme colorScheme = Plan.getInstance().getColorScheme(); String mCol = colorScheme.getMainColor(); String sCol = colorScheme.getSecondaryColor(); diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageHotswapCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageHotswapCommand.java index 38be12524..a6ba70fa1 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageHotswapCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageHotswapCommand.java @@ -38,7 +38,7 @@ public class ManageHotswapCommand extends SubCommand { @Override public String[] addHelp() { - ColorScheme colorScheme = plugin.getColorScheme(); + ColorScheme colorScheme = Plan.getInstance().getColorScheme(); String mCol = colorScheme.getMainColor(); String sCol = colorScheme.getSecondaryColor(); diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageImportCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageImportCommand.java index 6eb6970fb..8549505e9 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageImportCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageImportCommand.java @@ -45,7 +45,7 @@ public class ManageImportCommand extends SubCommand { @Override public String[] addHelp() { - ColorScheme colorScheme = plugin.getColorScheme(); + ColorScheme colorScheme = Plan.getInstance().getColorScheme(); String mCol = colorScheme.getMainColor(); String sCol = colorScheme.getSecondaryColor(); diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageRemoveCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageRemoveCommand.java index 631595dd2..788af7ea7 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageRemoveCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/manage/ManageRemoveCommand.java @@ -41,7 +41,7 @@ public class ManageRemoveCommand extends SubCommand { @Override public String[] addHelp() { - ColorScheme colorScheme = plugin.getColorScheme(); + ColorScheme colorScheme = Plan.getInstance().getColorScheme(); String mCol = colorScheme.getMainColor(); String tCol = colorScheme.getTertiaryColor(); diff --git a/Plan/src/main/java/com/djrapitops/plan/data/additional/PluginData.java b/Plan/src/main/java/com/djrapitops/plan/data/additional/PluginData.java index a06c57935..56247d933 100644 --- a/Plan/src/main/java/com/djrapitops/plan/data/additional/PluginData.java +++ b/Plan/src/main/java/com/djrapitops/plan/data/additional/PluginData.java @@ -203,6 +203,10 @@ public abstract class PluginData { */ public abstract Serializable getValue(UUID uuid); + public Map getValues(Collection uuids) throws UnsupportedOperationException { + throw new UnsupportedOperationException("Not overridden."); + } + /** * Used to set the Font Awesome icon. * @@ -269,6 +273,11 @@ public abstract class PluginData { this.suffix = suffix; } + public final boolean isBanData() { + return placeholder.contains("banned") + && analysisTypes.contains(AnalysisType.BOOLEAN_TOTAL); + } + /** * If a PluginData object has same placeholder, sourcePlugin and * analysisTypes, it is considered equal. diff --git a/Plan/src/main/java/com/djrapitops/plan/ui/webserver/WebServer.java b/Plan/src/main/java/com/djrapitops/plan/ui/webserver/WebServer.java index 724bd3bdd..fefe9a7d8 100644 --- a/Plan/src/main/java/com/djrapitops/plan/ui/webserver/WebServer.java +++ b/Plan/src/main/java/com/djrapitops/plan/ui/webserver/WebServer.java @@ -42,7 +42,7 @@ public class WebServer { private HttpServer server; private final int port; - private boolean usingHttps; + private boolean usingHttps = false; /** * Class Constructor. diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/analysis/Analysis.java b/Plan/src/main/java/com/djrapitops/plan/utilities/analysis/Analysis.java index 051d36a97..6e8b4cb16 100644 --- a/Plan/src/main/java/com/djrapitops/plan/utilities/analysis/Analysis.java +++ b/Plan/src/main/java/com/djrapitops/plan/utilities/analysis/Analysis.java @@ -24,6 +24,7 @@ import main.java.com.djrapitops.plan.utilities.HtmlUtils; import main.java.com.djrapitops.plan.utilities.MiscUtils; import main.java.com.djrapitops.plan.utilities.comparators.UserDataLastPlayedComparator; +import java.io.Serializable; import java.util.*; import java.util.stream.Collectors; @@ -185,6 +186,7 @@ public class Analysis { final Map replaceMap = new HashMap<>(); final HookHandler hookHandler = plugin.getHookHandler(); final List sources = hookHandler.getAdditionalDataSources().stream() + .filter(p -> !p.isBanData()) .filter(p -> !p.getAnalysisTypes().isEmpty()) .collect(Collectors.toList()); final AnalysisType[] totalTypes = new AnalysisType[]{ @@ -264,6 +266,8 @@ public class Analysis { long now = MiscUtils.getTime(); Benchmark.start("Fill Dataset"); + List banSources = plugin.getHookHandler().getAdditionalDataSources() + .stream().filter(PluginData::isBanData).collect(Collectors.toList()); rawData.forEach(uData -> { uData.access(); Map gmTimes = uData.getGmTimes().getTimes(); @@ -292,7 +296,20 @@ public class Analysis { if (uData.isOp()) { playerCount.addOP(uuid); } - if (uData.isBanned()) { + + boolean banned = uData.isBanned(); + if (!banned) { + banned = banSources.stream() + .anyMatch(banData -> { + Serializable value = banData.getValue(uuid); + if (value instanceof Boolean) { + return (Boolean) value; + } + return false; + }); + } + + if (banned) { activity.addBan(uuid); } else if (uData.getLoginTimes() == 1) { activity.addJoinedOnce(uuid); diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/metrics/BStats.java b/Plan/src/main/java/com/djrapitops/plan/utilities/metrics/BStats.java index c473127f6..9a27d9feb 100644 --- a/Plan/src/main/java/com/djrapitops/plan/utilities/metrics/BStats.java +++ b/Plan/src/main/java/com/djrapitops/plan/utilities/metrics/BStats.java @@ -13,7 +13,7 @@ public class BStats { } public void registerMetrics() { - Log.debug("Enabling bStats Metrics."); + Log.debug("Enable", "Enabling bStats Metrics."); if (bStats == null) { bStats = new Metrics(plugin); }