diff --git a/src/de/diddiz/LogBlock/DumpedLogImporter.java b/src/de/diddiz/LogBlock/DumpedLogImporter.java new file mode 100644 index 0000000..7fecda0 --- /dev/null +++ b/src/de/diddiz/LogBlock/DumpedLogImporter.java @@ -0,0 +1,69 @@ +package de.diddiz.LogBlock; + +import static de.diddiz.util.Utils.newline; +import static org.bukkit.Bukkit.getLogger; +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.sql.Connection; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.logging.Level; +import de.diddiz.util.Utils.ExtensionFilenameFilter; + +public class DumpedLogImporter implements Runnable +{ + private final LogBlock logblock; + + DumpedLogImporter(LogBlock logblock) { + this.logblock = logblock; + } + + @Override + public void run() { + final File[] imports = new File("plugins/LogBlock/import/").listFiles(new ExtensionFilenameFilter("sql")); + if (imports != null && imports.length > 0) { + getLogger().info("[LogBlock] Found " + imports.length + " imports."); + Connection conn = null; + try { + conn = logblock.getConnection(); + if (conn == null) + return; + conn.setAutoCommit(false); + final Statement st = conn.createStatement(); + final BufferedWriter writer = new BufferedWriter(new FileWriter(new File(logblock.getDataFolder(), "import/failed.txt"))); + int successes = 0, errors = 0; + for (final File sqlFile : imports) { + getLogger().info("[LogBlock] Trying to import " + sqlFile.getName() + " ..."); + final BufferedReader reader = new BufferedReader(new FileReader(sqlFile)); + String line = null; + while ((line = reader.readLine()) != null) + try { + st.execute(line); + successes++; + } catch (final Exception ex) { + getLogger().warning("[LogBlock] Error while importing: '" + line + "': " + ex.getMessage()); + writer.write(line + newline); + errors++; + } + conn.commit(); + reader.close(); + sqlFile.delete(); + getLogger().info("[LogBlock] Successfully imported " + sqlFile.getName() + "."); + } + writer.close(); + st.close(); + getLogger().info("[LogBlock] Successfully imported stored queue. (" + successes + " rows imported, " + errors + " errors)"); + } catch (final Exception ex) { + getLogger().log(Level.WARNING, "[LogBlock] Error while importing: ", ex); + } finally { + if (conn != null) + try { + conn.close(); + } catch (final SQLException ex) {} + } + } + } +} diff --git a/src/de/diddiz/LogBlock/LogBlock.java b/src/de/diddiz/LogBlock/LogBlock.java index cbf78e2..752b2ea 100644 --- a/src/de/diddiz/LogBlock/LogBlock.java +++ b/src/de/diddiz/LogBlock/LogBlock.java @@ -2,12 +2,8 @@ package de.diddiz.LogBlock; import static de.diddiz.util.Utils.download; import static org.bukkit.Bukkit.getLogger; -import java.io.BufferedReader; -import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.FileWriter; import java.net.URL; import java.sql.Connection; import java.sql.ResultSet; @@ -33,8 +29,6 @@ import com.nijiko.permissions.PermissionHandler; import com.nijikokun.bukkit.Permissions.Permissions; import de.diddiz.LogBlock.QueryParams.BlockChangeType; import de.diddiz.util.MySQLConnectionPool; -import de.diddiz.util.Utils; -import de.diddiz.util.Utils.ExtensionFilenameFilter; public class LogBlock extends JavaPlugin { @@ -87,7 +81,6 @@ public class LogBlock extends JavaPlugin if (updater.update()) config = new Config(this); updater.checkTables(); - doImports(); } catch (final Exception ex) { getLogger().severe("[LogBlock] Error while loading: " + ex.getMessage()); errorAtLoading = true; @@ -96,49 +89,6 @@ public class LogBlock extends JavaPlugin consumer = new Consumer(this); } - private void doImports() { - final File[] imports = new File("plugins/LogBlock/import/").listFiles(new ExtensionFilenameFilter("sql")); - if (imports != null && imports.length > 0) { - getLogger().info("[LogBlock] Found " + imports.length + " imports."); - Connection conn = null; - try { - conn = getConnection(); - conn.setAutoCommit(false); - final Statement st = conn.createStatement(); - final BufferedWriter writer = new BufferedWriter(new FileWriter(new File(getDataFolder(), "import/failed.txt"))); - int successes = 0, errors = 0; - for (final File sqlFile : imports) { - getLogger().info("[LogBlock] Trying to import " + sqlFile.getName() + " ..."); - final BufferedReader reader = new BufferedReader(new FileReader(sqlFile)); - String line = null; - while ((line = reader.readLine()) != null) - try { - st.execute(line); - successes++; - } catch (final Exception ex) { - getLogger().warning("[LogBlock] Error while importing: '" + line + "': " + ex.getMessage()); - writer.write(line + Utils.newline); - errors++; - } - conn.commit(); - reader.close(); - sqlFile.delete(); - getLogger().info("[LogBlock] Successfully imported " + sqlFile.getName() + "."); - } - writer.close(); - st.close(); - getLogger().info("[LogBlock] Successfully imported stored queue. (" + successes + " rows imported, " + errors + " errors)"); - } catch (final Exception ex) { - getLogger().log(Level.WARNING, "[LogBlock] Error while importing: ", ex); - } finally { - if (conn != null) - try { - conn.close(); - } catch (final SQLException ex) {} - } - } - } - @Override public void onEnable() { final PluginManager pm = getServer().getPluginManager(); @@ -192,6 +142,7 @@ public class LogBlock extends JavaPlugin } } } + getServer().getScheduler().scheduleAsyncDelayedTask(this, new DumpedLogImporter(this)); final LBBlockListener lbBlockListener = new LBBlockListener(this); final LBPlayerListener lbPlayerListener = new LBPlayerListener(this); final LBEntityListener lbEntityListener = new LBEntityListener(this);