#784 Separate purge execution and purge task creation

- Delete accounts in PurgeExecutor, after permission check
This commit is contained in:
ljacqu
2016-07-17 17:33:25 +02:00
parent 2a4cda0709
commit 5953bfd012
10 changed files with 250 additions and 179 deletions
@@ -15,6 +15,7 @@ import fr.xephi.authme.cache.auth.PlayerCache;
import fr.xephi.authme.security.crypts.HashedPassword;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import java.util.concurrent.Callable;
@@ -184,7 +185,7 @@ public class CacheDataSource implements DataSource {
}
@Override
public void purgeRecords(final Set<String> banned) {
public void purgeRecords(final Collection<String> banned) {
source.purgeRecords(banned);
cachedAuths.invalidateAll(banned);
}
@@ -4,6 +4,7 @@ import fr.xephi.authme.cache.auth.PlayerAuth;
import fr.xephi.authme.initialization.Reloadable;
import fr.xephi.authme.security.crypts.HashedPassword;
import java.util.Collection;
import java.util.List;
import java.util.Set;
@@ -82,7 +83,7 @@ public interface DataSource extends Reloadable {
*
* @param toPurge The players to purge
*/
void purgeRecords(Set<String> toPurge);
void purgeRecords(Collection<String> toPurge);
/**
* Remove a user record from the database.
@@ -17,6 +17,7 @@ import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -256,7 +257,7 @@ public class FlatFile implements DataSource {
}
@Override
public void purgeRecords(Set<String> toPurge) {
public void purgeRecords(Collection<String> toPurge) {
BufferedReader br = null;
BufferedWriter bw = null;
ArrayList<String> lines = new ArrayList<>();
@@ -23,6 +23,7 @@ import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -693,7 +694,7 @@ public class MySQL implements DataSource {
}
@Override
public void purgeRecords(Set<String> toPurge) {
public void purgeRecords(Collection<String> toPurge) {
String sql = "DELETE FROM " + tableName + " WHERE " + col.NAME + "=?;";
try (Connection con = getConnection(); PreparedStatement pst = con.prepareStatement(sql)) {
for (String name : toPurge) {
@@ -16,6 +16,7 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -317,7 +318,7 @@ public class SQLite implements DataSource {
}
@Override
public void purgeRecords(Set<String> toPurge) {
public void purgeRecords(Collection<String> toPurge) {
String delete = "DELETE FROM " + tableName + " WHERE " + col.NAME + "=?;";
try (PreparedStatement deletePst = con.prepareStatement(delete)) {
for (String name : toPurge) {