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 91d335442..4108fe139 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 @@ -27,10 +27,7 @@ import com.djrapitops.plan.utilities.html.graphs.stack.StackGraph; import com.djrapitops.plan.utilities.html.structure.AnalysisPluginsTabContentCreator; import com.djrapitops.plan.utilities.html.structure.RecentLoginList; import com.djrapitops.plan.utilities.html.structure.SessionAccordion; -import com.djrapitops.plan.utilities.html.tables.CommandUseTable; -import com.djrapitops.plan.utilities.html.tables.PingTable; -import com.djrapitops.plan.utilities.html.tables.PlayersTable; -import com.djrapitops.plan.utilities.html.tables.ServerSessionTable; +import com.djrapitops.plan.utilities.html.tables.HtmlTables; import com.djrapitops.plugin.api.TimeAmount; import java.util.*; @@ -55,6 +52,7 @@ public class AnalysisContainer extends DataContainer { private Database database; private ServerProperties serverProperties; private Graphs graphs; + private HtmlTables tables; private Formatter yearFormatter; private Formatter secondLongFormatter; @@ -160,10 +158,10 @@ public class AnalysisContainer extends DataContainer { ); putSupplier(AnalysisKeys.OPERATORS, () -> serverContainer.getValue(ServerKeys.OPERATORS).map(List::size).orElse(0)); putSupplier(AnalysisKeys.PLAYERS_TABLE, () -> - PlayersTable.forServerPage(getUnsafe(AnalysisKeys.PLAYERS_MUTATOR).all()).parseHtml() + tables.playerTableForServerPage(getUnsafe(AnalysisKeys.PLAYERS_MUTATOR).all()).parseHtml() ); putSupplier(AnalysisKeys.PING_TABLE, () -> - new PingTable( + tables.pingTable( getUnsafe(AnalysisKeys.PLAYERS_MUTATOR) .getPingPerCountry(serverContainer.getUnsafe(ServerKeys.SERVER_UUID)) ).parseHtml() @@ -283,7 +281,7 @@ public class AnalysisContainer extends DataContainer { serverContainer.getValue(ServerKeys.PLAYERS).orElse(new ArrayList<>()) ).toHtml() ); - putSupplier(AnalysisKeys.SESSION_TABLE, () -> new ServerSessionTable( + putSupplier(AnalysisKeys.SESSION_TABLE, () -> tables.serverSessionTable( getUnsafe(AnalysisKeys.PLAYER_NAMES), getUnsafe(AnalysisKeys.SESSIONS_MUTATOR).all()).parseHtml() ); @@ -422,7 +420,7 @@ public class AnalysisContainer extends DataContainer { } private void addCommandSuppliers() { - putSupplier(AnalysisKeys.COMMAND_USAGE_TABLE, () -> new CommandUseTable(serverContainer).parseHtml()); + putSupplier(AnalysisKeys.COMMAND_USAGE_TABLE, () -> tables.commandUseTable(serverContainer).parseHtml()); putSupplier(AnalysisKeys.COMMAND_COUNT_UNIQUE, () -> serverContainer.getValue(ServerKeys.COMMAND_USAGE).map(Map::size).orElse(0)); putSupplier(AnalysisKeys.COMMAND_COUNT, () -> CommandUseMutator.forContainer(serverContainer).commandUsageCount()); } diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/comparators/MapComparator.java b/Plan/src/main/java/com/djrapitops/plan/utilities/comparators/MapComparator.java deleted file mode 100644 index b537e44ce..000000000 --- a/Plan/src/main/java/com/djrapitops/plan/utilities/comparators/MapComparator.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.djrapitops.plan.utilities.comparators; - -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; - -/** - * @author Rsl1122 - */ -public class MapComparator { - - /** - * Constructor used to hide the public constructor - */ - private MapComparator() { - throw new IllegalStateException("Utility class"); - } - - /** - * Sorts a Map of String, Integer by the Values of the Map. - * - * @param map Map to sort - * @return List with String Array, where first value is the value and second - * is the key. - */ - public static List sortByValue(Map map) { - List sortedList = new ArrayList<>(); - map.keySet().forEach(key -> sortedList.add(new String[]{String.valueOf(map.get(key)), key})); - sortedList.sort(Comparator.comparingInt(strings -> Integer.parseInt(strings[0]))); - return sortedList; - } - -} diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/html/pages/InspectPage.java b/Plan/src/main/java/com/djrapitops/plan/utilities/html/pages/InspectPage.java index ab92f5141..7790c1fcc 100644 --- a/Plan/src/main/java/com/djrapitops/plan/utilities/html/pages/InspectPage.java +++ b/Plan/src/main/java/com/djrapitops/plan/utilities/html/pages/InspectPage.java @@ -29,7 +29,7 @@ import com.djrapitops.plan.utilities.html.graphs.calendar.PlayerCalendar; import com.djrapitops.plan.utilities.html.graphs.pie.WorldPie; import com.djrapitops.plan.utilities.html.structure.ServerAccordion; import com.djrapitops.plan.utilities.html.structure.SessionAccordion; -import com.djrapitops.plan.utilities.html.tables.*; +import com.djrapitops.plan.utilities.html.tables.HtmlTables; import com.djrapitops.plugin.api.TimeAmount; import com.djrapitops.plugin.benchmarking.Timings; @@ -48,6 +48,7 @@ public class InspectPage implements Page { private final PlanConfig config; private final Graphs graphs; + private final HtmlTables tables; private final ServerInfo serverInfo; private final Timings timings; @@ -60,13 +61,16 @@ public class InspectPage implements Page { PlayerContainer player, Map serverNames, PlanConfig config, Graphs graphs, - Formatters formatters, ServerInfo serverInfo, + HtmlTables tables, + Formatters formatters, + ServerInfo serverInfo, Timings timings ) { this.player = player; this.serverNames = serverNames; this.config = config; this.graphs = graphs; + this.tables = tables; this.serverInfo = serverInfo; this.timings = timings; @@ -134,10 +138,10 @@ public class InspectPage implements Page { String favoriteServer = serverNames.getOrDefault(perServerMutator.favoriteServer(), "Unknown"); replacer.put("favoriteServer", favoriteServer); - replacer.put("tableBodyNicknames", new NicknameTable( - player.getValue(PlayerKeys.NICKNAMES).orElse(new ArrayList<>()), serverNames) - .parseBody()); - replacer.put("tableBodyIPs", new GeoInfoTable(player.getValue(PlayerKeys.GEO_INFO).orElse(new ArrayList<>())).parseBody()); + replacer.put("tableBodyNicknames", + tables.nicknameTable(player.getValue(PlayerKeys.NICKNAMES).orElse(new ArrayList<>()), serverNames).parseBody() + ); + replacer.put("tableBodyIPs", tables.geoInfoTable(player.getValue(PlayerKeys.GEO_INFO).orElse(new ArrayList<>())).parseBody()); PingMutator pingMutator = PingMutator.forContainer(player); double averagePing = pingMutator.average(); @@ -157,7 +161,7 @@ public class InspectPage implements Page { replacer.put("accordionSessions", "
" + "

No Sessions

" + "
"); } else { if (config.isTrue(Settings.DISPLAY_SESSIONS_AS_TABLE)) { - replacer.put("accordionSessions", new PlayerSessionTable(playerName, allSessions).parseHtml()); + replacer.put("accordionSessions", tables.playerSessionTable(playerName, allSessions).parseHtml()); } else { SessionAccordion sessionAccordion = SessionAccordion.forPlayer(allSessions, () -> serverNames); replacer.put("accordionSessions", sessionAccordion.toHtml()); @@ -285,8 +289,8 @@ public class InspectPage implements Page { } private void pvpAndPve(PlaceholderReplacer replacer, SessionsMutator sessionsMutator, SessionsMutator weekSessionsMutator, SessionsMutator monthSessionsMutator) { - String playerKillsTable = new KillsTable(sessionsMutator.toPlayerKillList()).parseHtml(); - String playerDeathTable = new DeathsTable(sessionsMutator.toPlayerDeathList()).parseHtml(); + String playerKillsTable = tables.killsTable(sessionsMutator.toPlayerKillList(), "red").parseHtml(); + String playerDeathTable = tables.deathsTable(sessionsMutator.toPlayerDeathList()).parseHtml(); PvpInfoMutator pvpInfoMutator = PvpInfoMutator.forMutator(sessionsMutator); PvpInfoMutator pvpInfoMutatorMonth = PvpInfoMutator.forMutator(monthSessionsMutator); 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 b58b2f0bb..d3ec854be 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 @@ -9,6 +9,7 @@ import com.djrapitops.plan.system.info.server.ServerInfo; import com.djrapitops.plan.system.settings.config.PlanConfig; import com.djrapitops.plan.utilities.formatting.Formatters; import com.djrapitops.plan.utilities.html.graphs.Graphs; +import com.djrapitops.plan.utilities.html.tables.HtmlTables; import com.djrapitops.plugin.benchmarking.Timings; import com.djrapitops.plugin.logging.debug.DebugLogger; import com.djrapitops.plugin.logging.error.ErrorHandler; @@ -34,6 +35,7 @@ public class PageFactory { private final Lazy serverInfo; private final Lazy connectionSystem; private final Lazy graphs; + private final Lazy tables; private final Lazy formatters; private final Lazy debugLogger; private final Lazy timings; @@ -47,6 +49,7 @@ public class PageFactory { Lazy serverInfo, Lazy connectionSystem, Lazy graphs, + Lazy tables, Lazy formatters, Lazy debugLogger, Lazy timings, @@ -58,6 +61,7 @@ public class PageFactory { this.serverInfo = serverInfo; this.connectionSystem = connectionSystem; this.graphs = graphs; + this.tables = tables; this.formatters = formatters; this.debugLogger = debugLogger; this.timings = timings; @@ -73,11 +77,12 @@ public class PageFactory { } public PlayersPage playersPage() { - return new PlayersPage(version, config.get(), database.get(), serverInfo.get(), timings.get()); + return new PlayersPage(version, config.get(), database.get(), serverInfo.get(), tables.get(), timings.get()); } public AnalysisPage analysisPage(UUID serverUUID) { - return new AnalysisPage(new AnalysisContainer(database.get().fetch().getServerContainer(serverUUID)), decimalFormatter); + AnalysisContainer analysisContainer = new AnalysisContainer(database.get().fetch().getServerContainer(serverUUID)); + return new AnalysisPage(analysisContainer, formatters.get().decimals()); } public InspectPage inspectPage(UUID uuid) { @@ -85,7 +90,7 @@ public class PageFactory { Map serverNames = database.get().fetch().getServerNames(); return new InspectPage( player, serverNames, - config.get(), graphs.get(), formatters.get(), serverInfo.get(), timings.get() + config.get(), graphs.get(), tables.get(), formatters.get(), serverInfo.get(), timings.get() ); } diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/html/pages/PlayersPage.java b/Plan/src/main/java/com/djrapitops/plan/utilities/html/pages/PlayersPage.java index e664fb851..72656775a 100644 --- a/Plan/src/main/java/com/djrapitops/plan/utilities/html/pages/PlayersPage.java +++ b/Plan/src/main/java/com/djrapitops/plan/utilities/html/pages/PlayersPage.java @@ -2,13 +2,13 @@ package com.djrapitops.plan.utilities.html.pages; import com.djrapitops.plan.api.exceptions.ParseException; import com.djrapitops.plan.data.store.containers.PlayerContainer; -import com.djrapitops.plan.utilities.formatting.PlaceholderReplacer; import com.djrapitops.plan.system.database.databases.Database; import com.djrapitops.plan.system.info.server.ServerInfo; import com.djrapitops.plan.system.settings.Settings; import com.djrapitops.plan.system.settings.config.PlanConfig; import com.djrapitops.plan.utilities.file.FileUtil; -import com.djrapitops.plan.utilities.html.tables.PlayersTable; +import com.djrapitops.plan.utilities.formatting.PlaceholderReplacer; +import com.djrapitops.plan.utilities.html.tables.HtmlTables; import com.djrapitops.plugin.api.Check; import com.djrapitops.plugin.benchmarking.Timings; @@ -26,6 +26,8 @@ public class PlayersPage implements Page { private final Database database; private final ServerInfo serverInfo; + private final HtmlTables tables; + private final Timings timings; PlayersPage( @@ -33,12 +35,14 @@ public class PlayersPage implements Page { PlanConfig config, Database database, ServerInfo serverInfo, + HtmlTables tables, Timings timings ) { this.version = version; this.config = config; this.database = database; this.serverInfo = serverInfo; + this.tables = tables; this.timings = timings; } @@ -56,7 +60,7 @@ public class PlayersPage implements Page { timings.start("Players page players table parsing"); List playerContainers = database.fetch().getAllPlayerContainers(); - placeholderReplacer.put("playersTable", PlayersTable.forPlayersPage(playerContainers).parseHtml()); + placeholderReplacer.put("playersTable", tables.playerTableForPlayersPage(playerContainers).parseHtml()); timings.end("Pages", "Players page players table parsing"); return placeholderReplacer.apply(FileUtil.getStringFromResource("web/players.html")); 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 c8094884a..328b16564 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 @@ -11,7 +11,7 @@ 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.utilities.comparators.PluginDataNameComparator; -import com.djrapitops.plan.utilities.html.tables.PluginPlayersTable; +import com.djrapitops.plan.utilities.html.tables.HtmlTables; import com.djrapitops.plugin.StaticHolder; import com.djrapitops.plugin.api.Benchmark; import com.djrapitops.plugin.api.utility.log.Log; @@ -76,13 +76,15 @@ public class AnalysisPluginsTabContentCreator { generalTab.append(""); + HtmlTables tables = null; // TODO Use HtmlTables + String playerListTab = "
" + "
" + "
" + "
" + "

Plugin Data

" + "
" + - new PluginPlayersTable(containers, mutator.all()).parseHtml() + + tables.pluginPlayersTable(containers, mutator.all()).parseHtml() + "
" + "
"; diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/html/structure/SessionAccordion.java b/Plan/src/main/java/com/djrapitops/plan/utilities/html/structure/SessionAccordion.java index 1e042d137..141e61e70 100644 --- a/Plan/src/main/java/com/djrapitops/plan/utilities/html/structure/SessionAccordion.java +++ b/Plan/src/main/java/com/djrapitops/plan/utilities/html/structure/SessionAccordion.java @@ -1,6 +1,7 @@ package com.djrapitops.plan.utilities.html.structure; import com.djrapitops.plan.api.PlanAPI; +import com.djrapitops.plan.data.container.PlayerKill; import com.djrapitops.plan.data.container.Session; import com.djrapitops.plan.data.store.keys.SessionKeys; import com.djrapitops.plan.data.store.objects.DateHolder; @@ -14,7 +15,7 @@ import com.djrapitops.plan.utilities.html.HtmlStructure; import com.djrapitops.plan.utilities.html.graphs.Graphs; import com.djrapitops.plan.utilities.html.graphs.pie.WorldPie; import com.djrapitops.plan.utilities.html.icon.Icons; -import com.djrapitops.plan.utilities.html.tables.KillsTable; +import com.djrapitops.plan.utilities.html.tables.HtmlTables; import java.util.*; import java.util.function.Supplier; @@ -39,6 +40,7 @@ public class SessionAccordion extends AbstractAccordion { // TODO private Theme theme; private Graphs graphs; + private HtmlTables tables; private Formatter yearFormatter; private Formatter timeAmountFormatter; @@ -142,7 +144,8 @@ public class SessionAccordion extends AbstractAccordion { .append(worldHtmlID).append("gmseries") .append(");"); - String leftBottom = new KillsTable(session.getValue(SessionKeys.PLAYER_KILLS).orElse(new ArrayList<>()), null).parseHtml(); + List kills = session.getValue(SessionKeys.PLAYER_KILLS).orElse(new ArrayList<>()); + String leftBottom = tables.killsTable(kills, null).parseHtml(); String link = PlanAPI.getInstance().getPlayerInspectPageLink(playerName); String rightBottom = "