From aff935bfc10593e1230f11b462e434a2bdd5e9fa Mon Sep 17 00:00:00 2001 From: Rsl1122 Date: Tue, 18 Sep 2018 17:58:01 +0300 Subject: [PATCH] [Debt] Removed HookHandler.getInstance() method. This method was in use for generating different PluginData related things: Bans, Analysis page & Inspect page plugins tabs. - Bans: Removed BanData related analysis objects as it is deprecated. Plugins will not be asked if a player is banned in the future, and will rely on server OfflinePlayer#isBanned instead. - Analysis Page: Generation tool is still static, on the TODO list. - Inspect Page: Added HookHandler as injected dependency --- .../plan/data/plugin/HookHandler.java | 9 ---- .../store/containers/AnalysisContainer.java | 9 ---- .../plan/data/store/keys/AnalysisKeys.java | 1 + .../mutators/combiners/MultiBanCombiner.java | 49 ------------------- .../GenerateInspectPluginsTabRequest.java | 17 ++++--- .../info/request/InfoRequestFactory.java | 2 +- .../request/InfoRequestHandlerFactory.java | 2 +- .../parts/InspectPagePluginsContent.java | 16 +++--- .../analysis/ServerBanDataReader.java | 39 --------------- .../utilities/html/pages/PageFactory.java | 9 ++++ .../AnalysisPluginsTabContentCreator.java | 4 +- 11 files changed, 35 insertions(+), 122 deletions(-) delete mode 100644 Plan/src/main/java/com/djrapitops/plan/data/store/mutators/combiners/MultiBanCombiner.java delete mode 100644 Plan/src/main/java/com/djrapitops/plan/utilities/analysis/ServerBanDataReader.java diff --git a/Plan/src/main/java/com/djrapitops/plan/data/plugin/HookHandler.java b/Plan/src/main/java/com/djrapitops/plan/data/plugin/HookHandler.java index 111f86745..7a3775273 100644 --- a/Plan/src/main/java/com/djrapitops/plan/data/plugin/HookHandler.java +++ b/Plan/src/main/java/com/djrapitops/plan/data/plugin/HookHandler.java @@ -2,13 +2,11 @@ package com.djrapitops.plan.data.plugin; import com.djrapitops.plan.PlanPlugin; import com.djrapitops.plan.data.element.InspectContainer; -import com.djrapitops.plan.system.PlanSystem; import com.djrapitops.plan.system.SubSystem; import com.djrapitops.plugin.StaticHolder; import com.djrapitops.plugin.logging.L; import com.djrapitops.plugin.logging.console.PluginLogger; import com.djrapitops.plugin.logging.error.ErrorHandler; -import com.djrapitops.plugin.utilities.Verify; import com.djrapitops.pluginbridge.plan.Bridge; import javax.inject.Inject; @@ -40,13 +38,6 @@ public class HookHandler implements SubSystem { additionalDataSources = new ArrayList<>(); } - @Deprecated - public static HookHandler getInstance() { - HookHandler hookHandler = PlanSystem.getInstance().getHookHandler(); - Verify.nullCheck(hookHandler, () -> new IllegalStateException("Plugin Hooks were not initialized.")); - return hookHandler; - } - @Override public void enable() { try { diff --git a/Plan/src/main/java/com/djrapitops/plan/data/store/containers/AnalysisContainer.java b/Plan/src/main/java/com/djrapitops/plan/data/store/containers/AnalysisContainer.java index 0fe59337c..b714b8d52 100644 --- a/Plan/src/main/java/com/djrapitops/plan/data/store/containers/AnalysisContainer.java +++ b/Plan/src/main/java/com/djrapitops/plan/data/store/containers/AnalysisContainer.java @@ -6,7 +6,6 @@ import com.djrapitops.plan.data.store.keys.AnalysisKeys; import com.djrapitops.plan.data.store.keys.PlayerKeys; import com.djrapitops.plan.data.store.keys.ServerKeys; import com.djrapitops.plan.data.store.mutators.*; -import com.djrapitops.plan.data.store.mutators.combiners.MultiBanCombiner; import com.djrapitops.plan.data.store.mutators.health.HealthInformation; import com.djrapitops.plan.data.store.objects.DateHolder; import com.djrapitops.plan.data.time.WorldTimes; @@ -16,7 +15,6 @@ import com.djrapitops.plan.system.settings.Settings; import com.djrapitops.plan.system.settings.config.PlanConfig; import com.djrapitops.plan.system.settings.theme.Theme; import com.djrapitops.plan.system.settings.theme.ThemeVal; -import com.djrapitops.plan.utilities.analysis.ServerBanDataReader; import com.djrapitops.plan.utilities.formatting.Formatter; import com.djrapitops.plan.utilities.html.graphs.Graphs; import com.djrapitops.plan.utilities.html.graphs.bar.BarGraph; @@ -82,12 +80,6 @@ public class AnalysisContainer extends DataContainer { addCommandSuppliers(); addServerHealth(); addPluginSuppliers(); - - runCombiners(); - } - - private void runCombiners() { - new MultiBanCombiner(this.serverContainer).combine(getUnsafe(AnalysisKeys.BAN_DATA)); } private void addConstants() { @@ -442,7 +434,6 @@ public class AnalysisContainer extends DataContainer { this ) ); - putSupplier(AnalysisKeys.BAN_DATA, () -> new ServerBanDataReader().readBanDataForContainer(this)); putSupplier(AnalysisKeys.PLUGINS_TAB_NAV, () -> getUnsafe(navAndTabs)[0]); putSupplier(AnalysisKeys.PLUGINS_TAB, () -> getUnsafe(navAndTabs)[1]); } diff --git a/Plan/src/main/java/com/djrapitops/plan/data/store/keys/AnalysisKeys.java b/Plan/src/main/java/com/djrapitops/plan/data/store/keys/AnalysisKeys.java index 978adbd72..9d7ea83dd 100644 --- a/Plan/src/main/java/com/djrapitops/plan/data/store/keys/AnalysisKeys.java +++ b/Plan/src/main/java/com/djrapitops/plan/data/store/keys/AnalysisKeys.java @@ -151,6 +151,7 @@ public class AnalysisKeys { public static final Key ANALYSIS_TIME_MONTH_AGO = new Key<>(Long.class, "ANALYSIS_TIME_MONTH_AGO"); public static final Key> PLAYER_NAMES = new Key<>(new Type>() {}, "PLAYER_NAMES"); public static final Key>>> ACTIVITY_DATA = CommonKeys.ACTIVITY_DATA; + @Deprecated public static final Key> BAN_DATA = new Key<>(new Type>() {}, "BAN_DATA"); public static final Key> UNIQUE_PLAYERS_PER_DAY = new Key<>(new Type>() {}, "UNIQUE_PLAYERS_PER_DAY"); public static final Key> NEW_PLAYERS_PER_DAY = new Key<>(new Type>() {}, "NEW_PLAYERS_PER_DAY"); diff --git a/Plan/src/main/java/com/djrapitops/plan/data/store/mutators/combiners/MultiBanCombiner.java b/Plan/src/main/java/com/djrapitops/plan/data/store/mutators/combiners/MultiBanCombiner.java deleted file mode 100644 index 1e8a7a05f..000000000 --- a/Plan/src/main/java/com/djrapitops/plan/data/store/mutators/combiners/MultiBanCombiner.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.djrapitops.plan.data.store.mutators.combiners; - -import com.djrapitops.plan.data.store.containers.DataContainer; -import com.djrapitops.plan.data.store.containers.PerServerContainer; -import com.djrapitops.plan.data.store.containers.PlayerContainer; -import com.djrapitops.plan.data.store.keys.PerServerKeys; -import com.djrapitops.plan.data.store.keys.PlayerKeys; -import com.djrapitops.plan.data.store.keys.ServerKeys; -import com.djrapitops.plan.system.info.server.ServerInfo; - -import java.util.*; - -public class MultiBanCombiner { - - private final DataContainer container; - - /** - * Constructor. - * - * @param container DataContainer that supports {@link com.djrapitops.plan.data.store.keys.ServerKeys}.PLAYERS - */ - public MultiBanCombiner(DataContainer container) { - this.container = container; - } - - public void combine(Set banned) { - combine(Collections.singletonMap(ServerInfo.getServerUUID_Old(), banned)); - } - - public void combine(Map> perServerBanned) { - List playerContainers = container.getValue(ServerKeys.PLAYERS).orElse(new ArrayList<>()); - - for (Map.Entry> entry : perServerBanned.entrySet()) { - UUID serverUUID = entry.getKey(); - Set banned = entry.getValue(); - for (PlayerContainer player : playerContainers) { - if (player.getValue(PlayerKeys.UUID).map(banned::contains).orElse(false)) { - PerServerContainer perServer = player.getValue(PlayerKeys.PER_SERVER) - .orElse(new PerServerContainer()); - DataContainer perServerContainer = perServer.getOrDefault(serverUUID, new DataContainer()); - - perServerContainer.putRawData(PerServerKeys.BANNED, true); - - perServer.put(serverUUID, perServerContainer); - } - } - } - } -} diff --git a/Plan/src/main/java/com/djrapitops/plan/system/info/request/GenerateInspectPluginsTabRequest.java b/Plan/src/main/java/com/djrapitops/plan/system/info/request/GenerateInspectPluginsTabRequest.java index 13f293315..55401d1a2 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/info/request/GenerateInspectPluginsTabRequest.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/info/request/GenerateInspectPluginsTabRequest.java @@ -9,7 +9,7 @@ import com.djrapitops.plan.api.exceptions.connection.WebException; import com.djrapitops.plan.system.info.InfoSystem; import com.djrapitops.plan.system.webserver.response.DefaultResponses; import com.djrapitops.plan.system.webserver.response.Response; -import com.djrapitops.plan.system.webserver.response.pages.parts.InspectPagePluginsContent; +import com.djrapitops.plan.utilities.html.pages.PageFactory; import com.djrapitops.plugin.utilities.Verify; import java.util.Map; @@ -24,24 +24,27 @@ public class GenerateInspectPluginsTabRequest extends InfoRequestWithVariables i private final InfoSystem infoSystem; private final InfoRequestFactory infoRequestFactory; + private final PageFactory pageFactory; private UUID playerUUID; GenerateInspectPluginsTabRequest( InfoSystem infoSystem, - InfoRequestFactory infoRequestFactory + InfoRequestFactory infoRequestFactory, + PageFactory pageFactory ) { this.infoSystem = infoSystem; this.infoRequestFactory = infoRequestFactory; + this.pageFactory = pageFactory; } - public GenerateInspectPluginsTabRequest( + GenerateInspectPluginsTabRequest( UUID uuid, InfoSystem infoSystem, - InfoRequestFactory infoRequestFactory + InfoRequestFactory infoRequestFactory, + PageFactory pageFactory ) { - this.infoSystem = infoSystem; - this.infoRequestFactory = infoRequestFactory; + this(infoSystem, infoRequestFactory, pageFactory); Verify.nullCheck(uuid); playerUUID = uuid; variables.put("player", uuid.toString()); @@ -62,7 +65,7 @@ public class GenerateInspectPluginsTabRequest extends InfoRequestWithVariables i } private void generateAndCache(UUID uuid) throws WebException { - String[] navAndHtml = InspectPagePluginsContent.generateForThisServer(uuid).getContents(); + String[] navAndHtml = pageFactory.inspectPagePluginsContent(uuid).getContents(); infoSystem.sendRequest(infoRequestFactory.cacheInspectPluginsTabRequest(uuid, navAndHtml[0], navAndHtml[1])); } diff --git a/Plan/src/main/java/com/djrapitops/plan/system/info/request/InfoRequestFactory.java b/Plan/src/main/java/com/djrapitops/plan/system/info/request/InfoRequestFactory.java index 0882b5c75..3ad4fae8b 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/info/request/InfoRequestFactory.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/info/request/InfoRequestFactory.java @@ -88,7 +88,7 @@ public class InfoRequestFactory { } public GenerateInspectPluginsTabRequest generateInspectPluginsTabRequest(UUID uuid) { - return new GenerateInspectPluginsTabRequest(uuid, infoSystem.get(), this); + return new GenerateInspectPluginsTabRequest(uuid, infoSystem.get(), this, pageFactory); } public GenerateNetworkPageContentRequest generateNetworkPageContentRequest() { diff --git a/Plan/src/main/java/com/djrapitops/plan/system/info/request/InfoRequestHandlerFactory.java b/Plan/src/main/java/com/djrapitops/plan/system/info/request/InfoRequestHandlerFactory.java index a0d964ede..0819bdf69 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/info/request/InfoRequestHandlerFactory.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/info/request/InfoRequestHandlerFactory.java @@ -91,7 +91,7 @@ public class InfoRequestHandlerFactory { } GenerateRequest generateInspectPluginsTabRequest() { - return new GenerateInspectPluginsTabRequest(infoSystem.get(), infoRequestFactory.get()); + return new GenerateInspectPluginsTabRequest(infoSystem.get(), infoRequestFactory.get(), pageFactory.get()); } GenerateRequest generateNetworkPageContentRequest() { diff --git a/Plan/src/main/java/com/djrapitops/plan/system/webserver/response/pages/parts/InspectPagePluginsContent.java b/Plan/src/main/java/com/djrapitops/plan/system/webserver/response/pages/parts/InspectPagePluginsContent.java index 5522f7c78..2c3ff5d4a 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/webserver/response/pages/parts/InspectPagePluginsContent.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/webserver/response/pages/parts/InspectPagePluginsContent.java @@ -37,11 +37,11 @@ public class InspectPagePluginsContent extends Response { addTab(serverUUID, nav, html); } - public static InspectPagePluginsContent generateForThisServer(UUID playerUUID) { - HookHandler hookHandler = HookHandler.getInstance(); + public static InspectPagePluginsContent generateForThisServer(UUID playerUUID, ServerInfo serverInfo, HookHandler hookHandler) { + String serverName = serverInfo.getServer().getName(); + String actualServerName = serverName.equals("Plan") ? "Server " + serverInfo.getServer().getId() : serverName; + Map containers = hookHandler.getInspectContainersFor(playerUUID); - String serverName = ServerInfo.getServerName_Old(); - String actualServerName = serverName.equals("Plan") ? "Server " + ServerInfo.getServerID_Old() : serverName; if (containers.isEmpty()) { return new InspectPagePluginsContent(playerUUID, "
  • " + actualServerName + " (No Data)
  • ", "
    " + @@ -50,7 +50,12 @@ public class InspectPagePluginsContent extends Response { } String nav = "
  • " + actualServerName + "
  • "; + String tab = createTab(containers); + return new InspectPagePluginsContent(serverInfo.getServerUUID(), nav, tab); + } + + private static String createTab(Map containers) { StringBuilder tab = new StringBuilder(); tab.append("
    "); @@ -63,8 +68,7 @@ public class InspectPagePluginsContent extends Response { } tab.append("
    "); - - return new InspectPagePluginsContent(ServerInfo.getServerUUID_Old(), nav, tab.toString()); + return tab.toString(); } public void addTab(UUID serverUUID, String nav, String html) { diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/analysis/ServerBanDataReader.java b/Plan/src/main/java/com/djrapitops/plan/utilities/analysis/ServerBanDataReader.java deleted file mode 100644 index 0b05ce35c..000000000 --- a/Plan/src/main/java/com/djrapitops/plan/utilities/analysis/ServerBanDataReader.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.djrapitops.plan.utilities.analysis; - -import com.djrapitops.plan.data.plugin.BanData; -import com.djrapitops.plan.data.plugin.HookHandler; -import com.djrapitops.plan.data.store.containers.DataContainer; -import com.djrapitops.plan.data.store.keys.AnalysisKeys; -import com.djrapitops.plan.data.store.mutators.PlayersMutator; -import com.djrapitops.plugin.api.utility.log.Log; - -import java.util.*; - -public class ServerBanDataReader { - - public ServerBanDataReader() { - } - - public Set readBanDataForContainer(DataContainer container) { - return readBanData( - container.getValue(AnalysisKeys.PLAYERS_MUTATOR) - .map(PlayersMutator::uuids) - .orElse(new ArrayList<>()) - ); - } - - public Set readBanData(Collection uuids) { - List banPlugins = HookHandler.getInstance().getBanDataSources(); - - Set banned = new HashSet<>(); - for (BanData banPlugin : banPlugins) { - try { - banned.addAll(banPlugin.filterBanned(uuids)); - } catch (Exception | NoSuchMethodError | NoClassDefFoundError | NoSuchFieldError e) { - Log.toLog("PluginData caused exception: " + banPlugin.getClass().getName(), e); - } - } - return banned; - } - -} diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/html/pages/PageFactory.java b/Plan/src/main/java/com/djrapitops/plan/utilities/html/pages/PageFactory.java index 7832f5b0b..03bfde074 100644 --- a/Plan/src/main/java/com/djrapitops/plan/utilities/html/pages/PageFactory.java +++ b/Plan/src/main/java/com/djrapitops/plan/utilities/html/pages/PageFactory.java @@ -1,5 +1,6 @@ package com.djrapitops.plan.utilities.html.pages; +import com.djrapitops.plan.data.plugin.HookHandler; import com.djrapitops.plan.data.store.containers.AnalysisContainer; import com.djrapitops.plan.data.store.containers.NetworkContainer; import com.djrapitops.plan.data.store.containers.PlayerContainer; @@ -8,6 +9,7 @@ import com.djrapitops.plan.system.info.connection.ConnectionSystem; import com.djrapitops.plan.system.info.server.ServerInfo; import com.djrapitops.plan.system.settings.config.PlanConfig; import com.djrapitops.plan.system.settings.theme.Theme; +import com.djrapitops.plan.system.webserver.response.pages.parts.InspectPagePluginsContent; import com.djrapitops.plan.utilities.formatting.Formatters; import com.djrapitops.plan.utilities.html.graphs.Graphs; import com.djrapitops.plan.utilities.html.tables.HtmlTables; @@ -39,6 +41,7 @@ public class PageFactory { private final Lazy graphs; private final Lazy tables; private final Lazy formatters; + private final Lazy hookHandler; private final Lazy debugLogger; private final Lazy timings; private final Lazy errorHandler; @@ -54,6 +57,7 @@ public class PageFactory { Lazy graphs, Lazy tables, Lazy formatters, + Lazy hookHandler, Lazy debugLogger, Lazy timings, Lazy errorHandler @@ -67,6 +71,7 @@ public class PageFactory { this.graphs = graphs; this.tables = tables; this.formatters = formatters; + this.hookHandler = hookHandler; this.debugLogger = debugLogger; this.timings = timings; this.errorHandler = errorHandler; @@ -100,6 +105,10 @@ public class PageFactory { ); } + public InspectPagePluginsContent inspectPagePluginsContent(UUID playerUUID) { + return InspectPagePluginsContent.generateForThisServer(playerUUID, serverInfo.get(), hookHandler.get()); + } + public NetworkPage networkPage() { NetworkContainer networkContainer = database.get().fetch().getNetworkContainer(); // Not cached, big. return new NetworkPage(networkContainer, serverInfo.get().getServerProperties()); diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/html/structure/AnalysisPluginsTabContentCreator.java b/Plan/src/main/java/com/djrapitops/plan/utilities/html/structure/AnalysisPluginsTabContentCreator.java index 328b16564..a5d32ca8b 100644 --- a/Plan/src/main/java/com/djrapitops/plan/utilities/html/structure/AnalysisPluginsTabContentCreator.java +++ b/Plan/src/main/java/com/djrapitops/plan/utilities/html/structure/AnalysisPluginsTabContentCreator.java @@ -23,6 +23,7 @@ import java.util.*; * * @author Rsl1122 */ +// TODO Turn non static public class AnalysisPluginsTabContentCreator { public static String[] createContent( @@ -101,7 +102,8 @@ public class AnalysisPluginsTabContentCreator { ) { Map containers = new HashMap<>(); - List sources = HookHandler.getInstance().getAdditionalDataSources(); + HookHandler hookHandler = null; // TODO + List sources = hookHandler.getAdditionalDataSources(); sources.parallelStream().forEach(source -> { PlanPlugin plugin = PlanPlugin.getInstance();