diff --git a/Plan/common/src/main/java/com/djrapitops/plan/command/commands/manage/ManageClearCommand.java b/Plan/common/src/main/java/com/djrapitops/plan/command/commands/manage/ManageClearCommand.java index a01dcd566..4c4f2adf4 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/command/commands/manage/ManageClearCommand.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/command/commands/manage/ManageClearCommand.java @@ -20,6 +20,7 @@ import com.djrapitops.plan.api.exceptions.database.DBInitException; import com.djrapitops.plan.api.exceptions.database.DBOpException; import com.djrapitops.plan.db.DBType; import com.djrapitops.plan.db.Database; +import com.djrapitops.plan.db.access.transactions.RemoveEverythingTransaction; import com.djrapitops.plan.system.database.DBSystem; import com.djrapitops.plan.system.locale.Locale; import com.djrapitops.plan.system.locale.lang.CmdHelpLang; @@ -101,7 +102,7 @@ public class ManageClearCommand extends CommandNode { try { sender.sendMessage(locale.getString(ManageLang.PROGRESS_START)); - database.remove().everything(); + database.executeTransaction(new RemoveEverythingTransaction()); sender.sendMessage(locale.getString(ManageLang.PROGRESS_SUCCESS)); } catch (DBOpException e) { diff --git a/Plan/common/src/main/java/com/djrapitops/plan/db/access/transactions/RemoveEverythingTransaction.java b/Plan/common/src/main/java/com/djrapitops/plan/db/access/transactions/RemoveEverythingTransaction.java new file mode 100644 index 000000000..c6edc3c8e --- /dev/null +++ b/Plan/common/src/main/java/com/djrapitops/plan/db/access/transactions/RemoveEverythingTransaction.java @@ -0,0 +1,51 @@ +/* + * 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; + +import com.djrapitops.plan.db.sql.tables.*; + +/** + * Transaction that removes everything from the database. + * + * @author Rsl1122 + */ +public class RemoveEverythingTransaction extends Transaction { + + @Override + protected void execute() { + // Delete statements are run in a specific order as some tables have foreign keys, + // or had at some point in the past. + clearTable(SettingsTable.TABLE_NAME); + clearTable(GeoInfoTable.TABLE_NAME); + clearTable(NicknamesTable.TABLE_NAME); + clearTable(KillsTable.TABLE_NAME); + clearTable(WorldTimesTable.TABLE_NAME); + clearTable(SessionsTable.TABLE_NAME); + clearTable(WorldTable.TABLE_NAME); + clearTable(PingTable.TABLE_NAME); + clearTable(UserInfoTable.TABLE_NAME); + clearTable(UsersTable.TABLE_NAME); + clearTable(CommandUseTable.TABLE_NAME); + clearTable(TPSTable.TABLE_NAME); + clearTable(SecurityTable.TABLE_NAME); + clearTable(ServerTable.TABLE_NAME); + } + + private void clearTable(String tableName) { + execute("DELETE FROM " + tableName); + } +} \ No newline at end of file diff --git a/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/move/BatchOperationTable.java b/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/move/BatchOperationTable.java index ed1059eca..f917bdaf1 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/move/BatchOperationTable.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/move/BatchOperationTable.java @@ -17,6 +17,7 @@ package com.djrapitops.plan.db.sql.tables.move; import com.djrapitops.plan.db.SQLDB; +import com.djrapitops.plan.db.access.transactions.RemoveEverythingTransaction; import com.djrapitops.plan.db.sql.queries.LargeFetchQueries; import com.djrapitops.plan.db.sql.tables.Table; import com.djrapitops.plan.db.sql.tables.UsersTable; @@ -67,7 +68,7 @@ public class BatchOperationTable extends Table { @Override public void removeAllData() { - db.remove().everything(); + db.executeTransaction(new RemoveEverythingTransaction()); } public void copyEverything(BatchOperationTable toDB) { diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/RemoveOperations.java b/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/RemoveOperations.java index 6b7ac5afd..d6985df0e 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/RemoveOperations.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/RemoveOperations.java @@ -18,7 +18,5 @@ package com.djrapitops.plan.system.database.databases.operation; public interface RemoveOperations { - void everything(); - void webUser(String name); } diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/sql/operation/SQLRemoveOps.java b/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/sql/operation/SQLRemoveOps.java index b7aee1ef7..2961a9e2b 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/sql/operation/SQLRemoveOps.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/sql/operation/SQLRemoveOps.java @@ -17,7 +17,6 @@ package com.djrapitops.plan.system.database.databases.sql.operation; import com.djrapitops.plan.db.SQLDB; -import com.djrapitops.plan.db.sql.tables.Table; import com.djrapitops.plan.system.database.databases.operation.RemoveOperations; public class SQLRemoveOps extends SQLOps implements RemoveOperations { @@ -26,13 +25,6 @@ public class SQLRemoveOps extends SQLOps implements RemoveOperations { super(db); } - @Override - public void everything() { - for (Table table : db.getAllTablesInRemoveOrder()) { - table.removeAllData(); - } - } - @Override public void webUser(String userName) { securityTable.removeUser(userName); 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 1716b2d6f..c9490087e 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 @@ -29,6 +29,7 @@ import com.djrapitops.plan.data.store.objects.Nickname; import com.djrapitops.plan.data.time.GMTimes; import com.djrapitops.plan.data.time.WorldTimes; import com.djrapitops.plan.db.access.Query; +import com.djrapitops.plan.db.access.transactions.RemoveEverythingTransaction; import com.djrapitops.plan.db.access.transactions.RemovePlayerTransaction; import com.djrapitops.plan.db.patches.Patch; import com.djrapitops.plan.db.sql.queries.LargeFetchQueries; @@ -123,7 +124,7 @@ public abstract class CommonDBTest { } }.apply(); db.createTables(); - db.remove().everything(); + db.executeTransaction(new RemoveEverythingTransaction()); ServerTable serverTable = db.getServerTable(); serverTable.saveCurrentServerInfo(new Server(-1, serverUUID, "ServerName", "", 20)); assertEquals(serverUUID, db.getServerUUIDSupplier().get()); @@ -553,7 +554,7 @@ public abstract class CommonDBTest { public void testRemovalEverything() throws NoSuchAlgorithmException { saveAllData(db); - db.remove().everything(); + db.executeTransaction(new RemoveEverythingTransaction()); assertQueryIsEmpty(db, LargeFetchQueries.fetchAllCommonUserInformation()); assertQueryIsEmpty(db, LargeFetchQueries.fetchPerServerUserInformation()); diff --git a/Plan/common/src/test/java/com/djrapitops/plan/db/DBPatchH2RegressionTest.java b/Plan/common/src/test/java/com/djrapitops/plan/db/DBPatchH2RegressionTest.java index 25c905b8f..4d91b36d3 100644 --- a/Plan/common/src/test/java/com/djrapitops/plan/db/DBPatchH2RegressionTest.java +++ b/Plan/common/src/test/java/com/djrapitops/plan/db/DBPatchH2RegressionTest.java @@ -19,6 +19,7 @@ package com.djrapitops.plan.db; import com.djrapitops.plan.api.exceptions.database.DBInitException; import com.djrapitops.plan.data.store.containers.ServerContainer; import com.djrapitops.plan.data.store.keys.ServerKeys; +import com.djrapitops.plan.db.access.transactions.RemoveEverythingTransaction; import com.djrapitops.plan.db.tasks.PatchTask; import com.djrapitops.plan.system.locale.Locale; import com.djrapitops.plan.system.settings.config.PlanConfig; @@ -124,6 +125,6 @@ public class DBPatchH2RegressionTest extends DBPatchRegressionTest { OptionalAssert.equals(1, server.getValue(ServerKeys.PLAYER_KILL_COUNT)); // Make sure no foreign key checks fail on removal - underTest.remove().everything(); + underTest.executeTransaction(new RemoveEverythingTransaction()); } } diff --git a/Plan/common/src/test/java/com/djrapitops/plan/db/DBPatchMySQLRegressionTest.java b/Plan/common/src/test/java/com/djrapitops/plan/db/DBPatchMySQLRegressionTest.java index a8ea3b449..230caf338 100644 --- a/Plan/common/src/test/java/com/djrapitops/plan/db/DBPatchMySQLRegressionTest.java +++ b/Plan/common/src/test/java/com/djrapitops/plan/db/DBPatchMySQLRegressionTest.java @@ -20,6 +20,7 @@ import com.djrapitops.plan.api.exceptions.EnableException; import com.djrapitops.plan.api.exceptions.database.DBInitException; import com.djrapitops.plan.data.store.containers.ServerContainer; import com.djrapitops.plan.data.store.keys.ServerKeys; +import com.djrapitops.plan.db.access.transactions.RemoveEverythingTransaction; import com.djrapitops.plan.db.tasks.PatchTask; import com.djrapitops.plan.system.PlanSystem; import com.djrapitops.plan.system.locale.Locale; @@ -147,6 +148,6 @@ public class DBPatchMySQLRegressionTest extends DBPatchRegressionTest { OptionalAssert.equals(1, server.getValue(ServerKeys.PLAYER_KILL_COUNT)); // Make sure no foreign key checks fail on removal - underTest.remove().everything(); + underTest.executeTransaction(new RemoveEverythingTransaction()); } } diff --git a/Plan/common/src/test/java/com/djrapitops/plan/db/DBPatchSQLiteRegressionTest.java b/Plan/common/src/test/java/com/djrapitops/plan/db/DBPatchSQLiteRegressionTest.java index 64d3f5d47..5ef2046b5 100644 --- a/Plan/common/src/test/java/com/djrapitops/plan/db/DBPatchSQLiteRegressionTest.java +++ b/Plan/common/src/test/java/com/djrapitops/plan/db/DBPatchSQLiteRegressionTest.java @@ -19,6 +19,7 @@ package com.djrapitops.plan.db; import com.djrapitops.plan.api.exceptions.database.DBInitException; import com.djrapitops.plan.data.store.containers.ServerContainer; import com.djrapitops.plan.data.store.keys.ServerKeys; +import com.djrapitops.plan.db.access.transactions.RemoveEverythingTransaction; import com.djrapitops.plan.db.tasks.PatchTask; import com.djrapitops.plan.system.locale.Locale; import com.djrapitops.plugin.logging.L; @@ -117,6 +118,6 @@ public class DBPatchSQLiteRegressionTest extends DBPatchRegressionTest { OptionalAssert.equals(1, server.getValue(ServerKeys.PLAYER_KILL_COUNT)); // Make sure no foreign key checks fail on removal - underTest.remove().everything(); + underTest.executeTransaction(new RemoveEverythingTransaction()); } }