diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/ActionsTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/ActionsTable.java index 46389be90..3f253350d 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/tables/ActionsTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/ActionsTable.java @@ -4,6 +4,7 @@ */ package main.java.com.djrapitops.plan.database.tables; +import com.djrapitops.plugin.utilities.Verify; import main.java.com.djrapitops.plan.Plan; import main.java.com.djrapitops.plan.api.exceptions.DBCreateTableException; import main.java.com.djrapitops.plan.data.Action; @@ -165,7 +166,7 @@ public class ActionsTable extends UserIDTable { } public void insertActions(Map>> allActions) throws SQLException { - if (allActions.isEmpty()) { + if (Verify.isEmpty(allActions)) { return; } PreparedStatement statement = null; diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/IPsTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/IPsTable.java index 5826c56e2..0e3477d46 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/tables/IPsTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/IPsTable.java @@ -1,5 +1,6 @@ package main.java.com.djrapitops.plan.database.tables; +import com.djrapitops.plugin.utilities.Verify; import main.java.com.djrapitops.plan.api.exceptions.DBCreateTableException; import main.java.com.djrapitops.plan.database.databases.SQLDB; import main.java.com.djrapitops.plan.database.sql.Select; @@ -196,7 +197,7 @@ public class IPsTable extends UserIDTable { } public void insertIPsAndGeolocations(Map> allIPsAndGeolocations) throws SQLException { - if (allIPsAndGeolocations.isEmpty()) { + if (Verify.isEmpty(allIPsAndGeolocations)) { return; } PreparedStatement statement = null; diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/NicknamesTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/NicknamesTable.java index 8ed76bc34..2c6a25700 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/tables/NicknamesTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/NicknamesTable.java @@ -1,5 +1,6 @@ package main.java.com.djrapitops.plan.database.tables; +import com.djrapitops.plugin.utilities.Verify; import main.java.com.djrapitops.plan.Plan; import main.java.com.djrapitops.plan.api.exceptions.DBCreateTableException; import main.java.com.djrapitops.plan.database.databases.SQLDB; @@ -200,7 +201,7 @@ public class NicknamesTable extends UserIDTable { } public void insertNicknames(Map>> allNicknames) throws SQLException { - if (allNicknames.isEmpty()) { + if (Verify.isEmpty(allNicknames)) { return; } PreparedStatement statement = null; diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/SecurityTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/SecurityTable.java index 6ad566999..cf5be42f3 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/tables/SecurityTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/SecurityTable.java @@ -5,6 +5,7 @@ */ package main.java.com.djrapitops.plan.database.tables; +import com.djrapitops.plugin.utilities.Verify; import main.java.com.djrapitops.plan.Log; import main.java.com.djrapitops.plan.api.exceptions.DBCreateTableException; import main.java.com.djrapitops.plan.data.WebUser; @@ -28,9 +29,14 @@ public class SecurityTable extends Table { private final String columnUser = "username"; private final String columnSaltedHash = "salted_pass_hash"; private final String columnPermLevel = "permission_level"; + private String insertStatement; public SecurityTable(SQLDB db, boolean usingMySQL) { super("plan_security", db, usingMySQL); + insertStatement = Insert.values(tableName, + columnUser, + columnSaltedHash, + columnPermLevel); } @Override @@ -67,10 +73,7 @@ public class SecurityTable extends Table { public void addNewUser(String user, String saltPassHash, int permLevel) throws SQLException { PreparedStatement statement = null; try { - statement = prepareStatement(Insert.values(tableName, - columnUser, - columnSaltedHash, - columnPermLevel)); + statement = prepareStatement(insertStatement); statement.setString(1, user); statement.setString(2, saltPassHash); statement.setInt(3, permLevel); @@ -110,6 +113,7 @@ public class SecurityTable extends Table { ResultSet set = null; try { statement = prepareStatement(Select.all(tableName).toString()); + statement.setFetchSize(5000); set = statement.executeQuery(); List list = new ArrayList<>(); while (set.next()) { @@ -125,4 +129,29 @@ public class SecurityTable extends Table { close(set, statement); } } + + public void addUsers(List users) throws SQLException { + if (Verify.isEmpty(users)) { + return; + } + PreparedStatement statement = null; + try { + statement = prepareStatement(insertStatement); + for (WebUser user : users) { + String userName = user.getName(); + String pass = user.getSaltedPassHash(); + int permLvl = user.getPermLevel(); + + statement.setString(1, userName); + statement.setString(2, pass); + statement.setInt(3, permLvl); + statement.addBatch(); + } + + statement.executeBatch(); + commit(statement.getConnection()); + } finally { + close(statement); + } + } } diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/move/BatchOperationTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/move/BatchOperationTable.java index bbdfcca50..658d0fd61 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/tables/move/BatchOperationTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/move/BatchOperationTable.java @@ -25,6 +25,8 @@ import java.util.UUID; * The copy methods assume that the table has been cleared, or that no duplicate data will be entered for a user. *

* clearTable methods can be used to clear the table beforehand. + *

+ * Server & User tables should be copied first. * * @author Rsl1122 * @since 4.0.0 @@ -62,4 +64,8 @@ public class BatchOperationTable extends Table { public void copyNicknames(BatchOperationTable toDB) throws SQLException { toDB.db.getNicknamesTable().insertNicknames(db.getNicknamesTable().getAllNicknames()); } + + public void copyWebUsers(BatchOperationTable toDB) throws SQLException { + toDB.db.getSecurityTable().addUsers(db.getSecurityTable().getUsers()); + } } \ No newline at end of file