diff --git a/Plan/bukkit/src/main/java/com/djrapitops/plan/system/listeners/bukkit/PlayerOnlineListener.java b/Plan/bukkit/src/main/java/com/djrapitops/plan/system/listeners/bukkit/PlayerOnlineListener.java index cfb54092d..755a7c759 100644 --- a/Plan/bukkit/src/main/java/com/djrapitops/plan/system/listeners/bukkit/PlayerOnlineListener.java +++ b/Plan/bukkit/src/main/java/com/djrapitops/plan/system/listeners/bukkit/PlayerOnlineListener.java @@ -92,10 +92,11 @@ public class PlayerOnlineListener implements Listener { public void onPlayerLogin(PlayerLoginEvent event) { try { PlayerLoginEvent.Result result = event.getResult(); - UUID uuid = event.getPlayer().getUniqueId(); - boolean op = event.getPlayer().isOp(); + UUID playerUUID = event.getPlayer().getUniqueId(); + boolean operator = event.getPlayer().isOp(); boolean banned = result == PlayerLoginEvent.Result.KICK_BANNED; - processing.submit(processors.player().banAndOpProcessor(uuid, () -> banned, op)); + dbSystem.getDatabase().executeTransaction(new BanStatusTransaction(playerUUID, () -> banned)); + dbSystem.getDatabase().executeTransaction(new OperatorStatusTransaction(playerUUID, operator)); } catch (Exception e) { errorHandler.log(L.ERROR, this.getClass(), e); } @@ -194,7 +195,7 @@ public class PlayerOnlineListener implements Listener { nicknameCache.removeDisplayName(playerUUID); - processing.submit(processors.player().banAndOpProcessor(playerUUID, player::isBanned, player.isOp())); + dbSystem.getDatabase().executeTransaction(new BanStatusTransaction(playerUUID, player::isBanned)); sessionCache.endSession(playerUUID, time) .ifPresent(endedSession -> dbSystem.getDatabase().executeTransaction(new SessionEndTransaction(endedSession))); diff --git a/Plan/common/src/main/java/com/djrapitops/plan/db/Database.java b/Plan/common/src/main/java/com/djrapitops/plan/db/Database.java index bd4bdbe2b..2150ba6d2 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/db/Database.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/db/Database.java @@ -21,7 +21,6 @@ import com.djrapitops.plan.api.exceptions.database.DBInitException; import com.djrapitops.plan.db.access.Query; import com.djrapitops.plan.db.access.transactions.Transaction; import com.djrapitops.plan.system.database.databases.operation.FetchOperations; -import com.djrapitops.plan.system.database.databases.operation.SaveOperations; /** * Interface for interacting with a Plan SQL database. @@ -57,9 +56,6 @@ public interface Database { @Deprecated FetchOperations fetch(); - @Deprecated - SaveOperations save(); - /** * Used to get the {@code DBType} of the Database * diff --git a/Plan/common/src/main/java/com/djrapitops/plan/db/SQLDB.java b/Plan/common/src/main/java/com/djrapitops/plan/db/SQLDB.java index 63d125dbd..ebd007662 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/db/SQLDB.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/db/SQLDB.java @@ -31,9 +31,7 @@ import com.djrapitops.plan.db.sql.tables.TPSTable; import com.djrapitops.plan.db.sql.tables.UserInfoTable; import com.djrapitops.plan.db.tasks.PatchTask; import com.djrapitops.plan.system.database.databases.operation.FetchOperations; -import com.djrapitops.plan.system.database.databases.operation.SaveOperations; import com.djrapitops.plan.system.database.databases.sql.operation.SQLFetchOps; -import com.djrapitops.plan.system.database.databases.sql.operation.SQLSaveOps; import com.djrapitops.plan.system.locale.Locale; import com.djrapitops.plan.system.settings.config.PlanConfig; import com.djrapitops.plan.system.settings.paths.PluginSettings; @@ -77,7 +75,6 @@ public abstract class SQLDB extends AbstractDatabase { private final TPSTable tpsTable; private final SQLFetchOps fetchOps; - private final SQLSaveOps saveOps; private PluginTask dbCleanTask; @@ -104,7 +101,6 @@ public abstract class SQLDB extends AbstractDatabase { userInfoTable = new UserInfoTable(this); fetchOps = new SQLFetchOps(this); - saveOps = new SQLSaveOps(this); } /** @@ -340,12 +336,6 @@ public abstract class SQLDB extends AbstractDatabase { return fetchOps; } - @Override - @Deprecated - public SaveOperations save() { - return saveOps; - } - @Override public boolean equals(Object o) { if (this == o) return true; diff --git a/Plan/common/src/main/java/com/djrapitops/plan/db/access/transactions/events/BanStatusTransaction.java b/Plan/common/src/main/java/com/djrapitops/plan/db/access/transactions/events/BanStatusTransaction.java new file mode 100644 index 000000000..6a7593478 --- /dev/null +++ b/Plan/common/src/main/java/com/djrapitops/plan/db/access/transactions/events/BanStatusTransaction.java @@ -0,0 +1,63 @@ +/* + * 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.db.access.transactions.events; + +import com.djrapitops.plan.db.access.ExecStatement; +import com.djrapitops.plan.db.access.Executable; +import com.djrapitops.plan.db.access.transactions.Transaction; +import com.djrapitops.plan.db.sql.parsing.Update; +import com.djrapitops.plan.db.sql.tables.UserInfoTable; + +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.UUID; +import java.util.function.BooleanSupplier; + +/** + * Transaction to update a player's ban status. + * + * @author Rsl1122 + */ +public class BanStatusTransaction extends Transaction { + + private UUID playerUUID; + private BooleanSupplier banStatus; + + public BanStatusTransaction(UUID playerUUID, BooleanSupplier banStatus) { + this.playerUUID = playerUUID; + this.banStatus = banStatus; + } + + @Override + protected void performOperations() { + execute(updateBanStatus()); + } + + private Executable updateBanStatus() { + String sql = Update.values(UserInfoTable.TABLE_NAME, UserInfoTable.BANNED) + .where(UserInfoTable.USER_UUID + "=?") + .toString(); + + return new ExecStatement(sql) { + @Override + public void prepare(PreparedStatement statement) throws SQLException { + statement.setBoolean(1, banStatus.getAsBoolean()); + statement.setString(2, playerUUID.toString()); + } + }; + } +} \ No newline at end of file diff --git a/Plan/common/src/main/java/com/djrapitops/plan/db/access/transactions/events/OperatorStatusTransaction.java b/Plan/common/src/main/java/com/djrapitops/plan/db/access/transactions/events/OperatorStatusTransaction.java new file mode 100644 index 000000000..458fb5305 --- /dev/null +++ b/Plan/common/src/main/java/com/djrapitops/plan/db/access/transactions/events/OperatorStatusTransaction.java @@ -0,0 +1,62 @@ +/* + * 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.db.access.transactions.events; + +import com.djrapitops.plan.db.access.ExecStatement; +import com.djrapitops.plan.db.access.Executable; +import com.djrapitops.plan.db.access.transactions.Transaction; +import com.djrapitops.plan.db.sql.parsing.Update; +import com.djrapitops.plan.db.sql.tables.UserInfoTable; + +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.UUID; + +/** + * Transaction to update a player's operator status. + * + * @author Rsl1122 + */ +public class OperatorStatusTransaction extends Transaction { + + private UUID playerUUID; + private boolean operatorStatus; + + public OperatorStatusTransaction(UUID playerUUID, boolean operatorStatus) { + this.playerUUID = playerUUID; + this.operatorStatus = operatorStatus; + } + + @Override + protected void performOperations() { + execute(updateOperatorStatus()); + } + + private Executable updateOperatorStatus() { + String sql = Update.values(UserInfoTable.TABLE_NAME, UserInfoTable.OP) + .where(UserInfoTable.USER_UUID + "=?") + .toString(); + + return new ExecStatement(sql) { + @Override + public void prepare(PreparedStatement statement) throws SQLException { + statement.setBoolean(1, operatorStatus); + statement.setString(2, playerUUID.toString()); + } + }; + } +} \ No newline at end of file diff --git a/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/UserInfoTable.java b/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/UserInfoTable.java index cccff5593..ae1423e10 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/UserInfoTable.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/UserInfoTable.java @@ -18,16 +18,10 @@ package com.djrapitops.plan.db.sql.tables; import com.djrapitops.plan.db.DBType; import com.djrapitops.plan.db.SQLDB; -import com.djrapitops.plan.db.access.ExecStatement; import com.djrapitops.plan.db.patches.UserInfoOptimizationPatch; import com.djrapitops.plan.db.patches.Version10Patch; import com.djrapitops.plan.db.sql.parsing.CreateTableParser; import com.djrapitops.plan.db.sql.parsing.Sql; -import com.djrapitops.plan.db.sql.parsing.Update; - -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.util.UUID; /** * Table that is in charge of storing server specific player data. @@ -73,32 +67,4 @@ public class UserInfoTable extends Table { .column(BANNED, Sql.BOOL).notNull().defaultValue(false) .toString(); } - - public void updateOpStatus(UUID uuid, boolean op) { - String sql = Update.values(TABLE_NAME, OP) - .where(USER_UUID + "=?") - .toString(); - - execute(new ExecStatement(sql) { - @Override - public void prepare(PreparedStatement statement) throws SQLException { - statement.setBoolean(1, op); - statement.setString(2, uuid.toString()); - } - }); - } - - public void updateBanStatus(UUID uuid, boolean banned) { - String sql = Update.values(TABLE_NAME, BANNED) - .where(USER_UUID + "=?") - .toString(); - - execute(new ExecStatement(sql) { - @Override - public void prepare(PreparedStatement statement) throws SQLException { - statement.setBoolean(1, banned); - statement.setString(2, uuid.toString()); - } - }); - } } diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/SaveOperations.java b/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/SaveOperations.java deleted file mode 100644 index a69b03712..000000000 --- a/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/SaveOperations.java +++ /dev/null @@ -1,41 +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.database.databases.operation; - -import java.util.UUID; - -/** - * Operation methods for saving data. - *

- * Note: Method names subject to change - * - * @author Rsl1122 - */ -@Deprecated -public interface SaveOperations { - - // Bulk save - - // Single data point - - @Deprecated - void banStatus(UUID uuid, boolean banned); - - @Deprecated - void opStatus(UUID uuid, boolean op); - -} \ No newline at end of file diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/sql/operation/SQLSaveOps.java b/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/sql/operation/SQLSaveOps.java deleted file mode 100644 index e1f6afbd8..000000000 --- a/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/sql/operation/SQLSaveOps.java +++ /dev/null @@ -1,45 +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.database.databases.sql.operation; - -import com.djrapitops.plan.db.SQLDB; -import com.djrapitops.plan.system.database.databases.operation.SaveOperations; - -import java.util.UUID; - -/** - * SaveOperations implementation for SQL databases. - * - * @author Rsl1122 - */ -public class SQLSaveOps extends SQLOps implements SaveOperations { - - public SQLSaveOps(SQLDB db) { - super(db); - } - - @Override - public void banStatus(UUID uuid, boolean banned) { - userInfoTable.updateBanStatus(uuid, banned); - } - - @Override - public void opStatus(UUID uuid, boolean op) { - userInfoTable.updateOpStatus(uuid, op); - } - -} diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/processing/processors/Processors.java b/Plan/common/src/main/java/com/djrapitops/plan/system/processing/processors/Processors.java index c06f07b5d..2bc0341d7 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/system/processing/processors/Processors.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/system/processing/processors/Processors.java @@ -17,7 +17,6 @@ package com.djrapitops.plan.system.processing.processors; import com.djrapitops.plan.system.processing.processors.info.InfoProcessors; -import com.djrapitops.plan.system.processing.processors.player.PlayerProcessors; import javax.inject.Inject; import javax.inject.Singleton; @@ -30,22 +29,15 @@ import javax.inject.Singleton; @Singleton public class Processors { - private final PlayerProcessors playerProcessors; private final InfoProcessors infoProcessors; @Inject public Processors( - PlayerProcessors playerProcessors, InfoProcessors infoProcessors ) { - this.playerProcessors = playerProcessors; this.infoProcessors = infoProcessors; } - public PlayerProcessors player() { - return playerProcessors; - } - public InfoProcessors info() { return infoProcessors; } diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/processing/processors/player/BanAndOpProcessor.java b/Plan/common/src/main/java/com/djrapitops/plan/system/processing/processors/player/BanAndOpProcessor.java deleted file mode 100644 index 9e0f3a867..000000000 --- a/Plan/common/src/main/java/com/djrapitops/plan/system/processing/processors/player/BanAndOpProcessor.java +++ /dev/null @@ -1,54 +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.processing.processors.player; - -import com.djrapitops.plan.db.Database; -import com.djrapitops.plan.system.database.databases.operation.SaveOperations; - -import java.util.UUID; -import java.util.function.BooleanSupplier; - -/** - * Updates ban and OP status of the player to the database. - * - * @author Rsl1122 - */ -public class BanAndOpProcessor implements Runnable { - - private final UUID uuid; - private final BooleanSupplier banned; - private final boolean op; - - private final Database database; - - BanAndOpProcessor( - UUID uuid, BooleanSupplier banned, boolean op, - Database database - ) { - this.uuid = uuid; - this.banned = banned; - this.op = op; - this.database = database; - } - - @Override - public void run() { - SaveOperations save = database.save(); - save.banStatus(uuid, banned.getAsBoolean()); - save.opStatus(uuid, op); - } -} diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/processing/processors/player/PlayerProcessors.java b/Plan/common/src/main/java/com/djrapitops/plan/system/processing/processors/player/PlayerProcessors.java deleted file mode 100644 index c46738308..000000000 --- a/Plan/common/src/main/java/com/djrapitops/plan/system/processing/processors/player/PlayerProcessors.java +++ /dev/null @@ -1,47 +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.processing.processors.player; - -import com.djrapitops.plan.system.database.DBSystem; -import dagger.Lazy; - -import javax.inject.Inject; -import javax.inject.Singleton; -import java.util.UUID; -import java.util.function.BooleanSupplier; - -/** - * Factory for creating Runnables related to Player data to run with {@link com.djrapitops.plan.system.processing.Processing}. - * - * @author Rsl1122 - */ -@Singleton -public class PlayerProcessors { - - private final Lazy dbSystem; - - @Inject - public PlayerProcessors( - Lazy dbSystem - ) { - this.dbSystem = dbSystem; - } - - public BanAndOpProcessor banAndOpProcessor(UUID uuid, BooleanSupplier banned, boolean op) { - return new BanAndOpProcessor(uuid, banned, op, dbSystem.get().getDatabase()); - } -} \ No newline at end of file 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 e304252b5..cb27b139b 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 @@ -417,7 +417,7 @@ public abstract class CommonDBTest { public void userInfoTableUpdatesBanStatus() { saveUserOne(); - db.getUserInfoTable().updateBanStatus(playerUUID, true); + db.executeTransaction(new BanStatusTransaction(playerUUID, () -> true)); List userInfo = db.query(UserInfoQueries.fetchUserInformationOfUser(playerUUID)); List expected = Collections.singletonList(new UserInfo(playerUUID, serverUUID, 1000L, false, true)); @@ -429,7 +429,7 @@ public abstract class CommonDBTest { public void userInfoTableUpdatesOperatorStatus() { saveUserOne(); - db.getUserInfoTable().updateOpStatus(playerUUID, true); + db.executeTransaction(new OperatorStatusTransaction(playerUUID, true)); List userInfo = db.query(UserInfoQueries.fetchUserInformationOfUser(playerUUID)); List expected = Collections.singletonList(new UserInfo(playerUUID, serverUUID, 1000L, true, false)); diff --git a/Plan/sponge/src/main/java/com/djrapitops/plan/system/listeners/sponge/SpongePlayerListener.java b/Plan/sponge/src/main/java/com/djrapitops/plan/system/listeners/sponge/SpongePlayerListener.java index becbb238f..ec86a628f 100644 --- a/Plan/sponge/src/main/java/com/djrapitops/plan/system/listeners/sponge/SpongePlayerListener.java +++ b/Plan/sponge/src/main/java/com/djrapitops/plan/system/listeners/sponge/SpongePlayerListener.java @@ -105,7 +105,7 @@ public class SpongePlayerListener { GameProfile profile = event.getProfile(); UUID playerUUID = profile.getUniqueId(); boolean banned = isBanned(profile); - processing.submit(processors.player().banAndOpProcessor(playerUUID, () -> banned, false)); + dbSystem.getDatabase().executeTransaction(new BanStatusTransaction(playerUUID, () -> banned)); } @Listener(order = Order.POST) @@ -199,7 +199,7 @@ public class SpongePlayerListener { nicknameCache.removeDisplayName(playerUUID); boolean banned = isBanned(player.getProfile()); - processing.submit(processors.player().banAndOpProcessor(playerUUID, () -> banned, false)); + dbSystem.getDatabase().executeTransaction(new BanStatusTransaction(playerUUID, () -> banned)); sessionCache.endSession(playerUUID, time) .ifPresent(endedSession -> dbSystem.getDatabase().executeTransaction(new SessionEndTransaction(endedSession)));