From a41fd0dc4020b15335543d4838670825114f38e3 Mon Sep 17 00:00:00 2001 From: Rsl1122 Date: Sat, 2 Feb 2019 11:50:02 +0200 Subject: [PATCH] Refactored SecurityTable#removeUser to a transaction --- .../commands/webuser/WebDeleteCommand.java | 3 +- .../transactions/RemovePlayerTransaction.java | 7 +-- .../RemoveWebUserTransaction.java | 49 +++++++++++++++++++ .../plan/db/sql/tables/SecurityTable.java | 11 ----- .../com/djrapitops/plan/db/CommonDBTest.java | 2 +- 5 files changed, 53 insertions(+), 19 deletions(-) create mode 100644 Plan/common/src/main/java/com/djrapitops/plan/db/access/transactions/RemoveWebUserTransaction.java diff --git a/Plan/common/src/main/java/com/djrapitops/plan/command/commands/webuser/WebDeleteCommand.java b/Plan/common/src/main/java/com/djrapitops/plan/command/commands/webuser/WebDeleteCommand.java index 6f7d37991..16f090efa 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/command/commands/webuser/WebDeleteCommand.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/command/commands/webuser/WebDeleteCommand.java @@ -19,6 +19,7 @@ package com.djrapitops.plan.command.commands.webuser; import com.djrapitops.plan.data.WebUser; import com.djrapitops.plan.db.Database; import com.djrapitops.plan.db.access.queries.OptionalFetchQueries; +import com.djrapitops.plan.db.access.transactions.RemoveWebUserTransaction; import com.djrapitops.plan.system.database.DBSystem; import com.djrapitops.plan.system.locale.Locale; import com.djrapitops.plan.system.locale.lang.CmdHelpLang; @@ -84,7 +85,7 @@ public class WebDeleteCommand extends CommandNode { sender.sendMessage("§c[Plan] User Doesn't exist."); return; } - db.remove().webUser(user); + db.executeTransaction(new RemoveWebUserTransaction(user)); sender.sendMessage(locale.getString(ManageLang.PROGRESS_SUCCESS)); } catch (Exception e) { errorHandler.log(L.ERROR, this.getClass(), e); diff --git a/Plan/common/src/main/java/com/djrapitops/plan/db/access/transactions/RemovePlayerTransaction.java b/Plan/common/src/main/java/com/djrapitops/plan/db/access/transactions/RemovePlayerTransaction.java index fd7690778..bb253ce26 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/db/access/transactions/RemovePlayerTransaction.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/db/access/transactions/RemovePlayerTransaction.java @@ -57,12 +57,7 @@ public class RemovePlayerTransaction extends Transaction { } private void deleteWebUser(String username) { - execute(new ExecStatement("DELETE FROM " + SecurityTable.TABLE_NAME + " WHERE " + SecurityTable.USERNAME + "=?") { - @Override - public void prepare(PreparedStatement statement) throws SQLException { - statement.setString(1, username); - } - }); + executeOther(new RemoveWebUserTransaction(username)); } private void deleteFromTable(String tableName) { diff --git a/Plan/common/src/main/java/com/djrapitops/plan/db/access/transactions/RemoveWebUserTransaction.java b/Plan/common/src/main/java/com/djrapitops/plan/db/access/transactions/RemoveWebUserTransaction.java new file mode 100644 index 000000000..ce064e9e2 --- /dev/null +++ b/Plan/common/src/main/java/com/djrapitops/plan/db/access/transactions/RemoveWebUserTransaction.java @@ -0,0 +1,49 @@ +/* + * 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.access.ExecStatement; +import com.djrapitops.plan.db.sql.tables.SecurityTable; + +import java.sql.PreparedStatement; +import java.sql.SQLException; + +/** + * Transaction to remove a Plan {@link com.djrapitops.plan.data.WebUser} from the database. + * + * @author Rsl1122 + */ +public class RemoveWebUserTransaction extends Transaction { + + private final String username; + + public RemoveWebUserTransaction(String username) { + this.username = username; + } + + @Override + protected void performOperations() { + String sql = "DELETE FROM " + SecurityTable.TABLE_NAME + " WHERE " + SecurityTable.USERNAME + "=?"; + + execute(new ExecStatement(sql) { + @Override + public void prepare(PreparedStatement statement) throws SQLException { + statement.setString(1, username); + } + }); + } +} \ No newline at end of file diff --git a/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/SecurityTable.java b/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/SecurityTable.java index 235bfaecd..655cdb028 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/SecurityTable.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/SecurityTable.java @@ -57,17 +57,6 @@ public class SecurityTable extends Table { .toString(); } - public void removeUser(String user) { - String sql = "DELETE FROM " + tableName + " WHERE (" + USERNAME + "=?)"; - - execute(new ExecStatement(sql) { - @Override - public void prepare(PreparedStatement statement) throws SQLException { - statement.setString(1, user); - } - }); - } - public void addNewUser(WebUser info) { addNewUser(info.getName(), info.getSaltedPassHash(), info.getPermLevel()); } 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 043474b30..05748a3c2 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 @@ -284,7 +284,7 @@ public abstract class CommonDBTest { @Test public void webUserIsRemoved() throws DBInitException { webUserIsRegistered(); - db.getSecurityTable().removeUser(TestConstants.PLAYER_ONE_NAME); + db.executeTransaction(new RemoveWebUserTransaction(TestConstants.PLAYER_ONE_NAME)); assertFalse(db.query(OptionalFetchQueries.fetchWebUser(TestConstants.PLAYER_ONE_NAME)).isPresent()); }