diff --git a/Plan/bungeecord/src/main/java/com/djrapitops/plan/system/info/server/BungeeServerInfo.java b/Plan/bungeecord/src/main/java/com/djrapitops/plan/system/info/server/BungeeServerInfo.java index d73d5cc35..7698b052d 100644 --- a/Plan/bungeecord/src/main/java/com/djrapitops/plan/system/info/server/BungeeServerInfo.java +++ b/Plan/bungeecord/src/main/java/com/djrapitops/plan/system/info/server/BungeeServerInfo.java @@ -63,9 +63,9 @@ public class BungeeServerInfo extends ServerInfo { try { Database database = dbSystem.getDatabase(); - Optional bungeeInfo = database.fetch().getBungeeInformation(); - if (bungeeInfo.isPresent()) { - server = bungeeInfo.get(); + Optional proxyInfo = database.query(ServerQueries.fetchProxyServerInformation()); + if (proxyInfo.isPresent()) { + server = proxyInfo.get(); updateServerInfo(database); } else { server = registerBungeeInfo(database); @@ -97,22 +97,13 @@ public class BungeeServerInfo extends ServerInfo { UUID serverUUID = generateNewUUID(); String accessAddress = webServer.get().getAccessAddress(); - Server bungeeCord = new Server(-1, serverUUID, "BungeeCord", accessAddress, serverProperties.getMaxPlayers()); - db.executeTransaction(new StoreServerInformationTransaction(bungeeCord)); + Server proxy = new Server(-1, serverUUID, "BungeeCord", accessAddress, serverProperties.getMaxPlayers()); + db.executeTransaction(new StoreServerInformationTransaction(proxy)); - Optional bungeeInfo = db.query(ServerQueries.fetchProxyServerInformation()); - if (bungeeInfo.isPresent()) { - return bungeeInfo.get(); + Optional proxyInfo = db.query(ServerQueries.fetchProxyServerInformation()); + if (proxyInfo.isPresent()) { + return proxyInfo.get(); } throw new EnableException("BungeeCord registration failed (DB)"); } - - private UUID generateNewUUID() { - String seed = serverProperties.getName() + - serverProperties.getIp() + - serverProperties.getPort() + - serverProperties.getVersion() + - serverProperties.getImplVersion(); - return UUID.nameUUIDFromBytes(seed.getBytes()); - } } diff --git a/Plan/common/src/main/java/com/djrapitops/plan/command/commands/AnalyzeCommand.java b/Plan/common/src/main/java/com/djrapitops/plan/command/commands/AnalyzeCommand.java index 03c58b8ea..e13716cdb 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/command/commands/AnalyzeCommand.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/command/commands/AnalyzeCommand.java @@ -134,7 +134,7 @@ public class AnalyzeCommand extends CommandNode { private Optional getServer(String[] args) { if (args.length >= 1 && connectionSystem.isServerAvailable()) { String serverIdentifier = getGivenIdentifier(args); - return dbSystem.getDatabase().query(ServerQueries.fetchMatchingServerIdentifier(serverIdentifier)) + return dbSystem.getDatabase().query(ServerQueries.fetchServerMatchingIdentifier(serverIdentifier)) .filter(server -> !server.isProxy()); } return Optional.empty(); diff --git a/Plan/common/src/main/java/com/djrapitops/plan/command/commands/manage/ManageUninstalledCommand.java b/Plan/common/src/main/java/com/djrapitops/plan/command/commands/manage/ManageUninstalledCommand.java index 4644b60e6..888604b32 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/command/commands/manage/ManageUninstalledCommand.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/command/commands/manage/ManageUninstalledCommand.java @@ -103,7 +103,7 @@ public class ManageUninstalledCommand extends CommandNode { private Optional getServer(String[] args) { if (args.length >= 1) { String serverIdentifier = getGivenIdentifier(args); - return dbSystem.getDatabase().query(ServerQueries.fetchMatchingServerIdentifier(serverIdentifier)) + return dbSystem.getDatabase().query(ServerQueries.fetchServerMatchingIdentifier(serverIdentifier)) .filter(Server::isNotProxy); } return Optional.empty(); diff --git a/Plan/common/src/main/java/com/djrapitops/plan/db/access/queries/containers/ServerContainerQuery.java b/Plan/common/src/main/java/com/djrapitops/plan/db/access/queries/containers/ServerContainerQuery.java index 4c8d8d691..cd7d4d4ae 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/db/access/queries/containers/ServerContainerQuery.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/db/access/queries/containers/ServerContainerQuery.java @@ -57,7 +57,7 @@ public class ServerContainerQuery implements Query { public ServerContainer executeQuery(SQLDB db) { ServerContainer container = new ServerContainer(); - Optional serverInfo = db.query(ServerQueries.fetchMatchingServerIdentifier(serverUUID)); + Optional serverInfo = db.query(ServerQueries.fetchServerMatchingIdentifier(serverUUID)); if (!serverInfo.isPresent()) { return container; } diff --git a/Plan/common/src/main/java/com/djrapitops/plan/db/access/queries/objects/ServerQueries.java b/Plan/common/src/main/java/com/djrapitops/plan/db/access/queries/objects/ServerQueries.java index 7dab6b140..37b0b394b 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/db/access/queries/objects/ServerQueries.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/db/access/queries/objects/ServerQueries.java @@ -73,11 +73,11 @@ public class ServerQueries { return db -> db.query(fetchPlanServerInformation()).values(); } - public static Query> fetchMatchingServerIdentifier(UUID serverUUID) { - return fetchMatchingServerIdentifier(serverUUID.toString()); + public static Query> fetchServerMatchingIdentifier(UUID serverUUID) { + return fetchServerMatchingIdentifier(serverUUID.toString()); } - public static Query> fetchMatchingServerIdentifier(String identifier) { + public static Query> fetchServerMatchingIdentifier(String identifier) { String sql = "SELECT * FROM " + ServerTable.TABLE_NAME + " WHERE (LOWER(" + ServerTable.SERVER_UUID + ") LIKE LOWER(?)" + " OR LOWER(" + ServerTable.NAME + ") LIKE LOWER(?)" + @@ -110,6 +110,6 @@ public class ServerQueries { } public static Query> fetchProxyServerInformation() { - return db -> db.query(fetchMatchingServerIdentifier("BungeeCord")); + return db -> db.query(fetchServerMatchingIdentifier("BungeeCord")); } } \ No newline at end of file diff --git a/Plan/common/src/main/java/com/djrapitops/plan/db/patches/Version10Patch.java b/Plan/common/src/main/java/com/djrapitops/plan/db/patches/Version10Patch.java index d2447e847..ecbda852d 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/db/patches/Version10Patch.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/db/patches/Version10Patch.java @@ -17,7 +17,9 @@ package com.djrapitops.plan.db.patches; import com.djrapitops.plan.db.SQLDB; +import com.djrapitops.plan.db.access.queries.objects.ServerQueries; import com.djrapitops.plan.db.sql.tables.*; +import com.djrapitops.plan.system.info.server.Server; import java.util.Optional; @@ -38,11 +40,10 @@ public class Version10Patch extends Patch { @Override protected void applyPatch() { - Optional fetchedServerID = db.getServerTable().getServerID(getServerUUID()); - if (!fetchedServerID.isPresent()) { - throw new IllegalStateException("Server UUID was not registered, try rebooting the plugin."); - } - serverID = fetchedServerID.get(); + Optional server = db.query(ServerQueries.fetchServerMatchingIdentifier(getServerUUID())); + serverID = server.map(Server::getId) + .orElseThrow(() -> new IllegalStateException("Server UUID was not registered, try rebooting the plugin.")); + alterTablesToV10(); } diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/sql/operation/SQLFetchOps.java b/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/sql/operation/SQLFetchOps.java index fee1027b9..471768b62 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/sql/operation/SQLFetchOps.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/sql/operation/SQLFetchOps.java @@ -79,7 +79,7 @@ public class SQLFetchOps extends SQLOps implements FetchOperations { @Override public Optional getServerUUID(String serverName) { - return db.query(ServerQueries.fetchMatchingServerIdentifier(serverName)) + return db.query(ServerQueries.fetchServerMatchingIdentifier(serverName)) .map(Server::getUuid); } @@ -130,7 +130,7 @@ public class SQLFetchOps extends SQLOps implements FetchOperations { @Override public Optional getServerName(UUID serverUUID) { - return db.query(ServerQueries.fetchMatchingServerIdentifier(serverUUID)).map(Server::getName); + return db.query(ServerQueries.fetchServerMatchingIdentifier(serverUUID)).map(Server::getName); } @Override @@ -146,7 +146,7 @@ public class SQLFetchOps extends SQLOps implements FetchOperations { @Override public Optional getServerID(UUID serverUUID) { - return serverTable.getServerID(serverUUID); + return db.query(ServerQueries.fetchServerMatchingIdentifier(serverUUID)).map(Server::getId); } @Override diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/info/connection/ConnectionIn.java b/Plan/common/src/main/java/com/djrapitops/plan/system/info/connection/ConnectionIn.java index fc9b55f40..99ede3f2e 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/system/info/connection/ConnectionIn.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/system/info/connection/ConnectionIn.java @@ -61,7 +61,7 @@ public class ConnectionIn { UUID serverUUID = getServerUUID(); try { - if (!database.query(ServerQueries.fetchMatchingServerIdentifier(serverUUID)).isPresent()) { + if (!database.query(ServerQueries.fetchServerMatchingIdentifier(serverUUID)).isPresent()) { return; } } catch (DBOpException e) { diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/info/server/Server.java b/Plan/common/src/main/java/com/djrapitops/plan/system/info/server/Server.java index 3a2039c73..61d32803e 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/system/info/server/Server.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/system/info/server/Server.java @@ -55,6 +55,10 @@ public class Server implements Comparable { return name; } + public void setName(String name) { + this.name = name; + } + public String getWebAddress() { return webAddress; } @@ -105,4 +109,8 @@ public class Server implements Comparable { public boolean isNotProxy() { return !isProxy(); } + + public void setMaxPlayers(int maxPlayers) { + this.maxPlayers = maxPlayers; + } } diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/info/server/ServerInfo.java b/Plan/common/src/main/java/com/djrapitops/plan/system/info/server/ServerInfo.java index 1a92b3f23..5e8c1113e 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/system/info/server/ServerInfo.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/system/info/server/ServerInfo.java @@ -63,4 +63,8 @@ public abstract class ServerInfo implements SubSystem { public void disable() { } + + protected UUID generateNewUUID() { + return UUID.randomUUID(); + } } diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/info/server/ServerServerInfo.java b/Plan/common/src/main/java/com/djrapitops/plan/system/info/server/ServerServerInfo.java index 2a092f587..3dff5b727 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/system/info/server/ServerServerInfo.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/system/info/server/ServerServerInfo.java @@ -19,6 +19,7 @@ package com.djrapitops.plan.system.info.server; import com.djrapitops.plan.api.exceptions.EnableException; import com.djrapitops.plan.api.exceptions.database.DBOpException; import com.djrapitops.plan.db.Database; +import com.djrapitops.plan.db.access.queries.objects.ServerQueries; import com.djrapitops.plan.db.access.transactions.StoreServerInformationTransaction; import com.djrapitops.plan.system.database.DBSystem; import com.djrapitops.plan.system.info.server.properties.ServerProperties; @@ -88,18 +89,24 @@ public class ServerServerInfo extends ServerInfo { private Server updateDbInfo(UUID serverUUID) throws IOException { Database db = dbSystem.getDatabase(); - Optional serverID = db.fetch().getServerID(serverUUID); - if (!serverID.isPresent()) { + + Optional foundServer = db.query(ServerQueries.fetchServerMatchingIdentifier(serverUUID)); + if (!foundServer.isPresent()) { return registerServer(serverUUID); } - String name = config.get(PluginSettings.SERVER_NAME).replaceAll("[^a-zA-Z0-9_\\s]", "_"); - String webAddress = webServer.get().getAccessAddress(); - if ("plan".equalsIgnoreCase(name)) { - name = "Server " + serverID.get(); - } - int maxPlayers = serverProperties.getMaxPlayers(); + Server server = foundServer.get(); - Server server = new Server(serverID.get(), serverUUID, name, webAddress, maxPlayers); + // Update information + String name = config.get(PluginSettings.SERVER_NAME).replaceAll("[^a-zA-Z0-9_\\s]", "_"); + server.setName("plan".equalsIgnoreCase(name) ? "Server " + server.getId() : name); + + String webAddress = webServer.get().getAccessAddress(); + server.setWebAddress(webAddress); + + int maxPlayers = serverProperties.getMaxPlayers(); + server.setMaxPlayers(maxPlayers); + + // Save db.executeTransaction(new StoreServerInformationTransaction(server)); return server; } @@ -109,30 +116,23 @@ public class ServerServerInfo extends ServerInfo { } private Server registerServer(UUID serverUUID) throws IOException { + Database db = dbSystem.getDatabase(); + + // Create the server object String webAddress = webServer.get().getAccessAddress(); String name = config.get(PluginSettings.SERVER_NAME).replaceAll("[^a-zA-Z0-9_\\s]", "_"); int maxPlayers = serverProperties.getMaxPlayers(); - Server server = new Server(-1, serverUUID, name, webAddress, maxPlayers); - Database db = dbSystem.getDatabase(); + // Save db.executeTransaction(new StoreServerInformationTransaction(server)); - Optional serverID = db.fetch().getServerID(serverUUID); - int id = serverID.orElseThrow(() -> new IllegalStateException("Failed to Register Server (ID not found)")); - server.setId(id); + // Load from database + server = db.query(ServerQueries.fetchServerMatchingIdentifier(serverUUID)) + .orElseThrow(() -> new IllegalStateException("Failed to Register Server (ID not found)")); + // Store the UUID in ServerInfoFile serverInfoFile.saveServerUUID(serverUUID); return server; } - - private UUID generateNewUUID() { - String seed = serverProperties.getServerId() + - serverProperties.getName() + - serverProperties.getIp() + - serverProperties.getPort() + - serverProperties.getVersion() + - serverProperties.getImplVersion(); - return UUID.nameUUIDFromBytes(seed.getBytes()); - } } \ No newline at end of file diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/webserver/pages/ServerPageHandler.java b/Plan/common/src/main/java/com/djrapitops/plan/system/webserver/pages/ServerPageHandler.java index aa25a11ae..827c2b642 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/system/webserver/pages/ServerPageHandler.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/system/webserver/pages/ServerPageHandler.java @@ -112,7 +112,7 @@ public class ServerPageHandler implements PageHandler { try { String serverName = target.get(0); Optional serverUUIDOptional = dbSystem.getDatabase() - .query(ServerQueries.fetchMatchingServerIdentifier(serverName)) + .query(ServerQueries.fetchServerMatchingIdentifier(serverName)) .map(Server::getUuid); if (serverUUIDOptional.isPresent()) { serverUUID = serverUUIDOptional.get(); diff --git a/Plan/common/src/test/java/com/djrapitops/plan/db/SQLiteTest.java b/Plan/common/src/test/java/com/djrapitops/plan/db/SQLiteTest.java index a7c6e567d..36c5de4dd 100644 --- a/Plan/common/src/test/java/com/djrapitops/plan/db/SQLiteTest.java +++ b/Plan/common/src/test/java/com/djrapitops/plan/db/SQLiteTest.java @@ -28,6 +28,7 @@ import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.junit.MockitoJUnitRunner; +import utilities.OptionalAssert; import java.util.HashMap; import java.util.Map; @@ -76,9 +77,8 @@ public class SQLiteTest extends CommonDBTest { assertTrue(bungeeInfo.isPresent()); assertEquals(bungeeCord, bungeeInfo.get()); - Optional serverID = serverTable.getServerID(bungeeUUID); - assertTrue(serverID.isPresent()); - assertEquals(2, (int) serverID.get()); + Optional found = db.query(ServerQueries.fetchServerMatchingIdentifier(bungeeUUID)); + OptionalAssert.equals(2, found.map(Server::getId)); } @Test diff --git a/Plan/velocity/src/main/java/com/djrapitops/plan/system/info/server/VelocityServerInfo.java b/Plan/velocity/src/main/java/com/djrapitops/plan/system/info/server/VelocityServerInfo.java index 17c00e703..68101d373 100644 --- a/Plan/velocity/src/main/java/com/djrapitops/plan/system/info/server/VelocityServerInfo.java +++ b/Plan/velocity/src/main/java/com/djrapitops/plan/system/info/server/VelocityServerInfo.java @@ -63,9 +63,9 @@ public class VelocityServerInfo extends ServerInfo { try { Database database = dbSystem.getDatabase(); - Optional bungeeInfo = database.fetch().getBungeeInformation(); - if (bungeeInfo.isPresent()) { - server = bungeeInfo.get(); + Optional proxyInfo = database.query(ServerQueries.fetchProxyServerInformation()); + if (proxyInfo.isPresent()) { + server = proxyInfo.get(); updateServerInfo(database); } else { server = registerVelocityInfo(database); @@ -98,22 +98,13 @@ public class VelocityServerInfo extends ServerInfo { String accessAddress = webServer.get().getAccessAddress(); // TODO Rework to allow Velocity as name. - Server bungeeCord = new Server(-1, serverUUID, "BungeeCord", accessAddress, serverProperties.getMaxPlayers()); - db.executeTransaction(new StoreServerInformationTransaction(bungeeCord)); + Server proxy = new Server(-1, serverUUID, "BungeeCord", accessAddress, serverProperties.getMaxPlayers()); + db.executeTransaction(new StoreServerInformationTransaction(proxy)); - Optional bungeeInfo = db.query(ServerQueries.fetchProxyServerInformation()); - if (bungeeInfo.isPresent()) { - return bungeeInfo.get(); + Optional proxyInfo = db.query(ServerQueries.fetchProxyServerInformation()); + if (proxyInfo.isPresent()) { + return proxyInfo.get(); } throw new EnableException("Velocity registration failed (DB)"); } - - private UUID generateNewUUID() { - String seed = serverProperties.getName() + - serverProperties.getIp() + - serverProperties.getPort() + - serverProperties.getVersion() + - serverProperties.getImplVersion(); - return UUID.nameUUIDFromBytes(seed.getBytes()); - } }