diff --git a/Plan/common/src/main/java/com/djrapitops/plan/command/commands/InspectCommand.java b/Plan/common/src/main/java/com/djrapitops/plan/command/commands/InspectCommand.java index c6570fb74..404487fdb 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/command/commands/InspectCommand.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/command/commands/InspectCommand.java @@ -18,6 +18,7 @@ package com.djrapitops.plan.command.commands; import com.djrapitops.plan.api.exceptions.database.DBOpException; import com.djrapitops.plan.db.access.queries.OptionalFetchQueries; +import com.djrapitops.plan.db.access.queries.PlayerFetchQueries; import com.djrapitops.plan.system.database.DBSystem; import com.djrapitops.plan.system.info.connection.ConnectionSystem; import com.djrapitops.plan.system.locale.Locale; @@ -97,19 +98,19 @@ public class InspectCommand extends CommandNode { private void runInspectTask(String playerName, Sender sender) { processing.submitNonCritical(() -> { try { - UUID uuid = uuidUtility.getUUIDOf(playerName); - if (uuid == null) { + UUID playerUUID = uuidUtility.getUUIDOf(playerName); + if (playerUUID == null) { sender.sendMessage(locale.getString(CommandLang.FAIL_USERNAME_NOT_VALID)); return; } - if (!dbSystem.getDatabase().check().isPlayerRegistered(uuid)) { + if (!dbSystem.getDatabase().query(PlayerFetchQueries.isPlayerRegistered(playerUUID))) { sender.sendMessage(locale.getString(CommandLang.FAIL_USERNAME_NOT_KNOWN)); return; } checkWebUserAndNotify(sender); - processing.submit(processorFactory.inspectCacheRequestProcessor(uuid, sender, playerName, this::sendInspectMsg)); + processing.submit(processorFactory.inspectCacheRequestProcessor(playerUUID, sender, playerName, this::sendInspectMsg)); } catch (DBOpException e) { sender.sendMessage("§eDatabase exception occurred: " + e.getMessage()); errorHandler.log(L.ERROR, this.getClass(), e); diff --git a/Plan/common/src/main/java/com/djrapitops/plan/command/commands/manage/ManageRemoveCommand.java b/Plan/common/src/main/java/com/djrapitops/plan/command/commands/manage/ManageRemoveCommand.java index 76d421e55..a09262804 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/command/commands/manage/ManageRemoveCommand.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/command/commands/manage/ManageRemoveCommand.java @@ -18,6 +18,7 @@ package com.djrapitops.plan.command.commands.manage; import com.djrapitops.plan.api.exceptions.database.DBOpException; import com.djrapitops.plan.db.Database; +import com.djrapitops.plan.db.access.queries.PlayerFetchQueries; import com.djrapitops.plan.db.access.transactions.RemovePlayerTransaction; import com.djrapitops.plan.system.database.DBSystem; import com.djrapitops.plan.system.locale.Locale; @@ -95,15 +96,15 @@ public class ManageRemoveCommand extends CommandNode { private void runRemoveTask(String playerName, Sender sender, String[] args) { processing.submitCritical(() -> { try { - UUID uuid = uuidUtility.getUUIDOf(playerName); + UUID playerUUID = uuidUtility.getUUIDOf(playerName); - if (uuid == null) { + if (playerUUID == null) { sender.sendMessage(locale.getString(CommandLang.FAIL_USERNAME_NOT_VALID)); return; } Database db = dbSystem.getDatabase(); - if (!db.check().isPlayerRegistered(uuid)) { + if (!db.query(PlayerFetchQueries.isPlayerRegistered(playerUUID))) { sender.sendMessage(locale.getString(CommandLang.FAIL_USERNAME_NOT_KNOWN)); return; } @@ -119,7 +120,7 @@ public class ManageRemoveCommand extends CommandNode { sender.sendMessage(locale.getString(ManageLang.PROGRESS_START)); - db.executeTransaction(new RemovePlayerTransaction(uuid)); + db.executeTransaction(new RemovePlayerTransaction(playerUUID)); sender.sendMessage(locale.getString(ManageLang.PROGRESS_SUCCESS)); } catch (DBOpException e) { diff --git a/Plan/common/src/main/java/com/djrapitops/plan/db/access/queries/PlayerFetchQueries.java b/Plan/common/src/main/java/com/djrapitops/plan/db/access/queries/PlayerFetchQueries.java index 1004bf6d1..6a7fe2212 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/db/access/queries/PlayerFetchQueries.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/db/access/queries/PlayerFetchQueries.java @@ -18,6 +18,7 @@ package com.djrapitops.plan.db.access.queries; import com.djrapitops.plan.data.container.GeoInfo; import com.djrapitops.plan.data.container.UserInfo; +import com.djrapitops.plan.db.access.HasMoreThanZeroQueryStatement; import com.djrapitops.plan.db.access.Query; import com.djrapitops.plan.db.access.QueryStatement; import com.djrapitops.plan.db.sql.tables.GeoInfoTable; @@ -129,4 +130,21 @@ public class PlayerFetchQueries { } }; } + + /** + * Check if the player's BaseUser is registered. + * + * @param playerUUID UUID of the player. + * @return True if the player's BaseUser is found from plan_users + */ + public static Query isPlayerRegistered(UUID playerUUID) { + String sql = "SELECT COUNT(1) as c FROM " + UsersTable.TABLE_NAME + + " WHERE " + UsersTable.USER_UUID + "=?"; + return new HasMoreThanZeroQueryStatement(sql) { + @Override + public void prepare(PreparedStatement statement) throws SQLException { + statement.setString(1, playerUUID.toString()); + } + }; + } } \ No newline at end of file diff --git a/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/UsersTable.java b/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/UsersTable.java index b8a68166e..55a805062 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/UsersTable.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/UsersTable.java @@ -135,24 +135,6 @@ public class UsersTable extends Table { }); } - public boolean isRegistered(UUID uuid) { - String sql = Select.from(tableName, "COUNT(" + ID + ") as c") - .where(USER_UUID + "=?") - .toString(); - - return query(new QueryStatement(sql) { - @Override - public void prepare(PreparedStatement statement) throws SQLException { - statement.setString(1, uuid.toString()); - } - - @Override - public Boolean processResults(ResultSet set) throws SQLException { - return set.next() && set.getInt("c") >= 1; - } - }); - } - /** * Register a new user (UUID) to the database. * diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/CheckOperations.java b/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/CheckOperations.java index 446571e29..5fb3a999c 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/CheckOperations.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/CheckOperations.java @@ -20,11 +20,6 @@ import java.util.UUID; @Deprecated public interface CheckOperations { - @Deprecated - boolean isPlayerRegistered(UUID player); - - @Deprecated - boolean isPlayerRegistered(UUID player, UUID server); @Deprecated boolean isPlayerRegisteredOnThisServer(UUID player); diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/sql/operation/SQLCheckOps.java b/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/sql/operation/SQLCheckOps.java index c610c94f1..f7ad320da 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/sql/operation/SQLCheckOps.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/sql/operation/SQLCheckOps.java @@ -27,16 +27,6 @@ public class SQLCheckOps extends SQLOps implements CheckOperations { super(db); } - @Override - public boolean isPlayerRegistered(UUID player) { - return usersTable.isRegistered(player); - } - - @Override - public boolean isPlayerRegistered(UUID player, UUID server) { - return userInfoTable.isRegistered(player, server); - } - @Override public boolean isPlayerRegisteredOnThisServer(UUID player) { return userInfoTable.isRegisteredOnThisServer(player); diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/processing/processors/player/ProxyRegisterProcessor.java b/Plan/common/src/main/java/com/djrapitops/plan/system/processing/processors/player/ProxyRegisterProcessor.java index fd2093a93..a61a72a0d 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/system/processing/processors/player/ProxyRegisterProcessor.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/system/processing/processors/player/ProxyRegisterProcessor.java @@ -17,6 +17,7 @@ package com.djrapitops.plan.system.processing.processors.player; import com.djrapitops.plan.db.Database; +import com.djrapitops.plan.db.access.queries.PlayerFetchQueries; import com.djrapitops.plan.system.processing.CriticalRunnable; import com.djrapitops.plan.system.processing.Processing; @@ -54,7 +55,7 @@ public class ProxyRegisterProcessor implements CriticalRunnable { @Override public void run() { try { - if (database.check().isPlayerRegistered(uuid)) { + if (database.query(PlayerFetchQueries.isPlayerRegistered(uuid))) { return; } database.save().registerNewUser(uuid, registered, name); diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/processing/processors/player/RegisterProcessor.java b/Plan/common/src/main/java/com/djrapitops/plan/system/processing/processors/player/RegisterProcessor.java index 7a6e22220..0c52e5450 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/system/processing/processors/player/RegisterProcessor.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/system/processing/processors/player/RegisterProcessor.java @@ -17,6 +17,7 @@ package com.djrapitops.plan.system.processing.processors.player; import com.djrapitops.plan.db.Database; +import com.djrapitops.plan.db.access.queries.PlayerFetchQueries; import com.djrapitops.plan.system.database.databases.operation.CheckOperations; import com.djrapitops.plan.system.database.databases.operation.SaveOperations; import com.djrapitops.plan.system.processing.Processing; @@ -61,7 +62,7 @@ public class RegisterProcessor extends AbsRunnable { CheckOperations check = database.check(); SaveOperations save = database.save(); try { - if (!check.isPlayerRegistered(uuid)) { + if (!database.query(PlayerFetchQueries.isPlayerRegistered(uuid))) { save.registerNewUser(uuid, registered.getAsLong(), name); } if (!check.isPlayerRegisteredOnThisServer(uuid)) { diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/webserver/pages/PlayerPageHandler.java b/Plan/common/src/main/java/com/djrapitops/plan/system/webserver/pages/PlayerPageHandler.java index 048367b2c..5cf676efa 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/system/webserver/pages/PlayerPageHandler.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/system/webserver/pages/PlayerPageHandler.java @@ -20,6 +20,7 @@ import com.djrapitops.plan.api.exceptions.WebUserAuthException; import com.djrapitops.plan.api.exceptions.connection.NoServersException; import com.djrapitops.plan.api.exceptions.connection.WebException; import com.djrapitops.plan.data.WebUser; +import com.djrapitops.plan.db.access.queries.PlayerFetchQueries; import com.djrapitops.plan.system.database.DBSystem; import com.djrapitops.plan.system.info.InfoSystem; import com.djrapitops.plan.system.webserver.Request; @@ -78,7 +79,7 @@ public class PlayerPageHandler implements PageHandler { } try { // TODO Move this Database dependency to PlayerPage generation in PageFactory instead. - if (dbSystem.getDatabase().check().isPlayerRegistered(uuid)) { + if (dbSystem.getDatabase().query(PlayerFetchQueries.isPlayerRegistered(uuid))) { if (raw) { return ResponseCache.loadResponse(PageId.RAW_PLAYER.of(uuid), () -> responseFactory.rawPlayerPageResponse(uuid)); } diff --git a/Plan/common/src/test/java/com/djrapitops/plan/db/CommonDBTest.java b/Plan/common/src/test/java/com/djrapitops/plan/db/CommonDBTest.java index 17e60968a..84b34c873 100644 --- a/Plan/common/src/test/java/com/djrapitops/plan/db/CommonDBTest.java +++ b/Plan/common/src/test/java/com/djrapitops/plan/db/CommonDBTest.java @@ -410,9 +410,9 @@ public abstract class CommonDBTest { @Test public void userRegisterChecksReturnCorrectValues() { UsersTable usersTable = db.getUsersTable(); - assertFalse(usersTable.isRegistered(playerUUID)); + assertFalse(db.query(PlayerFetchQueries.isPlayerRegistered(playerUUID))); saveUserOne(); - assertTrue(usersTable.isRegistered(playerUUID)); + assertTrue(db.query(PlayerFetchQueries.isPlayerRegistered(playerUUID))); UserInfoTable userInfoTable = db.getUserInfoTable(); assertFalse(userInfoTable.isRegistered(playerUUID)); @@ -500,11 +500,11 @@ public abstract class CommonDBTest { nicknamesTable.saveUserName(playerUUID, new Nickname("TestNick", System.currentTimeMillis(), serverUUID)); saveGeoInfo(playerUUID, new GeoInfo("1.2.3.4", "TestLoc", 223456789L, "3")); - assertTrue(usersTable.isRegistered(playerUUID)); + assertTrue(db.query(PlayerFetchQueries.isPlayerRegistered(playerUUID))); db.executeTransaction(new RemovePlayerTransaction(playerUUID)); - assertFalse(usersTable.isRegistered(playerUUID)); + assertFalse(db.query(PlayerFetchQueries.isPlayerRegistered(playerUUID))); assertFalse(userInfoTable.isRegistered(playerUUID)); assertTrue(nicknamesTable.getNicknames(playerUUID).isEmpty()); assertTrue(db.query(PlayerFetchQueries.playerGeoInfo(playerUUID)).isEmpty()); @@ -558,7 +558,7 @@ public abstract class CommonDBTest { saveGeoInfo(playerUUID, new GeoInfo("1.2.3.4", "TestLoc", 223456789L, new SHA256Hash("1.2.3.4").create())); - assertTrue(usersTable.isRegistered(playerUUID)); + assertTrue(db.query(PlayerFetchQueries.isPlayerRegistered(playerUUID))); useCommand("plan"); useCommand("plan"); @@ -778,11 +778,11 @@ public abstract class CommonDBTest { @Test public void testRegister() { - assertFalse(db.check().isPlayerRegistered(playerUUID)); + assertFalse(db.query(PlayerFetchQueries.isPlayerRegistered(playerUUID))); assertFalse(db.check().isPlayerRegisteredOnThisServer(playerUUID)); db.save().registerNewUser(playerUUID, 1000L, "name"); db.save().registerNewUserOnThisServer(playerUUID, 500L); - assertTrue(db.check().isPlayerRegistered(playerUUID)); + assertTrue(db.query(PlayerFetchQueries.isPlayerRegistered(playerUUID))); assertTrue(db.check().isPlayerRegisteredOnThisServer(playerUUID)); }