From 240b6cb29e66b94e302fa0c4a238b0360807e2e8 Mon Sep 17 00:00:00 2001 From: Rsl1122 Date: Fri, 15 Feb 2019 09:34:15 +0200 Subject: [PATCH] Refactored ServerTable#setAsUninstalled to a transaction --- .../manage/ManageUninstalledCommand.java | 3 +- .../SetServerAsUninstalledTransaction.java | 60 +++++++++++++++++++ .../plan/db/sql/tables/ServerTable.java | 14 ----- .../databases/operation/SaveOperations.java | 3 - .../databases/sql/operation/SQLSaveOps.java | 6 -- .../com/djrapitops/plan/db/CommonDBTest.java | 21 +++++-- 6 files changed, 79 insertions(+), 28 deletions(-) create mode 100644 Plan/common/src/main/java/com/djrapitops/plan/db/access/transactions/commands/SetServerAsUninstalledTransaction.java 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 888604b32..9a5052299 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 @@ -18,6 +18,7 @@ package com.djrapitops.plan.command.commands.manage; import com.djrapitops.plan.api.exceptions.database.DBOpException; import com.djrapitops.plan.db.access.queries.objects.ServerQueries; +import com.djrapitops.plan.db.access.transactions.commands.SetServerAsUninstalledTransaction; import com.djrapitops.plan.system.database.DBSystem; import com.djrapitops.plan.system.info.server.Server; import com.djrapitops.plan.system.info.server.ServerInfo; @@ -91,7 +92,7 @@ public class ManageUninstalledCommand extends CommandNode { return; } - dbSystem.getDatabase().save().setAsUninstalled(serverUUID); + dbSystem.getDatabase().executeTransaction(new SetServerAsUninstalledTransaction(serverUUID)); sender.sendMessage(locale.getString(ManageLang.PROGRESS_SUCCESS)); } catch (DBOpException e) { sender.sendMessage("§cError occurred: " + e.toString()); diff --git a/Plan/common/src/main/java/com/djrapitops/plan/db/access/transactions/commands/SetServerAsUninstalledTransaction.java b/Plan/common/src/main/java/com/djrapitops/plan/db/access/transactions/commands/SetServerAsUninstalledTransaction.java new file mode 100644 index 000000000..9de5d3f0f --- /dev/null +++ b/Plan/common/src/main/java/com/djrapitops/plan/db/access/transactions/commands/SetServerAsUninstalledTransaction.java @@ -0,0 +1,60 @@ +/* + * 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.commands; + +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.tables.ServerTable; + +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.UUID; + +import static com.djrapitops.plan.db.sql.parsing.Sql.WHERE; + +/** + * Transaction for telling Plan that Plan has been uninstalled from the server. + * + * @author Rsl1122 + */ +public class SetServerAsUninstalledTransaction extends Transaction { + + private final UUID serverUUID; + + public SetServerAsUninstalledTransaction(UUID serverUUID) { + this.serverUUID = serverUUID; + } + + @Override + protected void performOperations() { + execute(updateServerAsUninstalled()); + } + + private Executable updateServerAsUninstalled() { + String sql = "UPDATE " + ServerTable.TABLE_NAME + " SET " + ServerTable.INSTALLED + "=?" + + WHERE + ServerTable.SERVER_UUID + "=?"; + + return new ExecStatement(sql) { + @Override + public void prepare(PreparedStatement statement) throws SQLException { + statement.setBoolean(1, false); + statement.setString(2, serverUUID.toString()); + } + }; + } +} \ No newline at end of file diff --git a/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/ServerTable.java b/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/ServerTable.java index c431c8ef1..c315ccec4 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/ServerTable.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/ServerTable.java @@ -18,12 +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.access.QueryAllStatement; import com.djrapitops.plan.db.sql.parsing.*; import com.djrapitops.plan.system.info.server.Server; -import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.HashMap; @@ -102,16 +100,4 @@ public class ServerTable extends Table { } }); } - - public void setAsUninstalled(UUID serverUUID) { - String sql = "UPDATE " + tableName + " SET " + INSTALLED + "=? WHERE " + SERVER_UUID + "=?"; - - execute(new ExecStatement(sql) { - @Override - public void prepare(PreparedStatement statement) throws SQLException { - statement.setBoolean(1, false); - statement.setString(2, serverUUID.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 index 74487be0c..cb81e6770 100644 --- 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 @@ -76,7 +76,4 @@ public interface SaveOperations { @Deprecated void session(UUID uuid, Session session); - @Deprecated - void setAsUninstalled(UUID serverUUID); - } \ 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 index c6e2bfb43..e17fadf56 100644 --- 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 @@ -149,10 +149,4 @@ public class SQLSaveOps extends SQLOps implements SaveOperations { } }); } - - @Override - public void setAsUninstalled(UUID serverUUID) { - serverTable.setAsUninstalled(serverUUID); - } - } 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 f02be9c60..26fb5041e 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 @@ -38,10 +38,7 @@ import com.djrapitops.plan.db.access.transactions.BackupCopyTransaction; import com.djrapitops.plan.db.access.transactions.StoreConfigTransaction; import com.djrapitops.plan.db.access.transactions.StoreServerInformationTransaction; import com.djrapitops.plan.db.access.transactions.Transaction; -import com.djrapitops.plan.db.access.transactions.commands.RegisterWebUserTransaction; -import com.djrapitops.plan.db.access.transactions.commands.RemoveEverythingTransaction; -import com.djrapitops.plan.db.access.transactions.commands.RemovePlayerTransaction; -import com.djrapitops.plan.db.access.transactions.commands.RemoveWebUserTransaction; +import com.djrapitops.plan.db.access.transactions.commands.*; import com.djrapitops.plan.db.access.transactions.events.*; import com.djrapitops.plan.db.access.transactions.init.CleanTransaction; import com.djrapitops.plan.db.access.transactions.init.CreateIndexTransaction; @@ -855,6 +852,22 @@ public abstract class CommonDBTest { assertTrue("Some keys are not supported by PlayerContainer: PlayerKeys." + unsupported.toString(), unsupported.isEmpty()); } + @Test + public void uninstallingServerStopsItFromBeingReturnedInServerQuery() { + db.executeTransaction(new SetServerAsUninstalledTransaction(serverUUID)); + + Optional found = db.query(ServerQueries.fetchServerMatchingIdentifier(serverUUID)); + assertFalse(found.isPresent()); + } + + @Test + public void uninstallingServerStopsItFromBeingReturnedInServersQuery() { + db.executeTransaction(new SetServerAsUninstalledTransaction(serverUUID)); + + Collection found = db.query(ServerQueries.fetchPlanServerInformationCollection()); + assertTrue(found.isEmpty()); + } + @Test public void serverContainerSupportsAllServerKeys() throws NoSuchAlgorithmException, IllegalAccessException { saveAllData();