mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-29 16:46:46 +01:00
Further cleanup of SQLDatabaseManager upgrades
This commit is contained in:
parent
1c4ac1d766
commit
7d0fd36a2a
@ -623,7 +623,6 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|||||||
|
|
||||||
public boolean saveUserUUIDs(Map<String, UUID> fetchedUUIDs) {
|
public boolean saveUserUUIDs(Map<String, UUID> fetchedUUIDs) {
|
||||||
if (!checkConnected()) {
|
if (!checkConnected()) {
|
||||||
// return false
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -637,6 +636,8 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|||||||
statement.setString(1, entry.getValue().toString());
|
statement.setString(1, entry.getValue().toString());
|
||||||
statement.setString(2, entry.getKey());
|
statement.setString(2, entry.getKey());
|
||||||
|
|
||||||
|
statement.addBatch();
|
||||||
|
|
||||||
count++;
|
count++;
|
||||||
|
|
||||||
if ((count % 500) == 0) {
|
if ((count % 500) == 0) {
|
||||||
@ -922,144 +923,42 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Statement statement = null;
|
Statement statement = null;
|
||||||
ResultSet resultSet = null;
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
statement = connection.createStatement();
|
statement = connection.createStatement();
|
||||||
|
|
||||||
switch (upgrade) {
|
switch (upgrade) {
|
||||||
case ADD_FISHING:
|
case ADD_FISHING:
|
||||||
try {
|
checkUpgradeAddFishing(statement);
|
||||||
statement.executeQuery("SELECT `fishing` FROM `" + tablePrefix + "skills` LIMIT 1");
|
|
||||||
}
|
|
||||||
catch (SQLException ex) {
|
|
||||||
mcMMO.p.getLogger().info("Updating mcMMO MySQL tables for Fishing...");
|
|
||||||
statement.executeQuery("ALTER TABLE `" + tablePrefix + "skills` ADD `fishing` int(10) NOT NULL DEFAULT '0'");
|
|
||||||
statement.executeQuery("ALTER TABLE `" + tablePrefix + "experience` ADD `fishing` int(10) NOT NULL DEFAULT '0'");
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ADD_BLAST_MINING_COOLDOWN:
|
case ADD_BLAST_MINING_COOLDOWN:
|
||||||
try {
|
checkUpgradeAddBlastMiningCooldown(statement);
|
||||||
statement.executeQuery("SELECT `blast_mining` FROM `" + tablePrefix + "cooldowns` LIMIT 1");
|
|
||||||
}
|
|
||||||
catch (SQLException ex) {
|
|
||||||
mcMMO.p.getLogger().info("Updating mcMMO MySQL tables for Blast Mining...");
|
|
||||||
statement.executeQuery("ALTER TABLE `" + tablePrefix + "cooldowns` ADD `blast_mining` int(32) NOT NULL DEFAULT '0'");
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ADD_SQL_INDEXES:
|
case ADD_SQL_INDEXES:
|
||||||
resultSet = statement.executeQuery("SHOW INDEX FROM `" + tablePrefix + "skills` WHERE `Key_name` LIKE 'idx\\_%'");
|
checkUpgradeAddSQLIndexes(statement);
|
||||||
resultSet.last();
|
|
||||||
|
|
||||||
if (resultSet.getRow() != SkillType.NON_CHILD_SKILLS.size()) {
|
|
||||||
mcMMO.p.getLogger().info("Indexing tables, this may take a while on larger databases");
|
|
||||||
|
|
||||||
for (SkillType skill : SkillType.NON_CHILD_SKILLS) {
|
|
||||||
String skill_name = skill.name().toLowerCase();
|
|
||||||
|
|
||||||
try {
|
|
||||||
statement.executeUpdate("ALTER TABLE `" + tablePrefix + "skills` ADD INDEX `idx_" + skill_name + "` (`" + skill_name + "`) USING BTREE");
|
|
||||||
}
|
|
||||||
catch (SQLException ex) {
|
|
||||||
// Ignore
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ADD_MOB_HEALTHBARS:
|
case ADD_MOB_HEALTHBARS:
|
||||||
try {
|
checkUpgradeAddMobHealthbars(statement);
|
||||||
statement.executeQuery("SELECT `mobhealthbar` FROM `" + tablePrefix + "huds` LIMIT 1");
|
|
||||||
}
|
|
||||||
catch (SQLException ex) {
|
|
||||||
mcMMO.p.getLogger().info("Updating mcMMO MySQL tables for mob healthbars...");
|
|
||||||
statement.executeQuery("ALTER TABLE `" + tablePrefix + "huds` ADD `mobhealthbar` varchar(50) NOT NULL DEFAULT '" + Config.getInstance().getMobHealthbarDefault() + "'");
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DROP_SQL_PARTY_NAMES:
|
case DROP_SQL_PARTY_NAMES:
|
||||||
try {
|
checkUpgradeDropPartyNames(statement);
|
||||||
resultSet = statement.executeQuery("SELECT * FROM `" + tablePrefix + "users` LIMIT 1");
|
|
||||||
|
|
||||||
ResultSetMetaData rsmeta = resultSet.getMetaData();
|
|
||||||
boolean column_exists = false;
|
|
||||||
|
|
||||||
for (int i = 1; i <= rsmeta.getColumnCount(); i++) {
|
|
||||||
if (rsmeta.getColumnName(i).equalsIgnoreCase("party")) {
|
|
||||||
column_exists = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (column_exists) {
|
|
||||||
mcMMO.p.getLogger().info("Removing party name from users table...");
|
|
||||||
statement.executeQuery("ALTER TABLE `" + tablePrefix + "users` DROP COLUMN `party`");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (SQLException ex) {
|
|
||||||
// Ignore
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DROP_SPOUT:
|
case DROP_SPOUT:
|
||||||
try {
|
checkUpgradeDropSpout(statement);
|
||||||
resultSet = statement.executeQuery("SELECT * FROM `" + tablePrefix + "huds` LIMIT 1");
|
|
||||||
|
|
||||||
ResultSetMetaData rsmeta = resultSet.getMetaData();
|
|
||||||
boolean column_exists = false;
|
|
||||||
|
|
||||||
for (int i = 1; i <= rsmeta.getColumnCount(); i++) {
|
|
||||||
if (rsmeta.getColumnName(i).equalsIgnoreCase("hudtype")) {
|
|
||||||
column_exists = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (column_exists) {
|
|
||||||
mcMMO.p.getLogger().info("Removing Spout HUD type from huds table...");
|
|
||||||
statement.executeQuery("ALTER TABLE `" + tablePrefix + "huds` DROP COLUMN `hudtype`");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (SQLException ex) {
|
|
||||||
// Ignore
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ADD_ALCHEMY:
|
case ADD_ALCHEMY:
|
||||||
try {
|
checkUpgradeAddAlchemy(statement);
|
||||||
statement.executeQuery("SELECT `alchemy` FROM `" + tablePrefix + "skills` LIMIT 1");
|
|
||||||
}
|
|
||||||
catch (SQLException ex) {
|
|
||||||
mcMMO.p.getLogger().info("Updating mcMMO MySQL tables for Alchemy...");
|
|
||||||
statement.executeQuery("ALTER TABLE `" + tablePrefix + "skills` ADD `alchemy` int(10) NOT NULL DEFAULT '0'");
|
|
||||||
statement.executeQuery("ALTER TABLE `" + tablePrefix + "experience` ADD `alchemy` int(10) NOT NULL DEFAULT '0'");
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ADD_UUIDS:
|
case ADD_UUIDS:
|
||||||
try {
|
checkUpgradeAddUUIDs(statement);
|
||||||
statement.executeQuery("SELECT `uuid` FROM `" + tablePrefix + "users` LIMIT 1");
|
return;
|
||||||
}
|
|
||||||
catch (SQLException ex) {
|
|
||||||
mcMMO.p.getLogger().info("Adding UUIDs to mcMMO MySQL user table...");
|
|
||||||
|
|
||||||
statement.executeQuery("ALTER TABLE `" + tablePrefix + "users` ADD `uuid` varchar(36) NOT NULL DEFAULT ''");
|
|
||||||
|
|
||||||
final List<String> names = new ArrayList<String>();
|
|
||||||
|
|
||||||
resultSet = statement.executeQuery("SELECT `user` FROM `" + tablePrefix + "users`");
|
|
||||||
|
|
||||||
while (resultSet.next()) {
|
|
||||||
names.add(resultSet.getString("user"));
|
|
||||||
}
|
|
||||||
|
|
||||||
new UUIDUpdateAsyncTask(mcMMO.p, names).runTaskAsynchronously(mcMMO.p);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -1069,17 +968,9 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|||||||
mcMMO.getUpgradeManager().setUpgradeCompleted(upgrade);
|
mcMMO.getUpgradeManager().setUpgradeCompleted(upgrade);
|
||||||
}
|
}
|
||||||
catch (SQLException ex) {
|
catch (SQLException ex) {
|
||||||
|
printErrors(ex);
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
if (resultSet != null) {
|
|
||||||
try {
|
|
||||||
resultSet.close();
|
|
||||||
}
|
|
||||||
catch (SQLException e) {
|
|
||||||
// Ignore
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (statement != null) {
|
if (statement != null) {
|
||||||
try {
|
try {
|
||||||
statement.close();
|
statement.close();
|
||||||
@ -1531,4 +1422,217 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|||||||
public DatabaseType getDatabaseType() {
|
public DatabaseType getDatabaseType() {
|
||||||
return DatabaseType.SQL;
|
return DatabaseType.SQL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void checkUpgradeAddAlchemy(final Statement statement) throws SQLException {
|
||||||
|
try {
|
||||||
|
statement.executeQuery("SELECT `alchemy` FROM `" + tablePrefix + "skills` LIMIT 1");
|
||||||
|
}
|
||||||
|
catch (SQLException ex) {
|
||||||
|
mcMMO.p.getLogger().info("Updating mcMMO MySQL tables for Alchemy...");
|
||||||
|
statement.executeUpdate("ALTER TABLE `" + tablePrefix + "skills` ADD `alchemy` int(10) NOT NULL DEFAULT '0'");
|
||||||
|
statement.executeUpdate("ALTER TABLE `" + tablePrefix + "experience` ADD `alchemy` int(10) NOT NULL DEFAULT '0'");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkUpgradeAddBlastMiningCooldown(final Statement statement) throws SQLException {
|
||||||
|
try {
|
||||||
|
statement.executeQuery("SELECT `blast_mining` FROM `" + tablePrefix + "cooldowns` LIMIT 1");
|
||||||
|
}
|
||||||
|
catch (SQLException ex) {
|
||||||
|
mcMMO.p.getLogger().info("Updating mcMMO MySQL tables for Blast Mining...");
|
||||||
|
statement.executeUpdate("ALTER TABLE `" + tablePrefix + "cooldowns` ADD `blast_mining` int(32) NOT NULL DEFAULT '0'");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkUpgradeAddFishing(final Statement statement) throws SQLException {
|
||||||
|
try {
|
||||||
|
statement.executeQuery("SELECT `fishing` FROM `" + tablePrefix + "skills` LIMIT 1");
|
||||||
|
}
|
||||||
|
catch (SQLException ex) {
|
||||||
|
mcMMO.p.getLogger().info("Updating mcMMO MySQL tables for Fishing...");
|
||||||
|
statement.executeUpdate("ALTER TABLE `" + tablePrefix + "skills` ADD `fishing` int(10) NOT NULL DEFAULT '0'");
|
||||||
|
statement.executeUpdate("ALTER TABLE `" + tablePrefix + "experience` ADD `fishing` int(10) NOT NULL DEFAULT '0'");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkUpgradeAddMobHealthbars(final Statement statement) throws SQLException {
|
||||||
|
try {
|
||||||
|
statement.executeQuery("SELECT `mobhealthbar` FROM `" + tablePrefix + "huds` LIMIT 1");
|
||||||
|
}
|
||||||
|
catch (SQLException ex) {
|
||||||
|
mcMMO.p.getLogger().info("Updating mcMMO MySQL tables for mob healthbars...");
|
||||||
|
statement.executeUpdate("ALTER TABLE `" + tablePrefix + "huds` ADD `mobhealthbar` varchar(50) NOT NULL DEFAULT '" + Config.getInstance().getMobHealthbarDefault() + "'");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkUpgradeAddSQLIndexes(final Statement statement) throws SQLException {
|
||||||
|
ResultSet resultSet = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
resultSet = statement.executeQuery("SHOW INDEX FROM `" + tablePrefix + "skills` WHERE `Key_name` LIKE 'idx\\_%'");
|
||||||
|
resultSet.last();
|
||||||
|
|
||||||
|
if (resultSet.getRow() != SkillType.NON_CHILD_SKILLS.size()) {
|
||||||
|
mcMMO.p.getLogger().info("Indexing tables, this may take a while on larger databases");
|
||||||
|
|
||||||
|
for (SkillType skill : SkillType.NON_CHILD_SKILLS) {
|
||||||
|
String skill_name = skill.name().toLowerCase();
|
||||||
|
|
||||||
|
try {
|
||||||
|
statement.executeUpdate("ALTER TABLE `" + tablePrefix + "skills` ADD INDEX `idx_" + skill_name + "` (`" + skill_name + "`) USING BTREE");
|
||||||
|
}
|
||||||
|
catch (SQLException ex) {
|
||||||
|
// Ignore
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (SQLException ex) {
|
||||||
|
printErrors(ex);
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
if (resultSet != null) {
|
||||||
|
try {
|
||||||
|
resultSet.close();
|
||||||
|
}
|
||||||
|
catch (SQLException e) {
|
||||||
|
// Ignore
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkUpgradeAddUUIDs(final Statement statement) {
|
||||||
|
List<String> names = new ArrayList<String>();
|
||||||
|
ResultSet resultSet = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
resultSet = statement.executeQuery("SELECT * FROM `" + tablePrefix + "users` LIMIT 1");
|
||||||
|
|
||||||
|
ResultSetMetaData rsmeta = resultSet.getMetaData();
|
||||||
|
boolean column_exists = false;
|
||||||
|
|
||||||
|
for (int i = 1; i <= rsmeta.getColumnCount(); i++) {
|
||||||
|
if (rsmeta.getColumnName(i).equalsIgnoreCase("uuid")) {
|
||||||
|
column_exists = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!column_exists) {
|
||||||
|
mcMMO.p.getLogger().info("Adding UUIDs to mcMMO MySQL user table...");
|
||||||
|
statement.executeUpdate("ALTER TABLE `" + tablePrefix + "users` ADD `uuid` varchar(36) NOT NULL DEFAULT ''");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (SQLException ex) {
|
||||||
|
printErrors(ex);
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
if (resultSet != null) {
|
||||||
|
try {
|
||||||
|
resultSet.close();
|
||||||
|
}
|
||||||
|
catch (SQLException e) {
|
||||||
|
// Ignore
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
resultSet = statement.executeQuery("SELECT `user` FROM `" + tablePrefix + "users` WHERE `uuid` = ''");
|
||||||
|
|
||||||
|
while (resultSet.next()) {
|
||||||
|
names.add(resultSet.getString("user"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (SQLException ex) {
|
||||||
|
printErrors(ex);
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
if (resultSet != null) {
|
||||||
|
try {
|
||||||
|
resultSet.close();
|
||||||
|
}
|
||||||
|
catch (SQLException e) {
|
||||||
|
// Ignore
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!names.isEmpty()) {
|
||||||
|
new UUIDUpdateAsyncTask(mcMMO.p, names).runTaskAsynchronously(mcMMO.p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkUpgradeDropPartyNames(final Statement statement) {
|
||||||
|
ResultSet resultSet = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
resultSet = statement.executeQuery("SELECT * FROM `" + tablePrefix + "users` LIMIT 1");
|
||||||
|
|
||||||
|
ResultSetMetaData rsmeta = resultSet.getMetaData();
|
||||||
|
boolean column_exists = false;
|
||||||
|
|
||||||
|
for (int i = 1; i <= rsmeta.getColumnCount(); i++) {
|
||||||
|
if (rsmeta.getColumnName(i).equalsIgnoreCase("party")) {
|
||||||
|
column_exists = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (column_exists) {
|
||||||
|
mcMMO.p.getLogger().info("Removing party name from users table...");
|
||||||
|
statement.executeUpdate("ALTER TABLE `" + tablePrefix + "users` DROP COLUMN `party`");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (SQLException ex) {
|
||||||
|
printErrors(ex);
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
if (resultSet != null) {
|
||||||
|
try {
|
||||||
|
resultSet.close();
|
||||||
|
}
|
||||||
|
catch (SQLException e) {
|
||||||
|
// Ignore
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkUpgradeDropSpout(final Statement statement) {
|
||||||
|
ResultSet resultSet = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
resultSet = statement.executeQuery("SELECT * FROM `" + tablePrefix + "huds` LIMIT 1");
|
||||||
|
|
||||||
|
ResultSetMetaData rsmeta = resultSet.getMetaData();
|
||||||
|
boolean column_exists = false;
|
||||||
|
|
||||||
|
for (int i = 1; i <= rsmeta.getColumnCount(); i++) {
|
||||||
|
if (rsmeta.getColumnName(i).equalsIgnoreCase("hudtype")) {
|
||||||
|
column_exists = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (column_exists) {
|
||||||
|
mcMMO.p.getLogger().info("Removing Spout HUD type from huds table...");
|
||||||
|
statement.executeUpdate("ALTER TABLE `" + tablePrefix + "huds` DROP COLUMN `hudtype`");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (SQLException ex) {
|
||||||
|
printErrors(ex);
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
if (resultSet != null) {
|
||||||
|
try {
|
||||||
|
resultSet.close();
|
||||||
|
}
|
||||||
|
catch (SQLException e) {
|
||||||
|
// Ignore
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user