From 272906e4203dbeb744999326dc5c358c1f6cc7b8 Mon Sep 17 00:00:00 2001 From: Rsl1122 Date: Wed, 14 Aug 2019 18:42:58 +0300 Subject: [PATCH] Card columns for plugin tabs - Cleaned up some unneeded PluginData API classes --- .../com/djrapitops/plan/api/CommonAPI.java | 8 +- .../plan/data/plugin/HookHandler.java | 136 ----------- .../data/plugin/PluginsConfigSection.java | 15 -- .../djrapitops/plan/system/HtmlUtilities.java | 9 +- .../djrapitops/plan/system/PlanSystem.java | 12 +- .../plan/system/json/PluginTabJSONParser.java | 4 +- .../parts/InspectPagePluginsContent.java | 113 ---------- .../utilities/html/pages/NetworkPage.java | 11 +- .../utilities/html/pages/PageFactory.java | 18 -- .../utilities/html/pages/PlayerPluginTab.java | 9 +- ...sPluginTabs.java => ServerPluginTabs.java} | 13 +- .../AnalysisPluginsTabContentCreator.java | 211 ------------------ .../html/tables/PlayersTableTest.java | 2 - 13 files changed, 22 insertions(+), 539 deletions(-) delete mode 100644 Plan/common/src/main/java/com/djrapitops/plan/data/plugin/HookHandler.java delete mode 100644 Plan/common/src/main/java/com/djrapitops/plan/system/webserver/response/pages/parts/InspectPagePluginsContent.java rename Plan/common/src/main/java/com/djrapitops/plan/utilities/html/pages/{AnalysisPluginTabs.java => ServerPluginTabs.java} (96%) delete mode 100644 Plan/common/src/main/java/com/djrapitops/plan/utilities/html/structure/AnalysisPluginsTabContentCreator.java diff --git a/Plan/common/src/main/java/com/djrapitops/plan/api/CommonAPI.java b/Plan/common/src/main/java/com/djrapitops/plan/api/CommonAPI.java index 97bc6b8b9..3b4cead67 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/api/CommonAPI.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/api/CommonAPI.java @@ -19,7 +19,6 @@ package com.djrapitops.plan.api; import com.djrapitops.plan.api.data.PlayerContainer; import com.djrapitops.plan.api.data.ServerContainer; import com.djrapitops.plan.api.exceptions.database.DBOpException; -import com.djrapitops.plan.data.plugin.HookHandler; import com.djrapitops.plan.data.plugin.PluginData; import com.djrapitops.plan.db.access.Query; import com.djrapitops.plan.db.access.queries.containers.ContainerFetchQueries; @@ -50,7 +49,6 @@ public class CommonAPI implements PlanAPI { private final DBSystem dbSystem; private final UUIDUtility uuidUtility; - private final HookHandler hookHandler; private final PluginLogger logger; private final ErrorHandler errorHandler; @@ -58,13 +56,11 @@ public class CommonAPI implements PlanAPI { public CommonAPI( DBSystem dbSystem, UUIDUtility uuidUtility, - HookHandler hookHandler, PluginLogger logger, ErrorHandler errorHandler ) { this.dbSystem = dbSystem; this.uuidUtility = uuidUtility; - this.hookHandler = hookHandler; this.logger = logger; this.errorHandler = errorHandler; PlanAPIHolder.set(this); @@ -72,7 +68,9 @@ public class CommonAPI implements PlanAPI { @Override public void addPluginDataSource(PluginData pluginData) { - hookHandler.addPluginDataSource(pluginData); + logger.warn(pluginData.getClass().getName() + " was attempted to be registered." + + " PluginData API has been decommissioned, so this is a no-op." + + " Please move to using DataExtension API. https://github.com/plan-player-analytics/Plan/wiki/APIv5"); } @Override diff --git a/Plan/common/src/main/java/com/djrapitops/plan/data/plugin/HookHandler.java b/Plan/common/src/main/java/com/djrapitops/plan/data/plugin/HookHandler.java deleted file mode 100644 index 84427f893..000000000 --- a/Plan/common/src/main/java/com/djrapitops/plan/data/plugin/HookHandler.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * This file is part of Player Analytics (Plan). - * - * Plan is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License v3 as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Plan is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Plan. If not, see . - */ -package com.djrapitops.plan.data.plugin; - -import com.djrapitops.plan.data.element.InspectContainer; -import com.djrapitops.plan.system.SubSystem; -import com.djrapitops.plugin.logging.L; -import com.djrapitops.plugin.logging.console.PluginLogger; -import com.djrapitops.plugin.logging.error.ErrorHandler; -import com.djrapitops.pluginbridge.plan.Bridge; - -import javax.inject.Inject; -import javax.inject.Singleton; -import java.util.*; - -/** - * Class responsible for hooking to other plugins and managing the %plugins% - * placeholder on Analysis and Inspect pages. - * - * @author Rsl1122 - */ -@Singleton -public class HookHandler implements SubSystem { - - private final List additionalDataSources; - - private final Bridge bridge; - private PluginsConfigSection configHandler; - private final PluginLogger logger; - private final ErrorHandler errorHandler; - - @Inject - public HookHandler( - Bridge bridge, - PluginsConfigSection configHandler, - PluginLogger logger, - ErrorHandler errorHandler - ) { - this.bridge = bridge; - this.configHandler = configHandler; - this.logger = logger; - this.errorHandler = errorHandler; - - additionalDataSources = new ArrayList<>(); - } - - @Override - public void enable() { - try { - bridge.hook(this); - } catch (Exception e) { - errorHandler.log(L.ERROR, this.getClass(), e); - logger.error("Plan Plugin Bridge not included in the plugin jar."); - } - } - - @Override - public void disable() { - // Nothing to disable - } - - /** - * Adds a new PluginData source to the list. - *

- * The plugin data will appear on Analysis and/or Inspect pages depending on - * how the extending object is set up. - *

- * Refer to documentation on GitHub for more information. - * - * @param dataSource an object extending the PluginData class. - */ - public void addPluginDataSource(PluginData dataSource) { - if (dataSource == null) { - return; - } - try { - if (!configHandler.hasSection(dataSource)) { - configHandler.createSection(dataSource); - } - if (configHandler.isEnabled(dataSource)) { - additionalDataSources.stream() - .filter(pluginData -> pluginData.getSourcePlugin().equals(dataSource.getSourcePlugin())) - .findAny() - .ifPresent(additionalDataSources::remove); - logger.debug("Registered a new datasource: " + dataSource.getSourcePlugin()); - additionalDataSources.add(dataSource); - } - } catch (Exception e) { - errorHandler.log(L.WARN, this.getClass(), e); - logger.error("Attempting to register PluginDataSource caused an exception."); - } - } - - /** - * Used to get all PluginData objects currently registered. - * - * @return List of PluginData objects. - */ - public List getAdditionalDataSources() { - return additionalDataSources; - } - - public Map getInspectContainersFor(UUID uuid) { - List plugins = getAdditionalDataSources(); - Map containers = new HashMap<>(); - for (PluginData pluginData : plugins) { - InspectContainer inspectContainer = new InspectContainer(); - try { - InspectContainer container = pluginData.getPlayerData(uuid, inspectContainer); - if (container != null && !container.isEmpty()) { - containers.put(pluginData, container); - } - } catch (Exception | NoClassDefFoundError | NoSuchFieldError | NoSuchMethodError e) { - String pluginName = pluginData.getSourcePlugin(); - logger.error("PluginData caused exception: " + pluginName + - ", you can disable the integration under 'Plugins." + pluginName + ".Enabled'"); - errorHandler.log(L.WARN, pluginData.getClass(), e); - } - } - return containers; - } -} diff --git a/Plan/common/src/main/java/com/djrapitops/plan/data/plugin/PluginsConfigSection.java b/Plan/common/src/main/java/com/djrapitops/plan/data/plugin/PluginsConfigSection.java index 85602e04c..9993ef59a 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/data/plugin/PluginsConfigSection.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/data/plugin/PluginsConfigSection.java @@ -39,11 +39,6 @@ public class PluginsConfigSection { this.config = config; } - @Deprecated - public boolean hasSection(PluginData dataSource) { - return hasSection(dataSource.getSourcePlugin()); - } - public boolean hasSection(String pluginName) { ConfigNode section = getPluginsSection(); return section.getNode(pluginName + ".Enabled").isPresent(); @@ -54,11 +49,6 @@ public class PluginsConfigSection { .orElse(config.addNode("Plugins")); } - @Deprecated - public void createSection(PluginData dataSource) throws IOException { - createSection(dataSource.getSourcePlugin()); - } - public void createSection(String pluginName) throws IOException { ConfigNode section = getPluginsSection(); @@ -67,11 +57,6 @@ public class PluginsConfigSection { section.save(); } - @Deprecated - public boolean isEnabled(PluginData dataSource) { - return isEnabled(dataSource.getSourcePlugin()); - } - public boolean isEnabled(String pluginName) { ConfigNode section = getPluginsSection(); return section.getBoolean(pluginName + ".Enabled"); diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/HtmlUtilities.java b/Plan/common/src/main/java/com/djrapitops/plan/system/HtmlUtilities.java index 27b29cc09..7dceb11c0 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/system/HtmlUtilities.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/system/HtmlUtilities.java @@ -19,7 +19,6 @@ package com.djrapitops.plan.system; import com.djrapitops.plan.utilities.formatting.Formatters; import com.djrapitops.plan.utilities.html.graphs.Graphs; import com.djrapitops.plan.utilities.html.structure.Accordions; -import com.djrapitops.plan.utilities.html.structure.AnalysisPluginsTabContentCreator; import com.djrapitops.plan.utilities.html.tables.HtmlTables; import dagger.Lazy; @@ -33,21 +32,18 @@ public class HtmlUtilities { private final Lazy htmlTables; private final Lazy graphs; private final Lazy accordions; - private final Lazy analysisPluginsTabContentCreator; @Inject public HtmlUtilities( Lazy formatters, Lazy htmlTables, Lazy graphs, - Lazy accordions, - Lazy analysisPluginsTabContentCreator + Lazy accordions ) { this.formatters = formatters; this.htmlTables = htmlTables; this.graphs = graphs; this.accordions = accordions; - this.analysisPluginsTabContentCreator = analysisPluginsTabContentCreator; } public Formatters getFormatters() { @@ -66,7 +62,4 @@ public class HtmlUtilities { return accordions.get(); } - public AnalysisPluginsTabContentCreator getAnalysisPluginsTabContentCreator() { - return analysisPluginsTabContentCreator.get(); - } } diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/PlanSystem.java b/Plan/common/src/main/java/com/djrapitops/plan/system/PlanSystem.java index 504efb1c6..006313ae8 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/system/PlanSystem.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/system/PlanSystem.java @@ -19,7 +19,6 @@ package com.djrapitops.plan.system; import com.djrapitops.plan.api.PlanAPI; import com.djrapitops.plan.api.exceptions.EnableException; import com.djrapitops.plan.capability.CapabilityServiceImplementation; -import com.djrapitops.plan.data.plugin.HookHandler; import com.djrapitops.plan.db.access.queries.objects.ServerQueries; import com.djrapitops.plan.extension.ExtensionService; import com.djrapitops.plan.extension.ExtensionServiceImplementation; @@ -73,7 +72,6 @@ public class PlanSystem implements SubSystem { private final ImportSystem importSystem; private final ExportSystem exportSystem; private final HtmlUtilities htmlUtilities; - private final HookHandler hookHandler; private final ExtensionServiceImplementation extensionService; private final QueryServiceImplementation queryService; private final PlanAPI planAPI; @@ -95,7 +93,6 @@ public class PlanSystem implements SubSystem { ImportSystem importSystem, ExportSystem exportSystem, HtmlUtilities htmlUtilities, - HookHandler hookHandler, ExtensionServiceImplementation extensionService, QueryServiceImplementation queryService, PlanAPI planAPI, @@ -115,7 +112,6 @@ public class PlanSystem implements SubSystem { this.importSystem = importSystem; this.exportSystem = exportSystem; this.htmlUtilities = htmlUtilities; - this.hookHandler = hookHandler; this.extensionService = extensionService; this.queryService = queryService; this.planAPI = planAPI; @@ -149,8 +145,7 @@ public class PlanSystem implements SubSystem { exportSystem, cacheSystem, listenerSystem, - taskSystem, - hookHandler + taskSystem ); queryService.register(); extensionService.register(); @@ -168,7 +163,6 @@ public class PlanSystem implements SubSystem { enabled = false; disableSystems( taskSystem, - hookHandler, cacheSystem, listenerSystem, importSystem, @@ -242,10 +236,6 @@ public class PlanSystem implements SubSystem { return cacheSystem; } - public HookHandler getHookHandler() { - return hookHandler; - } - public PlanAPI getPlanAPI() { return planAPI; } diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/json/PluginTabJSONParser.java b/Plan/common/src/main/java/com/djrapitops/plan/system/json/PluginTabJSONParser.java index c306dcb28..f22283662 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/system/json/PluginTabJSONParser.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/system/json/PluginTabJSONParser.java @@ -25,7 +25,7 @@ import com.djrapitops.plan.system.webserver.RequestTarget; import com.djrapitops.plan.system.webserver.auth.Authentication; import com.djrapitops.plan.system.webserver.pages.json.ServerTabJSONHandler; import com.djrapitops.plan.utilities.formatting.Formatters; -import com.djrapitops.plan.utilities.html.pages.AnalysisPluginTabs; +import com.djrapitops.plan.utilities.html.pages.ServerPluginTabs; import javax.inject.Inject; import javax.inject.Singleton; @@ -47,7 +47,7 @@ public class PluginTabJSONParser extends ServerTabJSONHandler { List extensionData = dbSystem.getDatabase() .query(new ExtensionServerDataQuery(serverUUID)); - AnalysisPluginTabs pluginTabs = new AnalysisPluginTabs(extensionData, formatters); + ServerPluginTabs pluginTabs = new ServerPluginTabs(extensionData, formatters); return new ExtensionTabs(pluginTabs.getNav(), pluginTabs.getTabs()); }); } diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/webserver/response/pages/parts/InspectPagePluginsContent.java b/Plan/common/src/main/java/com/djrapitops/plan/system/webserver/response/pages/parts/InspectPagePluginsContent.java deleted file mode 100644 index a5ec5e577..000000000 --- a/Plan/common/src/main/java/com/djrapitops/plan/system/webserver/response/pages/parts/InspectPagePluginsContent.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * This file is part of Player Analytics (Plan). - * - * Plan is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License v3 as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Plan is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Plan. If not, see . - */ -package com.djrapitops.plan.system.webserver.response.pages.parts; - -import com.djrapitops.plan.data.element.InspectContainer; -import com.djrapitops.plan.data.plugin.HookHandler; -import com.djrapitops.plan.data.plugin.PluginData; -import com.djrapitops.plan.system.info.server.ServerInfo; -import com.djrapitops.plan.system.webserver.response.pages.PageResponse; -import com.djrapitops.plan.utilities.comparators.PluginDataNameComparator; -import com.djrapitops.plan.utilities.html.Html; -import com.djrapitops.plan.utilities.html.HtmlStructure; -import com.djrapitops.plan.utilities.html.structure.AnalysisPluginsTabContentCreator; - -import java.util.*; - -/** - * Represents Plugins tabs on Inspect page. - *

- * Extends Response so that it can be stored in ResponseCache. - * - * @deprecated PluginData API has been deprecated - see https://github.com/plan-player-analytics/Plan/wiki/APIv5---DataExtension-API for new API. - * @author Rsl1122 - */ -@Deprecated -public class InspectPagePluginsContent extends PageResponse { - - // ServerUUID, {nav, html} - private final Map pluginsTab; - - public InspectPagePluginsContent() { - pluginsTab = new HashMap<>(); - } - - public InspectPagePluginsContent(String nav, String html) { - pluginsTab = new HashMap<>(); - addTab(nav, html); - } - - public static InspectPagePluginsContent generateForThisServer(UUID playerUUID, ServerInfo serverInfo, HookHandler hookHandler) { - String serverName = serverInfo.getServer().getName(); - String actualServerName = "Plan".equals(serverName) ? "Server " + serverInfo.getServer().getId() : serverName; - - Map containers = hookHandler.getInspectContainersFor(playerUUID); - if (containers.isEmpty()) { - return new InspectPagePluginsContent("

  • " + actualServerName + " (No Data)
  • ", - "
    " + - "
    " + Html.CARD.parse("

    No Data (" + actualServerName + ")

    ") + - "
    "); - } - - String nav = "
  • " + actualServerName + " (Legacy)
  • "; - String tab = createTab(containers); - - return new InspectPagePluginsContent(nav, tab); - } - - private static String createTab(Map containers) { - StringBuilder tab = new StringBuilder(); - tab.append("
    "); - - List order = new ArrayList<>(containers.keySet()); - order.sort(new PluginDataNameComparator()); - - for (PluginData pluginData : order) { - InspectContainer container = containers.get(pluginData); - AnalysisPluginsTabContentCreator.appendThird(pluginData, container, tab); - } - - tab.append("
    "); - return tab.toString(); - } - - public void addTab(String nav, String html) { - pluginsTab.put(nav, new String[]{nav, html}); - } - - public void addTab(InspectPagePluginsContent content) { - pluginsTab.putAll(content.pluginsTab); - } - - public String[] getContents() { - if (pluginsTab.isEmpty()) { - return HtmlStructure.createInspectPageTabContentCalculating(); - } - - List order = new ArrayList<>(pluginsTab.values()); - // Sort serverNames alphabetically - order.sort(Comparator.comparing(name -> name[0])); - - StringBuilder nav = new StringBuilder(); - StringBuilder tabs = new StringBuilder(); - for (String[] tab : order) { - nav.append(tab[0]); - tabs.append(tab[1]); - } - return new String[]{nav.toString(), tabs.toString()}; - } -} diff --git a/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/pages/NetworkPage.java b/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/pages/NetworkPage.java index d4f557598..2d03839c0 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/pages/NetworkPage.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/pages/NetworkPage.java @@ -25,7 +25,6 @@ import com.djrapitops.plan.system.info.server.properties.ServerProperties; import com.djrapitops.plan.system.update.VersionCheckSystem; import com.djrapitops.plan.utilities.formatting.Formatters; import com.djrapitops.plan.utilities.formatting.PlaceholderReplacer; -import com.djrapitops.plan.utilities.html.structure.AnalysisPluginsTabContentCreator; import java.util.ArrayList; @@ -39,7 +38,6 @@ import static com.djrapitops.plan.data.store.keys.NetworkKeys.*; public class NetworkPage implements Page { private final NetworkContainer networkContainer; - private final AnalysisPluginsTabContentCreator analysisPluginsTabContentCreator; private final VersionCheckSystem versionCheckSystem; private final PlanFiles files; @@ -48,14 +46,12 @@ public class NetworkPage implements Page { NetworkPage( NetworkContainer networkContainer, - AnalysisPluginsTabContentCreator analysisPluginsTabContentCreator, VersionCheckSystem versionCheckSystem, PlanFiles files, ServerProperties serverProperties, Formatters formatters ) { this.networkContainer = networkContainer; - this.analysisPluginsTabContentCreator = analysisPluginsTabContentCreator; this.versionCheckSystem = versionCheckSystem; this.files = files; this.serverProperties = serverProperties; @@ -83,11 +79,10 @@ public class NetworkPage implements Page { ); placeholderReplacer.put("update", versionCheckSystem.getUpdateHtml().orElse("")); - AnalysisPluginTabs analysisPluginTabs = new AnalysisPluginTabs(networkContainer.getBungeeContainer().getValue(ServerKeys.EXTENSION_DATA).orElse(new ArrayList<>()), formatters); + ServerPluginTabs serverPluginTabs = new ServerPluginTabs(networkContainer.getBungeeContainer().getValue(ServerKeys.EXTENSION_DATA).orElse(new ArrayList<>()), formatters); - String[] content = analysisPluginsTabContentCreator.createContent(null, networkContainer.getUnsafe(NetworkKeys.PLAYERS_MUTATOR)); - String nav = analysisPluginTabs.getNav() + content[0]; - String tabs = analysisPluginTabs.getTabs() + content[1]; + String nav = serverPluginTabs.getNav(); + String tabs = serverPluginTabs.getTabs(); placeholderReplacer.put("navPluginsTabs", nav); placeholderReplacer.put("tabsPlugins", tabs); diff --git a/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/pages/PageFactory.java b/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/pages/PageFactory.java index c48f34680..fb71b5535 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/pages/PageFactory.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/pages/PageFactory.java @@ -17,7 +17,6 @@ package com.djrapitops.plan.utilities.html.pages; import com.djrapitops.plan.api.exceptions.connection.NotFoundException; -import com.djrapitops.plan.data.plugin.HookHandler; import com.djrapitops.plan.data.store.containers.NetworkContainer; import com.djrapitops.plan.data.store.containers.PlayerContainer; import com.djrapitops.plan.db.Database; @@ -32,9 +31,7 @@ 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.update.VersionCheckSystem; -import com.djrapitops.plan.system.webserver.response.pages.parts.InspectPagePluginsContent; import com.djrapitops.plan.utilities.formatting.Formatters; -import com.djrapitops.plan.utilities.html.structure.AnalysisPluginsTabContentCreator; import com.djrapitops.plan.utilities.html.tables.HtmlTables; import com.djrapitops.plugin.benchmarking.Timings; import com.djrapitops.plugin.logging.debug.DebugLogger; @@ -61,8 +58,6 @@ public class PageFactory { private final Lazy serverInfo; private final Lazy tables; private final Lazy formatters; - private final Lazy analysisPluginsTabContentCreator; - private final Lazy hookHandler; private final Lazy debugLogger; private final Lazy timings; private final Lazy errorHandler; @@ -77,8 +72,6 @@ public class PageFactory { Lazy serverInfo, Lazy tables, Lazy formatters, - Lazy analysisPluginsTabContentCreator, - Lazy hookHandler, Lazy debugLogger, Lazy timings, Lazy errorHandler @@ -91,8 +84,6 @@ public class PageFactory { this.serverInfo = serverInfo; this.tables = tables; this.formatters = formatters; - this.analysisPluginsTabContentCreator = analysisPluginsTabContentCreator; - this.hookHandler = hookHandler; this.debugLogger = debugLogger; this.timings = timings; this.errorHandler = errorHandler; @@ -167,19 +158,10 @@ public class PageFactory { return new PlayerPluginTab(navs.toString(), tabs.toString()); } - /** - * @deprecated Marked for removal when the connection system will be removed. - */ - @Deprecated - public InspectPagePluginsContent inspectPagePluginsContent(UUID playerUUID) { - return InspectPagePluginsContent.generateForThisServer(playerUUID, serverInfo.get(), hookHandler.get()); - } - public NetworkPage networkPage() { NetworkContainer networkContainer = dbSystem.get().getDatabase() .query(ContainerFetchQueries.fetchNetworkContainer()); // Not cached, big. return new NetworkPage(networkContainer, - analysisPluginsTabContentCreator.get(), versionCheckSystem.get(), fileSystem.get(), serverInfo.get().getServerProperties(), formatters.get()); } } \ No newline at end of file diff --git a/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/pages/PlayerPluginTab.java b/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/pages/PlayerPluginTab.java index 2f96dadd2..8b6691b9a 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/pages/PlayerPluginTab.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/pages/PlayerPluginTab.java @@ -133,7 +133,7 @@ public class PlayerPluginTab implements Comparable { "

    ${playerName} · " + serverName + " Plugins

    " + "" + // End Page heading - "
    " + content + "
    "; + "
    " + content + "
    "; } private TabsElement.Tab wrapToTabElementTab(ExtensionTabData tabData) { @@ -204,17 +204,18 @@ public class PlayerPluginTab implements Comparable { builder.append("

    "); } builder.append(Icon.fromExtensionIcon(descriptive.getIcon())) - .append(' ').append(descriptive.getText()).append(": ").append(formattedValue).append("

    "); + .append(' ').append(descriptive.getText()).append("").append(formattedValue).append("

    "); } private String wrapInContainer(ExtensionInformation information, String tabsElement) { String colWidth = hasWideTable ? "col-md-8 col-lg-8" : "col-md-4 col-lg-4"; - return "
    " + + // TODO move large tables to their own tabs + return "
    " + "
    " + "
    " + Icon.fromExtensionIcon(information.getIcon()) + ' ' + information.getPluginName() + "
    " + "
    " + tabsElement + - "
    "; + "
    "; } @Override diff --git a/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/pages/AnalysisPluginTabs.java b/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/pages/ServerPluginTabs.java similarity index 96% rename from Plan/common/src/main/java/com/djrapitops/plan/utilities/html/pages/AnalysisPluginTabs.java rename to Plan/common/src/main/java/com/djrapitops/plan/utilities/html/pages/ServerPluginTabs.java index b51094b48..328e7ab39 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/pages/AnalysisPluginTabs.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/pages/ServerPluginTabs.java @@ -41,7 +41,7 @@ import java.util.*; * * @author Rsl1122 */ -public class AnalysisPluginTabs { +public class ServerPluginTabs { private List serverData; @@ -55,12 +55,12 @@ public class AnalysisPluginTabs { private boolean hasWideTable; - public AnalysisPluginTabs(String nav, String tab) { + public ServerPluginTabs(String nav, String tab) { this.nav = nav; this.tab = tab; } - public AnalysisPluginTabs( + public ServerPluginTabs( List serverData, Formatters formatters ) { @@ -133,7 +133,7 @@ public class AnalysisPluginTabs { "

    · Plugins Overview

    " + "" + // End Page heading - "
    " + content + "
    "; + "
    " + content + "
    "; } private TabsElement.Tab wrapToTabElementTab(ExtensionTabData tabData) { @@ -209,11 +209,12 @@ public class AnalysisPluginTabs { private String wrapInContainer(ExtensionInformation information, String tabsElement) { String colWidth = hasWideTable ? "col-md-8 col-lg-8 col-sm-12" : "col-md-4 col-lg-4 col-sm-12"; - return "
    " + + // TODO move large tables to their own tabs + return "
    " + "
    " + "
    " + Icon.fromExtensionIcon(information.getIcon()) + ' ' + information.getPluginName() + "
    " + "
    " + tabsElement + - "
    "; + "
    "; } } \ No newline at end of file diff --git a/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/structure/AnalysisPluginsTabContentCreator.java b/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/structure/AnalysisPluginsTabContentCreator.java deleted file mode 100644 index 58899aa78..000000000 --- a/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/structure/AnalysisPluginsTabContentCreator.java +++ /dev/null @@ -1,211 +0,0 @@ -/* - * This file is part of Player Analytics (Plan). - * - * Plan is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License v3 as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Plan is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Plan. If not, see . - */ -package com.djrapitops.plan.utilities.html.structure; - -import com.djrapitops.plan.data.element.AnalysisContainer; -import com.djrapitops.plan.data.element.InspectContainer; -import com.djrapitops.plan.data.plugin.HookHandler; -import com.djrapitops.plan.data.plugin.PluginData; -import com.djrapitops.plan.data.store.mutators.PlayersMutator; -import com.djrapitops.plan.system.DebugChannels; -import com.djrapitops.plan.utilities.comparators.PluginDataNameComparator; -import com.djrapitops.plan.utilities.html.tables.HtmlTables; -import com.djrapitops.plugin.benchmarking.Timings; -import com.djrapitops.plugin.logging.L; -import com.djrapitops.plugin.logging.console.PluginLogger; -import com.djrapitops.plugin.logging.error.ErrorHandler; - -import javax.inject.Inject; -import javax.inject.Singleton; -import java.util.*; - -/** - * Creates Plugin section contents for Analysis page. - * - * @author Rsl1122 - * @deprecated PluginData API has been deprecated - see https://github.com/plan-player-analytics/Plan/wiki/APIv5---DataExtension-API for new API. - */ -@Singleton -@Deprecated -public class AnalysisPluginsTabContentCreator { - - private final HookHandler hookHandler; - private final HtmlTables tables; - private final Timings timings; - private final PluginLogger logger; - private final ErrorHandler errorHandler; - - @Inject - public AnalysisPluginsTabContentCreator( - HookHandler hookHandler, - HtmlTables tables, - Timings timings, - PluginLogger logger, - ErrorHandler errorHandler - ) { - this.hookHandler = hookHandler; - this.tables = tables; - this.timings = timings; - this.logger = logger; - this.errorHandler = errorHandler; - } - - private static void appendNewTab(PluginData pluginData, AnalysisContainer container, StringBuilder nav, StringBuilder otherTabs) { - nav.append("
  • ").append(pluginData.getSourcePlugin()).append(" (Legacy)
  • "); - otherTabs.append("
    " + - "
    " + - "
    " + - "

    ") - .append(pluginData.parsePluginIcon()).append(" ").append(pluginData.getSourcePlugin()) - .append("

    ") - .append(container.parseHtml()) - .append("
    "); - } - - private Map analyzeAdditionalPluginData( - Collection uuids, - com.djrapitops.plan.data.store.containers.AnalysisContainer analysisContainer - ) { - Map containers = new HashMap<>(); - - List sources = hookHandler.getAdditionalDataSources(); - - sources.parallelStream().forEach(source -> { - String pluginName = source.getSourcePlugin(); - try { - timings.start("Source " + pluginName); - - source.setAnalysisData(analysisContainer); - AnalysisContainer container = source.getServerData(uuids, new AnalysisContainer()); - if (container != null && !container.isEmpty()) { - containers.put(source, container); - } - - } catch (Exception | NoClassDefFoundError | NoSuchFieldError | NoSuchMethodError e) { - logger.error("A PluginData-source caused an exception: " + pluginName + - ", you can disable the integration under 'Plugins." + pluginName + ".Enabled'"); - errorHandler.log(L.WARN, this.getClass(), e); - } finally { - timings.end(DebugChannels.ANALYSIS, "Source " + pluginName); - source.setAnalysisData(null); - } - }); - return containers; - } - - public static void appendThird(PluginData pluginData, InspectContainer container, StringBuilder generalTab) { - generalTab.append("
    " + - "
    " + - "
    " + - "

    ") - .append(pluginData.parsePluginIcon()).append(" ").append(pluginData.getSourcePlugin()) - .append("

    ") - .append(container.parseHtml()) - .append("
    "); - } - - private static void appendTwoThirds(PluginData pluginData, AnalysisContainer container, StringBuilder generalTab) { - generalTab.append("
    " + - "
    " + - "
    " + - "

    ") - .append(pluginData.parsePluginIcon()).append(" ").append(pluginData.getSourcePlugin()) - .append("

    ") - .append(container.parseHtml()) - .append("
    "); - } - - private static void appendWhole(PluginData pluginData, AnalysisContainer container, StringBuilder generalTab) { - generalTab.append("
    " + - "
    " + - "
    " + - "

    ") - .append(pluginData.parsePluginIcon()).append(" ").append(pluginData.getSourcePlugin()) - .append("

    ").append("
    ") - .append(container.parseHtml()) - .append("
    "); - } - - public String[] createContent( - com.djrapitops.plan.data.store.containers.AnalysisContainer analysisContainer, - PlayersMutator mutator - ) { - - if (mutator.all().isEmpty()) { - return new String[]{"", ""}; - } - - List uuids = mutator.uuids(); - Map containers = analyzeAdditionalPluginData(uuids, analysisContainer); - - List order = new ArrayList<>(containers.keySet()); - order.sort(new PluginDataNameComparator()); - - StringBuilder nav = new StringBuilder(); - StringBuilder generalTab = new StringBuilder(); - StringBuilder otherTabs = new StringBuilder(); - - generalTab.append("
    "); - - boolean displayGeneralTab = false; - - for (PluginData pluginData : order) { - AnalysisContainer container = containers.get(pluginData); - - switch (pluginData.getSize()) { - case TAB: - appendNewTab(pluginData, container, nav, otherTabs); - break; - case WHOLE: - if (!container.hasOnlyValues()) { - appendWhole(pluginData, container, generalTab); - displayGeneralTab = true; - } - break; - case TWO_THIRDS: - if (!container.hasOnlyValues()) { - appendTwoThirds(pluginData, container, generalTab); - displayGeneralTab = true; - } - break; - case THIRD: - default: - appendThird(pluginData, container, generalTab); - displayGeneralTab = true; - break; - } - } - - generalTab.append("
    "); - - String playerListTab = "
    " + - "
    " + - "
    " + - "
    " + - "

    Plugin Data

    " + - "
    " + - tables.pluginPlayersTable(containers, mutator.all()).parseHtml() + - "
    " + - "
    "; - - return new String[]{ - (displayGeneralTab ? "
  • General (Legacy)
  • " : "") - + "
  • Player Data (Legacy)
  • " + nav.toString(), - (displayGeneralTab ? generalTab.toString() : "") + playerListTab + otherTabs.toString() - }; - } -} diff --git a/Plan/common/src/test/java/com/djrapitops/plan/utilities/html/tables/PlayersTableTest.java b/Plan/common/src/test/java/com/djrapitops/plan/utilities/html/tables/PlayersTableTest.java index 35b59b2d4..21a60bb8b 100644 --- a/Plan/common/src/test/java/com/djrapitops/plan/utilities/html/tables/PlayersTableTest.java +++ b/Plan/common/src/test/java/com/djrapitops/plan/utilities/html/tables/PlayersTableTest.java @@ -17,7 +17,6 @@ package com.djrapitops.plan.utilities.html.tables; import com.djrapitops.plan.api.CommonAPI; -import com.djrapitops.plan.data.plugin.HookHandler; import com.djrapitops.plan.data.store.containers.PlayerContainer; import com.djrapitops.plan.data.store.keys.PlayerKeys; import com.djrapitops.plan.system.database.DBSystem; @@ -51,7 +50,6 @@ class PlayersTableTest { new CommonAPI( Mockito.mock(DBSystem.class), Mockito.mock(UUIDUtility.class), - Mockito.mock(HookHandler.class), new TestPluginLogger(), new ConsoleErrorLogger(new TestPluginLogger()) );