mirror of
https://github.com/TotalFreedomMC/TF-ProjectKorra.git
synced 2024-09-30 22:13:21 +00:00
Make DBConnection#init sync and remove async from bending player creation (#562)
* Add optional 'async' boolean parameter to Database, make DBConnection#init sync * Add temporary debug message * Add 'syncronized' keyword to doQuery method on Database (just in case I/O errors) * Remove unnecessary (and breaking) async from bending player creation * Add javadoc to Database#modifyQuery(String, Boolean)
This commit is contained in:
parent
5a351f3f25
commit
7530e0bae1
|
@ -266,12 +266,13 @@ public class GeneralMethods {
|
|||
* @throws SQLException
|
||||
*/
|
||||
public static void createBendingPlayer(final UUID uuid, final String player) {
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
createBendingPlayerAsynchronously(uuid, player);
|
||||
}
|
||||
}.runTaskAsynchronously(ProjectKorra.plugin);
|
||||
// new BukkitRunnable() {
|
||||
// @Override
|
||||
// public void run() {
|
||||
// createBendingPlayerAsynchronously(uuid, player);
|
||||
// }
|
||||
// }.runTaskAsynchronously(ProjectKorra.plugin);
|
||||
createBendingPlayerAsynchronously(uuid, player); // "async"
|
||||
}
|
||||
|
||||
private static void createBendingPlayerAsynchronously(final UUID uuid, final String player) {
|
||||
|
|
|
@ -31,16 +31,16 @@ public class DBConnection {
|
|||
if (!sql.tableExists("pk_players")) {
|
||||
ProjectKorra.log.info("Creating pk_players table");
|
||||
String query = "CREATE TABLE `pk_players` (" + "`uuid` varchar(36) NOT NULL," + "`player` varchar(16) NOT NULL," + "`element` varchar(255)," + "`subelement` varchar(255)," + "`permaremoved` varchar(5)," + "`slot1` varchar(255)," + "`slot2` varchar(255)," + "`slot3` varchar(255)," + "`slot4` varchar(255)," + "`slot5` varchar(255)," + "`slot6` varchar(255)," + "`slot7` varchar(255)," + "`slot8` varchar(255)," + "`slot9` varchar(255)," + " PRIMARY KEY (uuid));";
|
||||
sql.modifyQuery(query);
|
||||
sql.modifyQuery(query, false);
|
||||
} else {
|
||||
try {
|
||||
DatabaseMetaData md = sql.connection.getMetaData();
|
||||
if (!md.getColumns(null, null, "pk_players", "subelement").next()) {
|
||||
ProjectKorra.log.info("Updating Database with subelements...");
|
||||
sql.getConnection().setAutoCommit(false);
|
||||
sql.modifyQuery("ALTER TABLE `pk_players` ADD subelement varchar(255);");
|
||||
sql.modifyQuery("ALTER TABLE `pk_players` ADD subelement varchar(255);", false);
|
||||
sql.getConnection().commit();
|
||||
sql.modifyQuery("UPDATE pk_players SET subelement = '-';");
|
||||
sql.modifyQuery("UPDATE pk_players SET subelement = '-';", false);
|
||||
sql.getConnection().setAutoCommit(true);
|
||||
ProjectKorra.log.info("Database Updated.");
|
||||
}
|
||||
|
@ -52,7 +52,7 @@ public class DBConnection {
|
|||
if (!sql.tableExists("pk_presets")) {
|
||||
ProjectKorra.log.info("Creating pk_presets table");
|
||||
String query = "CREATE TABLE `pk_presets` (" + "`uuid` varchar(36) NOT NULL," + "`name` varchar(255) NOT NULL," + "`slot1` varchar(255)," + "`slot2` varchar(255)," + "`slot3` varchar(255)," + "`slot4` varchar(255)," + "`slot5` varchar(255)," + "`slot6` varchar(255)," + "`slot7` varchar(255)," + "`slot8` varchar(255)," + "`slot9` varchar(255)," + " PRIMARY KEY (uuid, name));";
|
||||
sql.modifyQuery(query);
|
||||
sql.modifyQuery(query, false);
|
||||
}
|
||||
} else {
|
||||
sql = new SQLite(ProjectKorra.log, "Establishing SQLite Connection.", "projectkorra.db", ProjectKorra.plugin.getDataFolder().getAbsolutePath());
|
||||
|
@ -66,16 +66,16 @@ public class DBConnection {
|
|||
if (!sql.tableExists("pk_players")) {
|
||||
ProjectKorra.log.info("Creating pk_players table.");
|
||||
String query = "CREATE TABLE `pk_players` (" + "`uuid` TEXT(36) PRIMARY KEY," + "`player` TEXT(16)," + "`element` TEXT(255)," + "`subelement` TEXT(255)," + "`permaremoved` TEXT(5)," + "`slot1` TEXT(255)," + "`slot2` TEXT(255)," + "`slot3` TEXT(255)," + "`slot4` TEXT(255)," + "`slot5` TEXT(255)," + "`slot6` TEXT(255)," + "`slot7` TEXT(255)," + "`slot8` TEXT(255)," + "`slot9` TEXT(255));";
|
||||
sql.modifyQuery(query);
|
||||
sql.modifyQuery(query, false);
|
||||
} else {
|
||||
try {
|
||||
DatabaseMetaData md = sql.connection.getMetaData();
|
||||
if (!md.getColumns(null, null, "pk_players", "subelement").next()) {
|
||||
ProjectKorra.log.info("Updating Database with subelements...");
|
||||
sql.getConnection().setAutoCommit(false);
|
||||
sql.modifyQuery("ALTER TABLE `pk_players` ADD subelement TEXT(255);");
|
||||
sql.modifyQuery("ALTER TABLE `pk_players` ADD subelement TEXT(255);", false);
|
||||
sql.getConnection().commit();
|
||||
sql.modifyQuery("UPDATE pk_players SET subelement = '-';");
|
||||
sql.modifyQuery("UPDATE pk_players SET subelement = '-';", false);
|
||||
sql.getConnection().setAutoCommit(true);
|
||||
ProjectKorra.log.info("Database Updated.");
|
||||
}
|
||||
|
@ -88,7 +88,7 @@ public class DBConnection {
|
|||
if (!sql.tableExists("pk_presets")) {
|
||||
ProjectKorra.log.info("Creating pk_presets table");
|
||||
String query = "CREATE TABLE `pk_presets` (" + "`uuid` TEXT(36)," + "`name` TEXT(255)," + "`slot1` TEXT(255)," + "`slot2` TEXT(255)," + "`slot3` TEXT(255)," + "`slot4` TEXT(255)," + "`slot5` TEXT(255)," + "`slot6` TEXT(255)," + "`slot7` TEXT(255)," + "`slot8` TEXT(255)," + "`slot9` TEXT(255)," + "PRIMARY KEY (uuid, name));";
|
||||
sql.modifyQuery(query);
|
||||
sql.modifyQuery(query, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -76,23 +76,31 @@ public abstract class Database {
|
|||
}
|
||||
|
||||
/**
|
||||
* Queries the Database, for queries which modify data.
|
||||
* Queries the Database, for queries which modify data. Run async by default.
|
||||
*
|
||||
* @param query Query to run
|
||||
*/
|
||||
public void modifyQuery(final String query) {
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
PreparedStatement stmt = connection.prepareStatement(query);
|
||||
stmt.execute();
|
||||
stmt.close();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}.runTaskAsynchronously(ProjectKorra.plugin);
|
||||
modifyQuery(query, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Queries the Databases, for queries which modify data.
|
||||
*
|
||||
* @param query Query to run
|
||||
* @param async If to run asynchronously
|
||||
*/
|
||||
public void modifyQuery(final String query, final boolean async) {
|
||||
if (async) {
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
doQuery(query);
|
||||
}
|
||||
}.runTaskAsynchronously(ProjectKorra.plugin);
|
||||
} else {
|
||||
doQuery(query);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -130,4 +138,15 @@ public abstract class Database {
|
|||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private synchronized void doQuery(final String query) {
|
||||
try {
|
||||
PreparedStatement stmt = connection.prepareStatement(query);
|
||||
stmt.execute();
|
||||
stmt.close();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue