diff --git a/Plan/common/src/main/java/com/djrapitops/plan/data/store/keys/AnalysisKeys.java b/Plan/common/src/main/java/com/djrapitops/plan/data/store/keys/AnalysisKeys.java index f759dca57..e275b2fa9 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/data/store/keys/AnalysisKeys.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/data/store/keys/AnalysisKeys.java @@ -171,8 +171,6 @@ 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/common/src/main/java/com/djrapitops/plan/system/HtmlUtilities.java b/Plan/common/src/main/java/com/djrapitops/plan/system/HtmlUtilities.java new file mode 100644 index 000000000..dc4cac8a2 --- /dev/null +++ b/Plan/common/src/main/java/com/djrapitops/plan/system/HtmlUtilities.java @@ -0,0 +1,72 @@ +/* + * 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 LGNU 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 + * LGNU 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; + +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; + +import javax.inject.Inject; +import javax.inject.Singleton; + +@Singleton +public class HtmlUtilities { + + private final Lazy formatters; + 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 + ) { + this.formatters = formatters; + this.htmlTables = htmlTables; + this.graphs = graphs; + this.accordions = accordions; + this.analysisPluginsTabContentCreator = analysisPluginsTabContentCreator; + } + + public Formatters getFormatters() { + return formatters.get(); + } + + public HtmlTables getHtmlTables() { + return htmlTables.get(); + } + + public Graphs getGraphs() { + return graphs.get(); + } + + public Accordions getAccordions() { + 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 abf0ad2c4..befd550b9 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 @@ -65,6 +65,7 @@ public class PlanSystem implements SubSystem { private final ImportSystem importSystem; private final ExportSystem exportSystem; + private final HtmlUtilities htmlUtilities; private final HookHandler hookHandler; private final PlanAPI planAPI; private final ErrorHandler errorHandler; @@ -85,6 +86,7 @@ public class PlanSystem implements SubSystem { Processing processing, ImportSystem importSystem, ExportSystem exportSystem, + HtmlUtilities htmlUtilities, HookHandler hookHandler, PlanAPI planAPI, ErrorHandler errorHandler @@ -103,6 +105,7 @@ public class PlanSystem implements SubSystem { this.processing = processing; this.importSystem = importSystem; this.exportSystem = exportSystem; + this.htmlUtilities = htmlUtilities; this.hookHandler = hookHandler; this.planAPI = planAPI; this.errorHandler = errorHandler; @@ -231,4 +234,8 @@ public class PlanSystem implements SubSystem { public LocaleSystem getLocaleSystem() { return localeSystem; } + + public HtmlUtilities getHtmlUtilities() { + return htmlUtilities; + } } \ No newline at end of file diff --git a/Plan/plugin/src/test/java/com/djrapitops/plan/system/database/databases/CommonDBTest.java b/Plan/plugin/src/test/java/com/djrapitops/plan/system/database/databases/CommonDBTest.java index 40960b7ee..9547183c9 100644 --- a/Plan/plugin/src/test/java/com/djrapitops/plan/system/database/databases/CommonDBTest.java +++ b/Plan/plugin/src/test/java/com/djrapitops/plan/system/database/databases/CommonDBTest.java @@ -61,7 +61,7 @@ import static org.junit.Assert.*; /** * Contains all common Database Tests for all Database Types * - * @author Fuzzlemann + * @author Rsl1122 (Refactored into this class by Fuzzlemann) * @since 4.5.1 */ public abstract class CommonDBTest { @@ -109,8 +109,8 @@ public abstract class CommonDBTest { System.out.println("\n-- Clearing Test Database --"); db.remove().everything(); ServerTable serverTable = db.getServerTable(); - serverTable.saveCurrentServerInfo(new Server(-1, TestConstants.SERVER_UUID, "ServerName", "", 20)); - assertEquals(db.getServerUUIDSupplier().get(), TestConstants.SERVER_UUID); + serverTable.saveCurrentServerInfo(new Server(-1, serverUUID, "ServerName", "", 20)); + assertEquals(serverUUID, db.getServerUUIDSupplier().get()); System.out.println("-- Clear Complete --\n"); } @@ -274,7 +274,7 @@ public abstract class CommonDBTest { saveUserOne(); NicknamesTable nickTable = db.getNicknamesTable(); - Nickname expected = new Nickname("TestNickname", System.currentTimeMillis(), TestConstants.SERVER_UUID); + Nickname expected = new Nickname("TestNickname", System.currentTimeMillis(), serverUUID); nickTable.saveUserName(playerUUID, expected); nickTable.saveUserName(playerUUID, expected); commitTest(); @@ -352,7 +352,7 @@ public abstract class CommonDBTest { saveTwoWorlds(); saveUserOne(); saveUserTwo(); - Session session = new Session(TestConstants.PLAYER_ONE_UUID, serverUUID, 12345L, "", ""); + Session session = new Session(playerUUID, serverUUID, 12345L, "", ""); session.endSession(22345L); session.setWorldTimes(createWorldTimes()); session.setPlayerKills(createKills()); @@ -369,7 +369,6 @@ public abstract class CommonDBTest { assertEquals(expectedLength, sessionsTable.getPlaytime(playerUUID)); assertEquals(0L, sessionsTable.getPlaytime(playerUUID, 30000L)); - UUID serverUUID = TestConstants.SERVER_UUID; long playtimeOfServer = sessionsTable.getPlaytimeOfServer(serverUUID); assertEquals(expectedLength, playtimeOfServer); assertEquals(0L, sessionsTable.getPlaytimeOfServer(serverUUID, 30000L)); @@ -383,7 +382,7 @@ public abstract class CommonDBTest { saveUserOne(); saveUserTwo(); - Session session = new Session(TestConstants.PLAYER_ONE_UUID, serverUUID, 12345L, "", ""); + Session session = new Session(playerUUID, serverUUID, 12345L, "", ""); session.endSession(22345L); session.setWorldTimes(createWorldTimes()); session.setPlayerKills(createKills()); @@ -547,13 +546,13 @@ public abstract class CommonDBTest { userInfoTable.registerUserInfo(playerUUID, 223456789L); saveTwoWorlds(); - Session session = new Session(TestConstants.PLAYER_ONE_UUID, serverUUID, 12345L, "", ""); + Session session = new Session(playerUUID, serverUUID, 12345L, "", ""); session.endSession(22345L); session.setWorldTimes(createWorldTimes()); session.setPlayerKills(createKills()); sessionsTable.saveSession(playerUUID, session); - nicknamesTable.saveUserName(playerUUID, new Nickname("TestNick", System.currentTimeMillis(), TestConstants.SERVER_UUID)); + nicknamesTable.saveUserName(playerUUID, new Nickname("TestNick", System.currentTimeMillis(), serverUUID)); geoInfoTable.saveGeoInfo(playerUUID, new GeoInfo("1.2.3.4", "TestLoc", 223456789L, "3")); assertTrue(usersTable.isRegistered(playerUUID)); @@ -613,13 +612,13 @@ public abstract class CommonDBTest { userInfoTable.registerUserInfo(playerUUID, 223456789L); saveTwoWorlds(database); - Session session = new Session(TestConstants.PLAYER_ONE_UUID, serverUUID, 12345L, "", ""); + Session session = new Session(playerUUID, serverUUID, 12345L, "", ""); session.endSession(22345L); session.setWorldTimes(createWorldTimes()); session.setPlayerKills(createKills()); sessionsTable.saveSession(playerUUID, session); - nicknamesTable.saveUserName(playerUUID, new Nickname("TestNick", System.currentTimeMillis(), TestConstants.SERVER_UUID)); + nicknamesTable.saveUserName(playerUUID, new Nickname("TestNick", System.currentTimeMillis(), serverUUID)); geoInfoTable.saveGeoInfo(playerUUID, new GeoInfo("1.2.3.4", "TestLoc", 223456789L, new SHA256Hash("1.2.3.4").create())); @@ -651,7 +650,7 @@ public abstract class CommonDBTest { } pingTable.insertPing(playerUUID, new Ping( - System.currentTimeMillis(), TestConstants.SERVER_UUID, + System.currentTimeMillis(), serverUUID, r.nextInt(), r.nextInt(), r.nextDouble() )); @@ -670,7 +669,7 @@ public abstract class CommonDBTest { saveUserOne(); saveUserTwo(); - Session session = new Session(TestConstants.PLAYER_ONE_UUID, serverUUID, 12345L, "", ""); + Session session = new Session(playerUUID, serverUUID, 12345L, "", ""); session.endSession(22345L); session.setWorldTimes(createWorldTimes()); session.setPlayerKills(createKills()); @@ -753,7 +752,7 @@ public abstract class CommonDBTest { WorldTimesTable worldTimesTable = db.getWorldTimesTable(); worldTimesTable.saveWorldTimes(playerUUID, 1, worldTimes); - Session session = new Session(1, playerUUID, TestConstants.SERVER_UUID, 12345L, 23456L, 0, 0, 0); + Session session = new Session(1, playerUUID, serverUUID, 12345L, 23456L, 0, 0, 0); Map sessions = new HashMap<>(); sessions.put(1, session); worldTimesTable.addWorldTimesToSessions(playerUUID, sessions); @@ -767,7 +766,7 @@ public abstract class CommonDBTest { WorldTimes worldTimes = createWorldTimes(); System.out.println(worldTimes); WorldTimesTable worldTimesTable = db.getWorldTimesTable(); - Session session = new Session(1, playerUUID, TestConstants.SERVER_UUID, 12345L, 23456L, 0, 0, 0); + Session session = new Session(1, playerUUID, serverUUID, 12345L, 23456L, 0, 0, 0); session.setWorldTimes(worldTimes); Map>> map = new HashMap<>(); @@ -790,7 +789,7 @@ public abstract class CommonDBTest { saveUserOne(); WorldTimes worldTimes = createWorldTimes(); System.out.println(worldTimes); - Session session = new Session(1, playerUUID, TestConstants.SERVER_UUID, 12345L, 23456L, 0, 0, 0); + Session session = new Session(1, playerUUID, serverUUID, 12345L, 23456L, 0, 0, 0); session.setWorldTimes(worldTimes); Map>> map = new HashMap<>(); @@ -817,7 +816,7 @@ public abstract class CommonDBTest { @Test public void testGetServerWorldTimes() { testSaveSessionsWorldTimes(); - WorldTimes worldTimesOfServer = db.getWorldTimesTable().getWorldTimesOfServer(TestConstants.SERVER_UUID); + WorldTimes worldTimesOfServer = db.getWorldTimesTable().getWorldTimesOfServer(serverUUID); assertEquals(createWorldTimes(), worldTimesOfServer); } @@ -834,7 +833,7 @@ public abstract class CommonDBTest { @Test public void testWorldTableGetWorldNamesNoException() throws NoSuchAlgorithmException { saveAllData(db); - Set worldNames = db.getWorldTable().getWorldNames(TestConstants.SERVER_UUID); + Set worldNames = db.getWorldTable().getWorldNames(serverUUID); assertEquals(new HashSet<>(worlds), worldNames); } @@ -907,7 +906,7 @@ public abstract class CommonDBTest { assertTrue(container.supports(PlayerKeys.PLAYER_KILL_COUNT)); assertFalse(container.supports(PlayerKeys.ACTIVE_SESSION)); - container.putRawData(PlayerKeys.ACTIVE_SESSION, new Session(TestConstants.PLAYER_ONE_UUID, serverUUID, System.currentTimeMillis(), "TestWorld", "SURVIVAL")); + container.putRawData(PlayerKeys.ACTIVE_SESSION, new Session(playerUUID, serverUUID, System.currentTimeMillis(), "TestWorld", "SURVIVAL")); assertTrue(container.supports(PlayerKeys.ACTIVE_SESSION)); long end = System.nanoTime(); @@ -923,7 +922,7 @@ public abstract class CommonDBTest { Collections.singletonList(new GeoInfo("1.2.3.4", "TestLoc", 223456789, "ZpT4PJ9HbaMfXfa8xSADTn5X1CHSR7nTT0ntv8hKdkw=")); OptionalAssert.equals(expectedGeoInfo, container.getValue(PlayerKeys.GEO_INFO)); - List expectedNicknames = Collections.singletonList(new Nickname("TestNick", -1, TestConstants.SERVER_UUID)); + List expectedNicknames = Collections.singletonList(new Nickname("TestNick", -1, serverUUID)); OptionalAssert.equals(expectedNicknames, container.getValue(PlayerKeys.NICKNAMES)); OptionalAssert.equals(false, container.getValue(PlayerKeys.OPERATOR)); @@ -936,7 +935,7 @@ public abstract class CommonDBTest { public void playerContainerSupportsAllPlayerKeys() throws NoSuchAlgorithmException, IllegalAccessException { saveAllData(db); - PlayerContainer playerContainer = db.fetch().getPlayerContainer(TestConstants.PLAYER_ONE_UUID); + PlayerContainer playerContainer = db.fetch().getPlayerContainer(playerUUID); // Active sessions are added after fetching playerContainer.putRawData(PlayerKeys.ACTIVE_SESSION, RandomData.randomSession()); @@ -945,6 +944,7 @@ public abstract class CommonDBTest { if (!Modifier.isPublic(field.getModifiers())) { continue; } + // the field is static and no object is needed for access. Key key = (Key) field.get(null); if (!playerContainer.supports(key)) { unsupported.add(field.getName()); @@ -958,13 +958,14 @@ public abstract class CommonDBTest { public void serverContainerSupportsAllServerKeys() throws NoSuchAlgorithmException, IllegalAccessException { saveAllData(db); - ServerContainer serverContainer = db.fetch().getServerContainer(TestConstants.SERVER_UUID); + ServerContainer serverContainer = db.fetch().getServerContainer(serverUUID); List unsupported = new ArrayList<>(); for (Field field : ServerKeys.class.getDeclaredFields()) { if (!Modifier.isPublic(field.getModifiers())) { continue; } + // the field is static and no object is needed for access. Key key = (Key) field.get(null); if (!serverContainer.supports(key)) { unsupported.add(field.getName()); @@ -975,18 +976,18 @@ public abstract class CommonDBTest { } @Test - @Ignore public void analysisContainerSupportsAllAnalysisKeys() throws IllegalAccessException, NoSuchAlgorithmException { serverContainerSupportsAllServerKeys(); - AnalysisContainer.Factory factory = null; + AnalysisContainer.Factory factory = constructAnalysisContainerFactory(); AnalysisContainer analysisContainer = factory.forServerContainer( - db.fetch().getServerContainer(TestConstants.SERVER_UUID) + db.fetch().getServerContainer(serverUUID) ); - List unsupported = new ArrayList<>(); + Collection unsupported = new ArrayList<>(); for (Field field : AnalysisKeys.class.getDeclaredFields()) { if (!Modifier.isPublic(field.getModifiers())) { continue; } + // the field is static and no object is needed for access. Key key = (Key) field.get(null); if (!analysisContainer.supports(key)) { unsupported.add(field.getName()); @@ -996,6 +997,22 @@ public abstract class CommonDBTest { assertTrue("Some keys are not supported by AnalysisContainer: AnalysisKeys." + unsupported.toString(), unsupported.isEmpty()); } + private AnalysisContainer.Factory constructAnalysisContainerFactory() { + return new AnalysisContainer.Factory( + "1.0.0", + system.getConfigSystem().getConfig(), + system.getLocaleSystem().getLocale(), + system.getConfigSystem().getTheme(), + dbSystem, + system.getServerInfo().getServerProperties(), + system.getHtmlUtilities().getFormatters(), + system.getHtmlUtilities().getGraphs(), + system.getHtmlUtilities().getHtmlTables(), + system.getHtmlUtilities().getAccordions(), + system.getHtmlUtilities().getAnalysisPluginsTabContentCreator() + ); + } + @Test public void networkContainerSupportsAllNetworkKeys() throws IllegalAccessException, NoSuchAlgorithmException { serverContainerSupportsAllServerKeys(); @@ -1040,11 +1057,11 @@ public abstract class CommonDBTest { UUID uuid = UUID.randomUUID(); String userName = RandomData.randomString(10); db.getUsersTable().registerUser(uuid, 0L, userName); - db.getUsersTable().registerUser(TestConstants.PLAYER_ONE_UUID, 1L, "Not random"); + db.getUsersTable().registerUser(playerUUID, 1L, "Not random"); String nickname = "2" + RandomData.randomString(10); - db.getNicknamesTable().saveUserName(uuid, new Nickname(nickname, System.currentTimeMillis(), TestConstants.SERVER_UUID)); - db.getNicknamesTable().saveUserName(TestConstants.PLAYER_ONE_UUID, new Nickname("No nick", System.currentTimeMillis(), TestConstants.SERVER_UUID)); + db.getNicknamesTable().saveUserName(uuid, new Nickname(nickname, System.currentTimeMillis(), serverUUID)); + db.getNicknamesTable().saveUserName(playerUUID, new Nickname("No nick", System.currentTimeMillis(), serverUUID)); String search = "2";