Browse Source

Actually make use of the checkConnected calls.

GJ 11 years ago
parent
commit
c98d298cf1
1 changed files with 53 additions and 26 deletions
  1. 53 26
      src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java

+ 53 - 26
src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java

@@ -51,12 +51,14 @@ public final class SQLDatabaseManager implements DatabaseManager {
     private int reconnectAttempt = 0;
 
     protected SQLDatabaseManager() {
-        checkConnected();
         checkStructure();
     }
 
     public void purgePowerlessUsers() {
-        checkConnected();
+        if (!checkConnected()) {
+            return;
+        }
+
         mcMMO.p.getLogger().info("Purging powerless users...");
 
         Collection<ArrayList<String>> usernames = read("SELECT u.user FROM " + tablePrefix + "skills AS s, " + tablePrefix + "users AS u WHERE s.user_id = u.id AND (s.taming+s.mining+s.woodcutting+s.repair+s.unarmed+s.herbalism+s.excavation+s.archery+s.swords+s.axes+s.acrobatics+s.fishing) = 0").values();
@@ -73,7 +75,10 @@ public final class SQLDatabaseManager implements DatabaseManager {
     }
 
     public void purgeOldUsers() {
-        checkConnected();
+        if (!checkConnected()) {
+            return;
+        }
+
         long currentTime = System.currentTimeMillis();
 
         mcMMO.p.getLogger().info("Purging old users...");
@@ -92,7 +97,10 @@ public final class SQLDatabaseManager implements DatabaseManager {
     }
 
     public boolean removeUser(String playerName) {
-        checkConnected();
+        if (!checkConnected()) {
+            return false;
+        }
+
         boolean success = update("DELETE FROM u, e, h, s, c " +
                 "USING " + tablePrefix + "users u " +
                 "JOIN " + tablePrefix + "experience e ON (u.id = e.user_id) " +
@@ -107,7 +115,10 @@ public final class SQLDatabaseManager implements DatabaseManager {
     }
 
     public void saveUser(PlayerProfile profile) {
-        checkConnected();
+        if (!checkConnected()) {
+            return;
+        }
+
         int userId = readId(profile.getPlayerName());
         if (userId == -1) {
             newUser(profile.getPlayerName());
@@ -303,7 +314,10 @@ public final class SQLDatabaseManager implements DatabaseManager {
     }
 
     public void newUser(String playerName) {
-        checkConnected();
+        if (!checkConnected()) {
+            return;
+        }
+
         PreparedStatement statement = null;
 
         try {
@@ -331,7 +345,10 @@ public final class SQLDatabaseManager implements DatabaseManager {
     }
 
     public PlayerProfile loadPlayerProfile(String playerName, boolean create) {
-        checkConnected();
+        if (!checkConnected()) {
+            return loadPlayerProfile(playerName, false); //Retry if not connected
+        }
+
         PreparedStatement statement = null;
 
         try {
@@ -396,7 +413,10 @@ public final class SQLDatabaseManager implements DatabaseManager {
     }
 
     public void convertUsers(DatabaseManager destination) {
-        checkConnected();
+        if (!checkConnected()) {
+            return;
+        }
+
         PreparedStatement statement = null;
 
         try {
@@ -532,29 +552,32 @@ public final class SQLDatabaseManager implements DatabaseManager {
     }
 
     public List<String> getStoredUsers() {
-        checkConnected();
         ArrayList<String> users = new ArrayList<String>();
-        Statement stmt = null;
-        try {
-            stmt = connection.createStatement();
-            ResultSet result = stmt.executeQuery("SELECT user FROM " + tablePrefix + "users");
-            while (result.next()) {
-                users.add(result.getString("user"));
+
+        if (checkConnected()) {
+            Statement stmt = null;
+            try {
+                stmt = connection.createStatement();
+                ResultSet result = stmt.executeQuery("SELECT user FROM " + tablePrefix + "users");
+                while (result.next()) {
+                    users.add(result.getString("user"));
+                }
+                result.close();
             }
-            result.close();
-        }
-        catch (SQLException e) {
-            printErrors(e);
-        }
-        finally {
-            if (stmt != null) {
-                try {
-                    stmt.close();
-                } catch (SQLException e) {
-                    // Ignore
+            catch (SQLException e) {
+                printErrors(e);
+            }
+            finally {
+                if (stmt != null) {
+                    try {
+                        stmt.close();
+                    } catch (SQLException e) {
+                        // Ignore
+                    }
                 }
             }
         }
+
         return users;
     }
 
@@ -599,6 +622,10 @@ public final class SQLDatabaseManager implements DatabaseManager {
      * Checks that the database structure is present and correct
      */
     private void checkStructure() {
+        if (!checkConnected()) {
+            return;
+        }
+
         write("CREATE TABLE IF NOT EXISTS `" + tablePrefix + "users` ("
                 + "`id` int(10) unsigned NOT NULL AUTO_INCREMENT,"
                 + "`user` varchar(40) NOT NULL,"