Removed static and public fields.

This commit is contained in:
Robin Kupper
2011-04-16 17:53:18 +02:00
parent 1356a762af
commit 74d662b00c
15 changed files with 274 additions and 198 deletions

View File

@@ -6,6 +6,7 @@ import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Location; import org.bukkit.Location;
@@ -14,20 +15,22 @@ import org.bukkit.entity.Player;
public class AreaBlockSearch implements Runnable public class AreaBlockSearch implements Runnable
{ {
private Player player; private final Logger log;
private Location location; private final Player player;
private int type; private final Location location;
private int size; private final int type;
private Connection conn = null; private final int size;
private String table; private final Connection conn;
private final String table;
AreaBlockSearch(Connection conn, Player player, int type, int size, String table) { AreaBlockSearch(LogBlock logblock, Player player, int type, int size) {
this.player = player; this.player = player;
this.location = player.getLocation(); this.location = player.getLocation();
this.type = type; this.type = type;
this.size = size; this.size = size;
this.conn = conn; log = logblock.getServer().getLogger();
this.table = table; conn = logblock.getConnection();
table = logblock.getConfig().tables.get(player.getWorld().getName().hashCode());
} }
public void run() { public void run() {
@@ -36,8 +39,16 @@ public class AreaBlockSearch implements Runnable
ResultSet rs = null; ResultSet rs = null;
SimpleDateFormat formatter = new SimpleDateFormat("MM-dd HH:mm:ss"); SimpleDateFormat formatter = new SimpleDateFormat("MM-dd HH:mm:ss");
try { try {
if (conn == null) {
player.sendMessage(ChatColor.RED + "Failed to create database connection");
return;
}
if (table == null) {
player.sendMessage(ChatColor.RED + "This world isn't logged");
return;
}
conn.setAutoCommit(false); conn.setAutoCommit(false);
ps = conn.prepareStatement("SELECT * FROM `" + table + "` INNER JOIN `lb-players` USING (`playerid`) WHERE (type = ? or replaced = ?) and y > ? and y < ? and x > ? and x < ? and z > ? and z < ? order by date desc limit 10"); ps = conn.prepareStatement("SELECT * FROM `" + table + "` INNER JOIN `lb-players` USING (playerid) WHERE (type = ? or replaced = ?) and y > ? and y < ? and x > ? and x < ? and z > ? and z < ? order by date desc limit 10");
ps.setInt(1, type); ps.setInt(1, type);
ps.setInt(2, type); ps.setInt(2, type);
ps.setInt(3, location.getBlockY() - size); ps.setInt(3, location.getBlockY() - size);
@@ -62,7 +73,7 @@ public class AreaBlockSearch implements Runnable
if (!hist) if (!hist)
player.sendMessage(ChatColor.DARK_AQUA + "None."); player.sendMessage(ChatColor.DARK_AQUA + "None.");
} catch (SQLException ex) { } catch (SQLException ex) {
LogBlock.log.log(Level.SEVERE, "[LogBlock AreaBlockSearch] SQL exception", ex); log.log(Level.SEVERE, "[LogBlock AreaBlockSearch] SQL exception", ex);
} finally { } finally {
try { try {
if (rs != null) if (rs != null)
@@ -72,7 +83,7 @@ public class AreaBlockSearch implements Runnable
if (conn != null) if (conn != null)
conn.close(); conn.close();
} catch (SQLException ex) { } catch (SQLException ex) {
LogBlock.log.log(Level.SEVERE, "[LogBlock AreaBlockSearch] SQL exception on close", ex); log.log(Level.SEVERE, "[LogBlock AreaBlockSearch] SQL exception on close", ex);
} }
} }
} }

View File

@@ -5,28 +5,39 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
public class AreaStats implements Runnable public class AreaStats implements Runnable
{ {
private Player player; private final Logger log;
private int size; private final Player player;
private Connection conn = null; private final int size;
private String table; private final Connection conn;
private final String table;
AreaStats(Connection conn, Player player, int size, String table) { AreaStats(LogBlock logblock, Player player, int size) {
this.player = player; this.player = player;
this.size = size; this.size = size;
this.conn = conn; log = logblock.getServer().getLogger();
this.table = table; conn = logblock.getConnection();
table = logblock.getConfig().tables.get(player.getWorld().getName().hashCode());
} }
public void run() { public void run() {
PreparedStatement ps = null; PreparedStatement ps = null;
ResultSet rs = null; ResultSet rs = null;
try { try {
if (conn == null) {
player.sendMessage(ChatColor.RED + "Failed to create database connection");
return;
}
if (table == null) {
player.sendMessage(ChatColor.RED + "This world isn't logged");
return;
}
conn.setAutoCommit(false); conn.setAutoCommit(false);
ps = conn.prepareStatement("SELECT `playername`, SUM(`created`) AS `created`, SUM(`destroyed`) AS `destroyed` FROM ((SELECT `playerid`, count(`type`) AS `created`, 0 AS `destroyed` FROM `" + table + "` WHERE `type` > 0 AND x > ? AND x < ? AND z > ? AND z < ? AND `type` != `replaced` GROUP BY `playerid`) UNION (SELECT `playerid`, 0 AS `created`, count(`replaced`) AS `destroyed` FROM `" + table + "` WHERE `replaced` > 0 AND x > ? AND x < ? AND z > ? AND z < ? AND `type` != `replaced` GROUP BY `playerid`)) AS t INNER JOIN `lb-players` USING (`playerid`) GROUP BY `playerid` ORDER BY SUM(`created`) + SUM(`destroyed`) DESC LIMIT 15"); ps = conn.prepareStatement("SELECT `playername`, SUM(`created`) AS `created`, SUM(`destroyed`) AS `destroyed` FROM ((SELECT `playerid`, count(`type`) AS `created`, 0 AS `destroyed` FROM `" + table + "` WHERE `type` > 0 AND x > ? AND x < ? AND z > ? AND z < ? AND `type` != `replaced` GROUP BY `playerid`) UNION (SELECT `playerid`, 0 AS `created`, count(`replaced`) AS `destroyed` FROM `" + table + "` WHERE `replaced` > 0 AND x > ? AND x < ? AND z > ? AND z < ? AND `type` != `replaced` GROUP BY `playerid`)) AS t INNER JOIN `lb-players` USING (`playerid`) GROUP BY `playerid` ORDER BY SUM(`created`) + SUM(`destroyed`) DESC LIMIT 15");
ps.setInt(1, player.getLocation().getBlockX()-size); ps.setInt(1, player.getLocation().getBlockX()-size);
@@ -49,7 +60,7 @@ public class AreaStats implements Runnable
} }
} }
} catch (SQLException ex) { } catch (SQLException ex) {
LogBlock.log.log(Level.SEVERE, "[LogBlock AreaStats] SQL exception", ex); log.log(Level.SEVERE, "[LogBlock AreaStats] SQL exception", ex);
} finally { } finally {
try { try {
if (rs != null) if (rs != null)
@@ -59,7 +70,7 @@ public class AreaStats implements Runnable
if (conn != null) if (conn != null)
conn.close(); conn.close();
} catch (SQLException ex) { } catch (SQLException ex) {
LogBlock.log.log(Level.SEVERE, "[LogBlock AreaStats] SQL exception on close", ex); log.log(Level.SEVERE, "[LogBlock AreaStats] SQL exception on close", ex);
} }
} }
} }

View File

@@ -6,6 +6,7 @@ import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Material; import org.bukkit.Material;
@@ -14,33 +15,35 @@ import org.bukkit.entity.Player;
public class BlockStats implements Runnable public class BlockStats implements Runnable
{ {
private final LogBlock logblock; private final Logger log;
private Player player; private final Connection conn;
private Block block; private final String table;
private final Player player;
private final Block block;
BlockStats(LogBlock logblock, Player player, Block block) { BlockStats(LogBlock logblock, Player player, Block block) {
this.logblock = logblock; log = logblock.getServer().getLogger();
conn = logblock.getConnection();
table = logblock.getConfig().tables.get(player.getWorld().getName().hashCode());
this.player = player; this.player = player;
this.block = block; this.block = block;
} }
@Override @Override
public void run() { public void run() {
Connection conn = logblock.pool.getConnection();
if (conn == null) {
player.sendMessage(ChatColor.RED + "Failed to create database connection");
return;
}
String table = logblock.config.tables.get(block.getWorld().getName().hashCode());
if (table == null) {
player.sendMessage(ChatColor.RED + "This world isn't logged");
return;
}
boolean hist = false; boolean hist = false;
PreparedStatement ps = null; PreparedStatement ps = null;
ResultSet rs = null; ResultSet rs = null;
SimpleDateFormat formatter = new SimpleDateFormat("MM-dd HH:mm:ss"); SimpleDateFormat formatter = new SimpleDateFormat("MM-dd HH:mm:ss");
try { try {
if (conn == null) {
player.sendMessage(ChatColor.RED + "Failed to create database connection");
return;
}
if (table == null) {
player.sendMessage(ChatColor.RED + "This world isn't logged");
return;
}
conn.setAutoCommit(false); conn.setAutoCommit(false);
ps = conn.prepareStatement("SELECT date, replaced, type, signtext, playername FROM `" + table + "` LEFT JOIN `" + table + "-sign` USING (id) INNER JOIN `lb-players` USING (playerid) WHERE x = ? AND y = ? AND z = ? ORDER BY date DESC LIMIT 15"); ps = conn.prepareStatement("SELECT date, replaced, type, signtext, playername FROM `" + table + "` LEFT JOIN `" + table + "-sign` USING (id) INNER JOIN `lb-players` USING (playerid) WHERE x = ? AND y = ? AND z = ? ORDER BY date DESC LIMIT 15");
ps.setInt(1, block.getX()); ps.setInt(1, block.getX());
@@ -69,7 +72,7 @@ public class BlockStats implements Runnable
if (!hist) if (!hist)
player.sendMessage(ChatColor.DARK_AQUA + "None."); player.sendMessage(ChatColor.DARK_AQUA + "None.");
} catch (SQLException ex) { } catch (SQLException ex) {
LogBlock.log.log(Level.SEVERE, "[LogBlock BlockStats] SQL exception", ex); log.log(Level.SEVERE, "[LogBlock BlockStats] SQL exception", ex);
} finally { } finally {
try { try {
if (rs != null) if (rs != null)
@@ -79,7 +82,7 @@ public class BlockStats implements Runnable
if (conn != null) if (conn != null)
conn.close(); conn.close();
} catch (SQLException ex) { } catch (SQLException ex) {
LogBlock.log.log(Level.SEVERE, "[LogBlock BlockStats] SQL exception on close", ex); log.log(Level.SEVERE, "[LogBlock BlockStats] SQL exception on close", ex);
} }
} }
} }

View File

@@ -7,58 +7,63 @@ import java.sql.SQLException;
import java.sql.Statement; import java.sql.Statement;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger;
public class ClearLog implements Runnable public class ClearLog implements Runnable
{ {
private final LogBlock logblock; private final Logger log;
private final Config config;
private final Connection conn;
private final File dumpFolder;
public ClearLog(LogBlock logblock) { public ClearLog(LogBlock logblock) {
this.logblock = logblock; log = logblock.getServer().getLogger();
config = logblock.getConfig();
conn = logblock.getConnection();
dumpFolder = new File(logblock.getDataFolder(), "dumb");
} }
@Override @Override
public void run() { public void run() {
File dumpFolder = new File(logblock.getDataFolder(), "dumb");
dumpFolder.mkdirs();
Connection conn = logblock.pool.getConnection();
if (conn == null)
return;
Statement state = null; Statement state = null;
try { try {
if (conn == null)
return;
dumpFolder.mkdirs();
state = conn.createStatement(); state = conn.createStatement();
String time = new SimpleDateFormat("yy-MM-dd-HH-mm-ss").format(System.currentTimeMillis() - logblock.config.keepLogDays*86400000L); String time = new SimpleDateFormat("yy-MM-dd-HH-mm-ss").format(System.currentTimeMillis() - config.keepLogDays*86400000L);
ResultSet rs; ResultSet rs;
for (String table : logblock.config.tables.values()) { for (String table : config.tables.values()) {
rs = state.executeQuery("SELECT count(*) FROM `" + table + "` WHERE date < '" + time + "'"); rs = state.executeQuery("SELECT count(*) FROM `" + table + "` WHERE date < '" + time + "'");
rs.next(); rs.next();
int deleted = rs.getInt(1); int deleted = rs.getInt(1);
if (deleted > 0) { if (deleted > 0) {
if (logblock.config.dumpDeletedLog) if (config.dumpDeletedLog)
state.execute("SELECT * FROM `" + table + "` WHERE date < '" + time + "' INTO OUTFILE '" + new File(dumpFolder, table + "-" + time + ".csv").getAbsolutePath().replace("\\", "\\\\") + "' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n'"); state.execute("SELECT * FROM `" + table + "` WHERE date < '" + time + "' INTO OUTFILE '" + new File(dumpFolder, table + "-" + time + ".csv").getAbsolutePath().replace("\\", "\\\\") + "' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n'");
state.execute("DELETE FROM `" + table + "` WHERE date < '" + time + "'"); state.execute("DELETE FROM `" + table + "` WHERE date < '" + time + "'");
LogBlock.log.info("[LogBlock] Cleared out table " + table + ". Deleted " + deleted + " entries."); log.info("[LogBlock] Cleared out table " + table + ". Deleted " + deleted + " entries.");
} }
rs = state.executeQuery("SELECT COUNT(*) FROM `" + table + "-sign` LEFT JOIN `" + table + "` USING (id) WHERE `" + table + "`.id IS NULL"); rs = state.executeQuery("SELECT COUNT(*) FROM `" + table + "-sign` LEFT JOIN `" + table + "` USING (id) WHERE `" + table + "`.id IS NULL");
rs.next(); rs.next();
deleted = rs.getInt(1); deleted = rs.getInt(1);
if (deleted > 0) { if (deleted > 0) {
if (logblock.config.dumpDeletedLog) if (config.dumpDeletedLog)
state.execute("SELECT id, signtext FROM `" + table + "-sign` LEFT JOIN `" + table + "` USING (id) WHERE `" + table + "`.id IS NULL INTO OUTFILE '" + new File(dumpFolder, table + "-sign-" + time + ".csv").getAbsolutePath().replace("\\", "\\\\") + "' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n'"); state.execute("SELECT id, signtext FROM `" + table + "-sign` LEFT JOIN `" + table + "` USING (id) WHERE `" + table + "`.id IS NULL INTO OUTFILE '" + new File(dumpFolder, table + "-sign-" + time + ".csv").getAbsolutePath().replace("\\", "\\\\") + "' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n'");
state.execute("DELETE `" + table + "-sign` FROM `" + table + "-sign` LEFT JOIN `" + table + "` USING (id) WHERE `" + table + "`.id IS NULL;"); state.execute("DELETE `" + table + "-sign` FROM `" + table + "-sign` LEFT JOIN `" + table + "` USING (id) WHERE `" + table + "`.id IS NULL;");
LogBlock.log.info("[LogBlock] Cleared out table " + table + "-sign. Deleted " + deleted + " entries."); log.info("[LogBlock] Cleared out table " + table + "-sign. Deleted " + deleted + " entries.");
} }
rs = state.executeQuery("SELECT COUNT(*) FROM `" + table + "-chest` LEFT JOIN `" + table + "` USING (id) WHERE `" + table + "`.id IS NULL"); rs = state.executeQuery("SELECT COUNT(*) FROM `" + table + "-chest` LEFT JOIN `" + table + "` USING (id) WHERE `" + table + "`.id IS NULL");
rs.next(); rs.next();
deleted = rs.getInt(1); deleted = rs.getInt(1);
if (deleted > 0) { if (deleted > 0) {
if (logblock.config.dumpDeletedLog) if (config.dumpDeletedLog)
state.execute("SELECT id, intype, inamount, outtype, outamount FROM `" + table + "-chest` LEFT JOIN `" + table + "` USING (id) WHERE `" + table + "`.id IS NULL INTO OUTFILE '" + new File(dumpFolder, table + "-chest-" + time + ".csv").getAbsolutePath().replace("\\", "\\\\") + "' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n'"); state.execute("SELECT id, intype, inamount, outtype, outamount FROM `" + table + "-chest` LEFT JOIN `" + table + "` USING (id) WHERE `" + table + "`.id IS NULL INTO OUTFILE '" + new File(dumpFolder, table + "-chest-" + time + ".csv").getAbsolutePath().replace("\\", "\\\\") + "' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n'");
state.execute("DELETE `" + table + "-chest` FROM `" + table + "-chest` LEFT JOIN `" + table + "` USING (id) WHERE `" + table + "`.id IS NULL;"); state.execute("DELETE `" + table + "-chest` FROM `" + table + "-chest` LEFT JOIN `" + table + "` USING (id) WHERE `" + table + "`.id IS NULL;");
LogBlock.log.info("[LogBlock] Cleared out table " + table + "-chest. Deleted " + deleted + " entries."); log.info("[LogBlock] Cleared out table " + table + "-chest. Deleted " + deleted + " entries.");
} }
} }
} catch (SQLException ex) { } catch (SQLException ex) {
LogBlock.log.log(Level.SEVERE, "[LogBlock] SQL exception", ex); log.log(Level.SEVERE, "[LogBlock] SQL exception", ex);
} finally { } finally {
try { try {
if (state != null) if (state != null)
@@ -66,7 +71,7 @@ public class ClearLog implements Runnable
if (conn != null) if (conn != null)
conn.close(); conn.close();
} catch (SQLException ex) { } catch (SQLException ex) {
LogBlock.log.log(Level.SEVERE, "[LogBlock] SQL exception on close", ex); log.log(Level.SEVERE, "[LogBlock] SQL exception on close", ex);
} }
} }
} }

View File

@@ -9,29 +9,29 @@ import org.bukkit.Material;
import org.bukkit.util.config.Configuration; import org.bukkit.util.config.Configuration;
public class Config { public class Config {
final HashMap<Integer, String> tables; public final HashMap<Integer, String> tables;
final String url; public final String url;
final String user; public final String user;
final String password; public final String password;
final int delay; public final int delay;
final boolean useBukkitScheduler; public final boolean useBukkitScheduler;
final int keepLogDays; public final int keepLogDays;
final boolean dumpDeletedLog; public final boolean dumpDeletedLog;
final boolean logBlockCreations; public final boolean logBlockCreations;
final boolean logBlockDestroyings; public final boolean logBlockDestroyings;
final boolean logSignTexts; public final boolean logSignTexts;
final boolean logExplosions; public final boolean logExplosions;
final boolean logFire; public final boolean logFire;
final boolean logLeavesDecay; public final boolean logLeavesDecay;
final boolean logChestAccess; public final boolean logChestAccess;
final boolean logKills; public final boolean logKills;
final LogKillsLevel logKillsLevel; public final LogKillsLevel logKillsLevel;
final List<Integer> dontRollback; public final List<Integer> dontRollback;
final List<Integer> replaceAnyway; public final List<Integer> replaceAnyway;
final int defaultDist; public final int defaultDist;
final int defaultTime; public final int defaultTime;
final int toolID; public final int toolID;
final int toolblockID; public final int toolblockID;
enum LogKillsLevel { enum LogKillsLevel {
PLAYERS, MONSTERS, ANIMALS PLAYERS, MONSTERS, ANIMALS

View File

@@ -9,6 +9,7 @@ import java.util.HashSet;
import java.util.TimerTask; import java.util.TimerTask;
import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.LinkedBlockingQueue;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
@@ -17,15 +18,20 @@ import org.bukkit.entity.TNTPrimed;
public class Consumer extends TimerTask implements Runnable public class Consumer extends TimerTask implements Runnable
{ {
private final LogBlock logblock;
private final Logger log;
private final Config config;
private LinkedBlockingQueue<BlockRow> bqueue = new LinkedBlockingQueue<BlockRow>(); private LinkedBlockingQueue<BlockRow> bqueue = new LinkedBlockingQueue<BlockRow>();
private LinkedBlockingQueue<KillRow> kqueue = new LinkedBlockingQueue<KillRow>(); private LinkedBlockingQueue<KillRow> kqueue = new LinkedBlockingQueue<KillRow>();
private HashSet<Integer> hiddenplayers = new HashSet<Integer>(); private HashSet<Integer> hiddenplayers = new HashSet<Integer>();
private HashMap<Integer, Integer> lastAttackedEntity = new HashMap<Integer, Integer>(); private HashMap<Integer, Integer> lastAttackedEntity = new HashMap<Integer, Integer>();
private HashMap<Integer, Long> lastAttackTime = new HashMap<Integer, Long>(); private HashMap<Integer, Long> lastAttackTime = new HashMap<Integer, Long>();
private LogBlock logblock;
Consumer (LogBlock logblock) { Consumer (LogBlock logblock) {
this.logblock = logblock; this.logblock = logblock;
log = logblock.getServer().getLogger();
config = logblock.getConfig();
} }
public void queueBlock(Player player, Block block, int typeAfter) { public void queueBlock(Player player, Block block, int typeAfter) {
@@ -45,7 +51,7 @@ public class Consumer extends TimerTask implements Runnable
return; return;
if (hiddenplayers.contains(playerName.hashCode())) if (hiddenplayers.contains(playerName.hashCode()))
return; return;
String table = logblock.config.tables.get(block.getWorld().getName().hashCode()); String table = config.tables.get(block.getWorld().getName().hashCode());
if (table == null) if (table == null)
return; return;
if (playerName.length() > 32) if (playerName.length() > 32)
@@ -56,13 +62,13 @@ public class Consumer extends TimerTask implements Runnable
if (ca != null) if (ca != null)
row.ca = ca; row.ca = ca;
if (!bqueue.offer(row)) if (!bqueue.offer(row))
LogBlock.log.info("[LogBlock] Failed to queue block for " + playerName); log.info("[LogBlock] Failed to queue block for " + playerName);
} }
public void queueKill(Entity attacker, Entity defender) { public void queueKill(Entity attacker, Entity defender) {
if (lastAttackedEntity.containsKey(attacker.getEntityId()) && lastAttackedEntity.get(attacker.getEntityId()) == defender.getEntityId() && System.currentTimeMillis() - lastAttackTime.get(attacker.getEntityId()) < 3000) if (lastAttackedEntity.containsKey(attacker.getEntityId()) && lastAttackedEntity.get(attacker.getEntityId()) == defender.getEntityId() && System.currentTimeMillis() - lastAttackTime.get(attacker.getEntityId()) < 3000)
return; return;
String table = logblock.config.tables.get(defender.getWorld().getName().hashCode()); String table = config.tables.get(defender.getWorld().getName().hashCode());
if (table == null) if (table == null)
return; return;
int weapon = 0; int weapon = 0;
@@ -93,14 +99,14 @@ public class Consumer extends TimerTask implements Runnable
} }
public synchronized void run() { public synchronized void run() {
Connection conn = logblock.pool.getConnection(); Connection conn = logblock.getConnection();
if (conn == null) if (conn == null)
return; return;
Statement state = null; Statement state = null;
BlockRow b; KillRow k; BlockRow b; KillRow k;
int count = 0; int count = 0;
if (bqueue.size() > 100) if (bqueue.size() > 100)
LogBlock.log.info("[LogBlock Consumer] Queue overloaded. Size: " + bqueue.size()); log.info("[LogBlock Consumer] Queue overloaded. Size: " + bqueue.size());
try { try {
conn.setAutoCommit(false); conn.setAutoCommit(false);
state = conn.createStatement(); state = conn.createStatement();
@@ -115,13 +121,13 @@ public class Consumer extends TimerTask implements Runnable
if (keys.next()) if (keys.next())
state.execute("INSERT INTO `" + b.table + "-sign` (id, signtext) values (" + keys.getInt(1) + ", '" + b.signtext + "')"); state.execute("INSERT INTO `" + b.table + "-sign` (id, signtext) values (" + keys.getInt(1) + ", '" + b.signtext + "')");
else else
LogBlock.log.severe("[LogBlock Consumer] Failed to get generated keys"); log.severe("[LogBlock Consumer] Failed to get generated keys");
} else if (b.ca != null) { } else if (b.ca != null) {
ResultSet keys = state.getGeneratedKeys(); ResultSet keys = state.getGeneratedKeys();
if (keys.next()) if (keys.next())
state.execute("INSERT INTO `" + b.table + "-chest` (id, intype, inamount, outtype, outamount) values (" + keys.getInt(1) + ", " + b.ca.inType + ", " + b.ca.inAmount + ", " + b.ca.outType + ", " + b.ca.outAmount + ")"); state.execute("INSERT INTO `" + b.table + "-chest` (id, intype, inamount, outtype, outamount) values (" + keys.getInt(1) + ", " + b.ca.inType + ", " + b.ca.inAmount + ", " + b.ca.outType + ", " + b.ca.outAmount + ")");
else else
LogBlock.log.severe("[LogBlock Consumer] Failed to get generated keys"); log.severe("[LogBlock Consumer] Failed to get generated keys");
} }
count++; count++;
} }
@@ -134,7 +140,7 @@ public class Consumer extends TimerTask implements Runnable
} }
conn.commit(); conn.commit();
} catch (SQLException ex) { } catch (SQLException ex) {
LogBlock.log.log(Level.SEVERE, "[LogBlock Consumer] SQL exception", ex); log.log(Level.SEVERE, "[LogBlock Consumer] SQL exception", ex);
} finally { } finally {
try { try {
if (conn != null) if (conn != null)
@@ -142,7 +148,7 @@ public class Consumer extends TimerTask implements Runnable
if (state != null) if (state != null)
state.close(); state.close();
} catch (SQLException ex) { } catch (SQLException ex) {
LogBlock.log.log(Level.SEVERE, "[LogBlock Consumer] SQL exception on close", ex); log.log(Level.SEVERE, "[LogBlock Consumer] SQL exception on close", ex);
} }
} }
} }

View File

@@ -10,35 +10,37 @@ import org.bukkit.event.block.SignChangeEvent;
public class LBBlockListener extends BlockListener public class LBBlockListener extends BlockListener
{ {
private final LogBlock logblock; private final Config config;
private final Consumer consumer;
LBBlockListener(LogBlock logblock) { LBBlockListener(LogBlock logblock) {
this.logblock = logblock; config = logblock.getConfig();
consumer = logblock.getConsumer();
} }
public void onBlockPlace(BlockPlaceEvent event) { public void onBlockPlace(BlockPlaceEvent event) {
if (!event.isCancelled() && !(logblock.config.logSignTexts && (event.getBlock().getType() == Material.WALL_SIGN || event.getBlock().getType() == Material.SIGN_POST))) { if (!event.isCancelled() && !(config.logSignTexts && (event.getBlock().getType() == Material.WALL_SIGN || event.getBlock().getType() == Material.SIGN_POST))) {
logblock.consumer.queueBlock(event.getPlayer().getName(), event.getBlockPlaced(), event.getBlockReplacedState().getTypeId(), event.getBlockPlaced().getTypeId(), event.getBlockPlaced().getData()); consumer.queueBlock(event.getPlayer().getName(), event.getBlockPlaced(), event.getBlockReplacedState().getTypeId(), event.getBlockPlaced().getTypeId(), event.getBlockPlaced().getData());
} }
} }
public void onBlockBreak(BlockBreakEvent event) { public void onBlockBreak(BlockBreakEvent event) {
if (!event.isCancelled()) if (!event.isCancelled())
logblock.consumer.queueBlock(event.getPlayer().getName(), event.getBlock(), event.getBlock().getTypeId(), 0, event.getBlock().getData()); consumer.queueBlock(event.getPlayer().getName(), event.getBlock(), event.getBlock().getTypeId(), 0, event.getBlock().getData());
} }
public void onSignChange(SignChangeEvent event) { public void onSignChange(SignChangeEvent event) {
if (!event.isCancelled()) if (!event.isCancelled())
logblock.consumer.queueBlock(event.getPlayer().getName(), event.getBlock(), 0, event.getBlock().getTypeId(), event.getBlock().getData(), "sign [" + event.getLine(0) + "] [" + event.getLine(1) + "] [" + event.getLine(2) + "] [" + event.getLine(3) + "]", null); consumer.queueBlock(event.getPlayer().getName(), event.getBlock(), 0, event.getBlock().getTypeId(), event.getBlock().getData(), "sign [" + event.getLine(0) + "] [" + event.getLine(1) + "] [" + event.getLine(2) + "] [" + event.getLine(3) + "]", null);
} }
public void onBlockBurn(BlockBurnEvent event) { public void onBlockBurn(BlockBurnEvent event) {
if (!event.isCancelled()) if (!event.isCancelled())
logblock.consumer.queueBlock("Fire", event.getBlock(), event.getBlock().getTypeId(), 0, event.getBlock().getData()); consumer.queueBlock("Fire", event.getBlock(), event.getBlock().getTypeId(), 0, event.getBlock().getData());
} }
public void onLeavesDecay(LeavesDecayEvent event) { public void onLeavesDecay(LeavesDecayEvent event) {
if (!event.isCancelled()) if (!event.isCancelled())
logblock.consumer.queueBlock("LeavesDecay", event.getBlock(), event.getBlock().getTypeId(), 0, event.getBlock().getData()); consumer.queueBlock("LeavesDecay", event.getBlock(), event.getBlock().getTypeId(), 0, event.getBlock().getData());
} }
} }

View File

@@ -15,10 +15,12 @@ import org.bukkit.event.entity.EntityListener;
public class LBEntityListener extends EntityListener public class LBEntityListener extends EntityListener
{ {
private final LogBlock logblock; private final Config config;
private final Consumer consumer;
LBEntityListener(LogBlock logblock) { LBEntityListener(LogBlock logblock) {
this.logblock = logblock; config= logblock.getConfig();
consumer = logblock.getConsumer();
} }
public void onEntityExplode(EntityExplodeEvent event) { public void onEntityExplode(EntityExplodeEvent event) {
@@ -33,7 +35,7 @@ public class LBEntityListener extends EntityListener
else else
name = "Environment"; name = "Environment";
for (Block block : event.blockList()) for (Block block : event.blockList())
logblock.consumer.queueBlock(name, block, block.getTypeId(), 0, block.getData()); consumer.queueBlock(name, block, block.getTypeId(), 0, block.getData());
} }
} }
@@ -44,10 +46,10 @@ public class LBEntityListener extends EntityListener
Entity killer = ((EntityDamageByEntityEvent)event).getDamager(); Entity killer = ((EntityDamageByEntityEvent)event).getDamager();
if (victim.getHealth() - event.getDamage() > 0 || victim.getHealth() <= 0 ) if (victim.getHealth() - event.getDamage() > 0 || victim.getHealth() <= 0 )
return; return;
if (logblock.config.logKillsLevel == Config.LogKillsLevel.PLAYERS && !(victim instanceof Player && killer instanceof Player)) if (config.logKillsLevel == Config.LogKillsLevel.PLAYERS && !(victim instanceof Player && killer instanceof Player))
return; return;
else if (logblock.config.logKillsLevel == Config.LogKillsLevel.MONSTERS && !((victim instanceof Player || victim instanceof Monster) && killer instanceof Player || killer instanceof Monster)) else if (config.logKillsLevel == Config.LogKillsLevel.MONSTERS && !((victim instanceof Player || victim instanceof Monster) && killer instanceof Player || killer instanceof Monster))
return; return;
logblock.consumer.queueKill(killer, victim); consumer.queueKill(killer, victim);
} }
} }

View File

@@ -4,6 +4,7 @@ import java.sql.Connection;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Statement; import java.sql.Statement;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.event.block.Action; import org.bukkit.event.block.Action;
@@ -15,43 +16,47 @@ import org.bukkit.event.player.PlayerListener;
public class LBPlayerListener extends PlayerListener public class LBPlayerListener extends PlayerListener
{ {
private final Logger log;
private final LogBlock logblock; private final LogBlock logblock;
private final Consumer consumer;
LBPlayerListener(LogBlock logblock) { LBPlayerListener(LogBlock logblock) {
this.logblock = logblock; this.logblock = logblock;
log = logblock.getServer().getLogger();
consumer = logblock.getConsumer();
} }
public void onPlayerInteract(PlayerInteractEvent event) { public void onPlayerInteract(PlayerInteractEvent event) {
if (!event.isCancelled()) { if (!event.isCancelled()) {
if (event.getAction() == Action.RIGHT_CLICK_BLOCK && (event.getClickedBlock().getType() == Material.CHEST || event.getClickedBlock().getType() == Material.FURNACE ||event.getClickedBlock().getType() == Material.DISPENSER)) { if (event.getAction() == Action.RIGHT_CLICK_BLOCK && (event.getClickedBlock().getType() == Material.CHEST || event.getClickedBlock().getType() == Material.FURNACE ||event.getClickedBlock().getType() == Material.DISPENSER)) {
logblock.consumer.queueBlock(event.getPlayer(), event.getClickedBlock(), (short)0, (byte)0, (short)0, (byte)0); consumer.queueBlock(event.getPlayer(), event.getClickedBlock(), (short)0, (byte)0, (short)0, (byte)0);
} }
} }
} }
public void onPlayerBucketFill(PlayerBucketFillEvent event) { public void onPlayerBucketFill(PlayerBucketFillEvent event) {
if (!event.isCancelled()) { if (!event.isCancelled()) {
logblock.consumer.queueBlock(event.getPlayer().getName(), event.getBlockClicked(), event.getBlockClicked().getTypeId(), 0, event.getBlockClicked().getData()); consumer.queueBlock(event.getPlayer().getName(), event.getBlockClicked(), event.getBlockClicked().getTypeId(), 0, event.getBlockClicked().getData());
} }
} }
public void onPlayerBucketEmpty(PlayerBucketEmptyEvent event) { public void onPlayerBucketEmpty(PlayerBucketEmptyEvent event) {
if (event.getBucket() == Material.WATER_BUCKET) if (event.getBucket() == Material.WATER_BUCKET)
logblock.consumer.queueBlock(event.getPlayer(), event.getBlockClicked().getFace(event.getBlockFace()), Material.STATIONARY_WATER.getId()); consumer.queueBlock(event.getPlayer(), event.getBlockClicked().getFace(event.getBlockFace()), Material.STATIONARY_WATER.getId());
else if (event.getBucket() == Material.LAVA_BUCKET) else if (event.getBucket() == Material.LAVA_BUCKET)
logblock.consumer.queueBlock(event.getPlayer(), event.getBlockClicked().getFace(event.getBlockFace()), Material.STATIONARY_LAVA.getId()); consumer.queueBlock(event.getPlayer(), event.getBlockClicked().getFace(event.getBlockFace()), Material.STATIONARY_LAVA.getId());
} }
public void onPlayerJoin(PlayerJoinEvent event) { public void onPlayerJoin(PlayerJoinEvent event) {
Connection conn = logblock.pool.getConnection(); Connection conn = logblock.getConnection();
Statement state = null;
if (conn == null) if (conn == null)
return; return;
Statement state = null;
try { try {
state = conn.createStatement(); state = conn.createStatement();
state.execute("INSERT IGNORE INTO `lb-players` (playername) VALUES ('" + event.getPlayer().getName() + "');"); state.execute("INSERT IGNORE INTO `lb-players` (playername) VALUES ('" + event.getPlayer().getName() + "');");
} catch (SQLException ex) { } catch (SQLException ex) {
LogBlock.log.log(Level.SEVERE, "[LogBlock] SQL exception", ex); log.log(Level.SEVERE, "[LogBlock] SQL exception", ex);
} finally { } finally {
try { try {
if (state != null) if (state != null)
@@ -59,7 +64,7 @@ public class LBPlayerListener extends PlayerListener
if (conn != null) if (conn != null)
conn.close(); conn.close();
} catch (SQLException ex) { } catch (SQLException ex) {
LogBlock.log.log(Level.SEVERE, "[LogBlock] SQL exception on close", ex); log.log(Level.SEVERE, "[LogBlock] SQL exception on close", ex);
} }
} }
} }

View File

@@ -8,18 +8,20 @@ import org.bukkit.event.player.PlayerListener;
public class LBToolPlayerListener extends PlayerListener public class LBToolPlayerListener extends PlayerListener
{ {
private final LogBlock logblock; private final LogBlock logblock;
private final Config config;
LBToolPlayerListener(LogBlock logblock) { LBToolPlayerListener(LogBlock logblock) {
this.logblock = logblock; this.logblock = logblock;
config = logblock.getConfig();
} }
public void onPlayerInteract(PlayerInteractEvent event) { public void onPlayerInteract(PlayerInteractEvent event) {
if (!event.isCancelled()) { if (!event.isCancelled()) {
if (event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getMaterial().getId() == logblock.config.toolID && logblock.checkPermission(event.getPlayer(), "logblock.lookup")) { if (event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getMaterial().getId() == config.toolID && logblock.checkPermission(event.getPlayer(), "logblock.lookup")) {
logblock.getServer().getScheduler().scheduleAsyncDelayedTask(logblock, new BlockStats(logblock, event.getPlayer(), event.getClickedBlock())); logblock.getServer().getScheduler().scheduleAsyncDelayedTask(logblock, new BlockStats(logblock, event.getPlayer(), event.getClickedBlock()));
if (event.getClickedBlock().getType() != Material.BED_BLOCK) if (event.getClickedBlock().getType() != Material.BED_BLOCK)
event.setCancelled(true); event.setCancelled(true);
} else if (event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getMaterial().getId() == logblock.config.toolblockID && logblock.checkPermission(event.getPlayer(), "logblock.lookup")) { } else if (event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getMaterial().getId() == config.toolblockID && logblock.checkPermission(event.getPlayer(), "logblock.lookup")) {
logblock.getServer().getScheduler().scheduleAsyncDelayedTask(logblock, new BlockStats(logblock, event.getPlayer(), event.getClickedBlock().getFace(event.getBlockFace()))); logblock.getServer().getScheduler().scheduleAsyncDelayedTask(logblock, new BlockStats(logblock, event.getPlayer(), event.getClickedBlock().getFace(event.getBlockFace())));
event.setCancelled(true); event.setCancelled(true);
} }

View File

@@ -34,13 +34,21 @@ import de.diddiz.util.Download;
public class LogBlock extends JavaPlugin public class LogBlock extends JavaPlugin
{ {
public static Logger log; private Logger log;
public Config config; private Config config;
public ConnectionPool pool; private ConnectionPool pool;
public Consumer consumer = null; private Consumer consumer = null;
private Timer timer = null; private Timer timer = null;
private PermissionHandler permissions = null; private PermissionHandler permissions = null;
public Config getConfig() {
return config;
}
public Consumer getConsumer() {
return consumer;
}
@Override @Override
public void onEnable() { public void onEnable() {
log = getServer().getLogger(); log = getServer().getLogger();
@@ -71,7 +79,7 @@ public class LogBlock extends JavaPlugin
} }
try { try {
pool = new ConnectionPool("com.mysql.jdbc.Driver", config.url, config.user, config.password); pool = new ConnectionPool("com.mysql.jdbc.Driver", config.url, config.user, config.password);
Connection conn = pool.getConnection(); Connection conn = getConnection();
conn.close(); conn.close();
} catch (Exception ex) { } catch (Exception ex) {
log.log(Level.SEVERE, "[LogBlock] Exception while checking database connection", ex); log.log(Level.SEVERE, "[LogBlock] Exception while checking database connection", ex);
@@ -85,6 +93,7 @@ public class LogBlock extends JavaPlugin
} }
if (config.keepLogDays >= 0) if (config.keepLogDays >= 0)
new Thread(new ClearLog(this)).start(); new Thread(new ClearLog(this)).start();
consumer = new Consumer(this);
LBBlockListener lbBlockListener = new LBBlockListener(this); LBBlockListener lbBlockListener = new LBBlockListener(this);
LBPlayerListener lbPlayerListener = new LBPlayerListener(this); LBPlayerListener lbPlayerListener = new LBPlayerListener(this);
LBEntityListener lbEntityListener = new LBEntityListener(this); LBEntityListener lbEntityListener = new LBEntityListener(this);
@@ -111,7 +120,6 @@ public class LogBlock extends JavaPlugin
pm.registerEvent(Type.PLAYER_INTERACT, lbPlayerListener, Priority.Monitor, this); pm.registerEvent(Type.PLAYER_INTERACT, lbPlayerListener, Priority.Monitor, this);
if (config.logKills) if (config.logKills)
pm.registerEvent(Type.ENTITY_DAMAGE, lbEntityListener, Priority.Monitor, this); pm.registerEvent(Type.ENTITY_DAMAGE, lbEntityListener, Priority.Monitor, this);
consumer = new Consumer(this);
if (config.useBukkitScheduler) { if (config.useBukkitScheduler) {
if (getServer().getScheduler().scheduleAsyncRepeatingTask(this, consumer, config.delay * 20, config.delay * 20) > 0) if (getServer().getScheduler().scheduleAsyncRepeatingTask(this, consumer, config.delay * 20, config.delay * 20) > 0)
log.info("[LogBlock] Scheduled consumer with bukkit scheduler."); log.info("[LogBlock] Scheduled consumer with bukkit scheduler.");
@@ -152,15 +160,6 @@ public class LogBlock extends JavaPlugin
return true; return true;
} }
Player player = (Player)sender; Player player = (Player)sender;
Connection conn = pool.getConnection();
String table = config.tables.get(player.getWorld().getName().hashCode());
if (conn == null) {
player.sendMessage(ChatColor.RED + "Can't create SQL connection.");
return true;
} else if (table == null) {
player.sendMessage(ChatColor.RED + "This world isn't logged");
return true;
}
if (args.length == 0) { if (args.length == 0) {
player.sendMessage(ChatColor.LIGHT_PURPLE + "LogBlock v" + getDescription().getVersion() + " by DiddiZ"); player.sendMessage(ChatColor.LIGHT_PURPLE + "LogBlock v" + getDescription().getVersion() + " by DiddiZ");
player.sendMessage(ChatColor.LIGHT_PURPLE + "Type /lb help for help"); player.sendMessage(ChatColor.LIGHT_PURPLE + "Type /lb help for help");
@@ -217,12 +216,12 @@ public class LogBlock extends JavaPlugin
int radius = config.defaultDist; int radius = config.defaultDist;
if (args.length == 2 && isInt(args[1])) if (args.length == 2 && isInt(args[1]))
radius = Integer.parseInt(args[1]); radius = Integer.parseInt(args[1]);
new Thread(new AreaStats(conn, player, radius, table)).start(); new Thread(new AreaStats(this, player, radius)).start();
} else } else
player.sendMessage(ChatColor.RED + "You aren't allowed to do this"); player.sendMessage(ChatColor.RED + "You aren't allowed to do this");
} else if (args[0].equalsIgnoreCase("world")) { } else if (args[0].equalsIgnoreCase("world")) {
if (checkPermission(player,"logblock.area")) { if (checkPermission(player,"logblock.area")) {
new Thread(new AreaStats(conn, player, Short.MAX_VALUE, table)).start(); new Thread(new AreaStats(this, player, Short.MAX_VALUE)).start();
} else } else
player.sendMessage(ChatColor.RED + "You aren't allowed to do this"); player.sendMessage(ChatColor.RED + "You aren't allowed to do this");
} else if (args[0].equalsIgnoreCase("player")) { } else if (args[0].equalsIgnoreCase("player")) {
@@ -231,7 +230,7 @@ public class LogBlock extends JavaPlugin
int radius = config.defaultDist; int radius = config.defaultDist;
if (args.length == 3 && isInt(args[2])) if (args.length == 3 && isInt(args[2]))
radius = Integer.parseInt(args[2]); radius = Integer.parseInt(args[2]);
new Thread(new PlayerAreaStats(conn, player, args[1], radius, table)).start(); new Thread(new PlayerAreaStats(this, player, args[1], radius)).start();
} else } else
player.sendMessage(ChatColor.RED + "Usage: /lb player [name] <radius>"); player.sendMessage(ChatColor.RED + "Usage: /lb player [name] <radius>");
} else } else
@@ -244,7 +243,7 @@ public class LogBlock extends JavaPlugin
if (args.length == 3 && isInt(args[2])) if (args.length == 3 && isInt(args[2]))
radius = Integer.parseInt(args[2]); radius = Integer.parseInt(args[2]);
if (mat != null) if (mat != null)
new Thread(new AreaBlockSearch(conn, player, mat.getId(), radius, table)).start(); new Thread(new AreaBlockSearch(this, player, mat.getId(), radius)).start();
else else
player.sendMessage(ChatColor.RED + "Can't find any item like '" + args[1] + "'"); player.sendMessage(ChatColor.RED + "Can't find any item like '" + args[1] + "'");
} else } else
@@ -260,7 +259,7 @@ public class LogBlock extends JavaPlugin
if (args.length == 5) if (args.length == 5)
minutes = parseTimeSpec(args[3], args[4]); minutes = parseTimeSpec(args[3], args[4]);
player.sendMessage(ChatColor.GREEN + "Rolling back " + args[2] + " by " + minutes + " minutes."); player.sendMessage(ChatColor.GREEN + "Rolling back " + args[2] + " by " + minutes + " minutes.");
getServer().getScheduler().scheduleAsyncDelayedTask(this, new Rollback(player, conn, this, args[2], -1, null, minutes, table, false)); getServer().getScheduler().scheduleAsyncDelayedTask(this, new Rollback(this, player, args[2], -1, null, minutes, false));
} else } else
player.sendMessage(ChatColor.RED + "Usage: /lb rollback player [name] <time> <minutes|hours|days>"); player.sendMessage(ChatColor.RED + "Usage: /lb rollback player [name] <time> <minutes|hours|days>");
} else if (args[1].equalsIgnoreCase("area")) { } else if (args[1].equalsIgnoreCase("area")) {
@@ -269,7 +268,7 @@ public class LogBlock extends JavaPlugin
minutes = parseTimeSpec(args[3], args[4]); minutes = parseTimeSpec(args[3], args[4]);
if (isInt(args[2])) { if (isInt(args[2])) {
player.sendMessage(ChatColor.GREEN + "Rolling back area within " + args[2] + " blocks of you by " + minutes + " minutes."); player.sendMessage(ChatColor.GREEN + "Rolling back area within " + args[2] + " blocks of you by " + minutes + " minutes.");
getServer().getScheduler().scheduleAsyncDelayedTask(this, new Rollback(player, conn, this, null, Integer.parseInt(args[2]), null, minutes, table, false)); getServer().getScheduler().scheduleAsyncDelayedTask(this, new Rollback(this, player, null, Integer.parseInt(args[2]), null, minutes, false));
} else } else
player.sendMessage(ChatColor.RED + "Can't parse to an int: " + args[2]); player.sendMessage(ChatColor.RED + "Can't parse to an int: " + args[2]);
} else } else
@@ -280,7 +279,7 @@ public class LogBlock extends JavaPlugin
minutes = parseTimeSpec(args[4], args[5]); minutes = parseTimeSpec(args[4], args[5]);
if (isInt(args[3])) { if (isInt(args[3])) {
player.sendMessage(ChatColor.GREEN + "Rolling back " + args[2] + " within " + args[3] + " blocks by " + minutes + " minutes."); player.sendMessage(ChatColor.GREEN + "Rolling back " + args[2] + " within " + args[3] + " blocks by " + minutes + " minutes.");
getServer().getScheduler().scheduleAsyncDelayedTask(this, new Rollback(player, conn, this, args[2], Integer.parseInt(args[3]), null, minutes, table, false)); getServer().getScheduler().scheduleAsyncDelayedTask(this, new Rollback(this, player, args[2], Integer.parseInt(args[3]), null, minutes, false));
} else } else
player.sendMessage(ChatColor.RED + "Can't parse to an int: " + args[3]); player.sendMessage(ChatColor.RED + "Can't parse to an int: " + args[3]);
} else } else
@@ -295,7 +294,7 @@ public class LogBlock extends JavaPlugin
if (sel != null) { if (sel != null) {
if (sel instanceof CuboidSelection) { if (sel instanceof CuboidSelection) {
player.sendMessage(ChatColor.GREEN + "Rolling back selection by " + minutes + " minutes."); player.sendMessage(ChatColor.GREEN + "Rolling back selection by " + minutes + " minutes.");
getServer().getScheduler().scheduleAsyncDelayedTask(this, new Rollback(player, conn, this, null, -1, sel, minutes, table, false)); getServer().getScheduler().scheduleAsyncDelayedTask(this, new Rollback(this, player, null, -1, sel, minutes, false));
} else } else
player.sendMessage(ChatColor.RED + "You have to define a cuboid selection"); player.sendMessage(ChatColor.RED + "You have to define a cuboid selection");
} else } else
@@ -324,7 +323,7 @@ public class LogBlock extends JavaPlugin
if (args.length == 5) if (args.length == 5)
minutes = parseTimeSpec(args[3], args[4]); minutes = parseTimeSpec(args[3], args[4]);
player.sendMessage(ChatColor.GREEN + "Redoing " + args[2] + " for " + minutes + " minutes."); player.sendMessage(ChatColor.GREEN + "Redoing " + args[2] + " for " + minutes + " minutes.");
getServer().getScheduler().scheduleAsyncDelayedTask(this, new Rollback(player, conn, this, args[2], -1, null, minutes, table, true)); getServer().getScheduler().scheduleAsyncDelayedTask(this, new Rollback(this, player, args[2], -1, null, minutes, true));
} else } else
player.sendMessage(ChatColor.RED + "Usage: /lb redo player [name] <time> <minutes|hours|days>"); player.sendMessage(ChatColor.RED + "Usage: /lb redo player [name] <time> <minutes|hours|days>");
} else if (args[1].equalsIgnoreCase("area")) { } else if (args[1].equalsIgnoreCase("area")) {
@@ -333,7 +332,7 @@ public class LogBlock extends JavaPlugin
minutes = parseTimeSpec(args[3], args[4]); minutes = parseTimeSpec(args[3], args[4]);
if (isInt(args[2])) { if (isInt(args[2])) {
player.sendMessage(ChatColor.GREEN + "Redoing area within " + args[2] + " blocks of you for " + minutes + " minutes."); player.sendMessage(ChatColor.GREEN + "Redoing area within " + args[2] + " blocks of you for " + minutes + " minutes.");
getServer().getScheduler().scheduleAsyncDelayedTask(this, new Rollback(player, conn, this, null, Integer.parseInt(args[2]), null, minutes, table, true)); getServer().getScheduler().scheduleAsyncDelayedTask(this, new Rollback(this, player, null, Integer.parseInt(args[2]), null, minutes, true));
} else } else
player.sendMessage(ChatColor.RED + "Can't parse to an int: " + args[2]); player.sendMessage(ChatColor.RED + "Can't parse to an int: " + args[2]);
} else } else
@@ -344,7 +343,7 @@ public class LogBlock extends JavaPlugin
minutes = parseTimeSpec(args[4], args[5]); minutes = parseTimeSpec(args[4], args[5]);
if (isInt(args[3])) { if (isInt(args[3])) {
player.sendMessage(ChatColor.GREEN + "Redoing " + args[2] + " within " + args[3] + " blocks for " + minutes + " minutes."); player.sendMessage(ChatColor.GREEN + "Redoing " + args[2] + " within " + args[3] + " blocks for " + minutes + " minutes.");
getServer().getScheduler().scheduleAsyncDelayedTask(this, new Rollback(player, conn, this, args[2], Integer.parseInt(args[3]), null, minutes, table, true)); getServer().getScheduler().scheduleAsyncDelayedTask(this, new Rollback(this, player, args[2], Integer.parseInt(args[3]), null, minutes, true));
} else } else
player.sendMessage(ChatColor.RED + "Can't parse to an int: " + args[3]); player.sendMessage(ChatColor.RED + "Can't parse to an int: " + args[3]);
} else } else
@@ -359,7 +358,7 @@ public class LogBlock extends JavaPlugin
if (sel != null) { if (sel != null) {
if (sel instanceof CuboidSelection) { if (sel instanceof CuboidSelection) {
player.sendMessage(ChatColor.GREEN + "Redoing selection for " + minutes + " minutes."); player.sendMessage(ChatColor.GREEN + "Redoing selection for " + minutes + " minutes.");
getServer().getScheduler().scheduleAsyncDelayedTask(this, new Rollback(player, conn, this, null, -1, sel, minutes, table, true)); getServer().getScheduler().scheduleAsyncDelayedTask(this, new Rollback(this, player, null, -1, sel, minutes, true));
} else } else
player.sendMessage(ChatColor.RED + "You have to define a cuboid selection"); player.sendMessage(ChatColor.RED + "You have to define a cuboid selection");
} else } else
@@ -382,7 +381,7 @@ public class LogBlock extends JavaPlugin
} else if (args[0].equalsIgnoreCase("writelogfile")) { } else if (args[0].equalsIgnoreCase("writelogfile")) {
if (checkPermission(player,"logblock.rollback")) { if (checkPermission(player,"logblock.rollback")) {
if (args.length == 2) { if (args.length == 2) {
new Thread(new WriteLogFile(conn, player, args[1], table)).start(); new Thread(new WriteLogFile(this, player, args[1])).start();
} }
else else
player.sendMessage(ChatColor.RED + "Usage: /lb writelogfile [name]"); player.sendMessage(ChatColor.RED + "Usage: /lb writelogfile [name]");
@@ -390,7 +389,7 @@ public class LogBlock extends JavaPlugin
player.sendMessage(ChatColor.RED + "You aren't allowed to do this"); player.sendMessage(ChatColor.RED + "You aren't allowed to do this");
} else if (args[0].equalsIgnoreCase("me")) { } else if (args[0].equalsIgnoreCase("me")) {
if (checkPermission(player,"logblock.me")) { if (checkPermission(player,"logblock.me")) {
new Thread(new PlayerAreaStats(conn, player, player.getName(), Short.MAX_VALUE, table)).start(); new Thread(new PlayerAreaStats(this, player, player.getName(), Short.MAX_VALUE)).start();
} else } else
player.sendMessage(ChatColor.RED + "You aren't allowed to do this"); player.sendMessage(ChatColor.RED + "You aren't allowed to do this");
} else if (args[0].equalsIgnoreCase("help")) { } else if (args[0].equalsIgnoreCase("help")) {
@@ -416,7 +415,7 @@ public class LogBlock extends JavaPlugin
} }
private boolean checkTables() { private boolean checkTables() {
Connection conn = pool.getConnection(); Connection conn = getConnection();
Statement state = null; Statement state = null;
if (conn == null) if (conn == null)
return false; return false;
@@ -516,4 +515,13 @@ public class LogBlock extends JavaPlugin
return false; return false;
} }
} }
public Connection getConnection() {
try {
return pool.connect(ConnectionPool.URL_PREFIX, null);
} catch (SQLException ex) {
log.log(Level.SEVERE, "[LogBlock] Error while fetching connection", ex);
return null;
}
}
} }

View File

@@ -5,6 +5,7 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Material; import org.bukkit.Material;
@@ -12,24 +13,34 @@ import org.bukkit.entity.Player;
public class PlayerAreaStats implements Runnable public class PlayerAreaStats implements Runnable
{ {
private Player player; private final Logger log;
private String name; private final Connection conn;
private int size; private final String table;
private Connection conn = null; private final Player player;
private String table; private final String name;
private final int size;
PlayerAreaStats(Connection conn, Player player, String name, int size, String table) { PlayerAreaStats(LogBlock logblock, Player player, String name, int size) {
this.player = player; this.player = player;
this.name = name; this.name = name;
this.size = size; this.size = size;
this.conn = conn; log = logblock.getServer().getLogger();
this.table = table; conn = logblock.getConnection();
table = logblock.getConfig().tables.get(player.getWorld().getName().hashCode());
} }
public void run() { public void run() {
PreparedStatement ps = null; PreparedStatement ps = null;
ResultSet rs = null; ResultSet rs = null;
try { try {
if (conn == null) {
player.sendMessage(ChatColor.RED + "Failed to create database connection");
return;
}
if (table == null) {
player.sendMessage(ChatColor.RED + "This world isn't logged");
return;
}
conn.setAutoCommit(false); conn.setAutoCommit(false);
ps = conn.prepareStatement("SELECT `type`, SUM(`created`) AS `created`, SUM(`destroyed`) AS `destroyed` FROM ((SELECT `type`, count(`type`) AS `created`, 0 AS `destroyed` FROM `" + table + "` INNER JOIN `lb-players` USING (`playerid`) WHERE `playername` = ? AND x > ? AND x < ? AND z > ? AND z < ? AND `type` > 0 AND `type` != `replaced` GROUP BY `type`) UNION (SELECT `replaced` AS `type`, 0 AS `created`, count(`replaced`) AS `destroyed` FROM `" + table + "` INNER JOIN `lb-players` USING (`playerid`) WHERE `playername` = ? AND x > ? AND x < ? AND z > ? AND z < ? AND `replaced` > 0 AND `type` != `replaced` GROUP BY `replaced`)) AS t GROUP BY `type` ORDER BY SUM(`created`) + SUM(`destroyed`) DESC LIMIT 15"); ps = conn.prepareStatement("SELECT `type`, SUM(`created`) AS `created`, SUM(`destroyed`) AS `destroyed` FROM ((SELECT `type`, count(`type`) AS `created`, 0 AS `destroyed` FROM `" + table + "` INNER JOIN `lb-players` USING (`playerid`) WHERE `playername` = ? AND x > ? AND x < ? AND z > ? AND z < ? AND `type` > 0 AND `type` != `replaced` GROUP BY `type`) UNION (SELECT `replaced` AS `type`, 0 AS `created`, count(`replaced`) AS `destroyed` FROM `" + table + "` INNER JOIN `lb-players` USING (`playerid`) WHERE `playername` = ? AND x > ? AND x < ? AND z > ? AND z < ? AND `replaced` > 0 AND `type` != `replaced` GROUP BY `replaced`)) AS t GROUP BY `type` ORDER BY SUM(`created`) + SUM(`destroyed`) DESC LIMIT 15");
ps.setString(1, name); ps.setString(1, name);
@@ -54,7 +65,7 @@ public class PlayerAreaStats implements Runnable
} }
} }
} catch (SQLException ex) { } catch (SQLException ex) {
LogBlock.log.log(Level.SEVERE, "[LogBlock PlayerAreaStats] SQL exception", ex); log.log(Level.SEVERE, "[LogBlock PlayerAreaStats] SQL exception", ex);
} finally { } finally {
try { try {
if (rs != null) if (rs != null)
@@ -64,7 +75,7 @@ public class PlayerAreaStats implements Runnable
if (conn != null) if (conn != null)
conn.close(); conn.close();
} catch (SQLException ex) { } catch (SQLException ex) {
LogBlock.log.log(Level.SEVERE, "[LogBlock PlayerAreaStats] SQL exception on close", ex); log.log(Level.SEVERE, "[LogBlock PlayerAreaStats] SQL exception on close", ex);
} }
} }
} }

View File

@@ -5,6 +5,7 @@ import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.LinkedBlockingQueue;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.World; import org.bukkit.World;
@@ -15,35 +16,41 @@ import com.sk89q.worldedit.bukkit.selections.Selection;
public class Rollback implements Runnable public class Rollback implements Runnable
{ {
private Player player; private final Logger log;
private Connection conn; private final LogBlock logblock;
private LogBlock logblock; private final Config config;
private String query; private final Player player;
private boolean redo; private final Connection conn;
private final String query;
private final boolean redo;
Rollback(Player player, Connection conn, LogBlock logblock, String name, int radius, Selection sel, int minutes, String table, boolean redo) { Rollback(LogBlock logblock, Player player, String name, int radius, Selection sel, int minutes, boolean redo) {
this.player = player;
this.conn = conn;
this.logblock = logblock; this.logblock = logblock;
this.player = player;
this.redo = redo; this.redo = redo;
log = logblock.getServer().getLogger();
conn = logblock.getConnection();
config = logblock.getConfig();
StringBuffer sql = new StringBuffer();
if (!redo) if (!redo)
query = "SELECT replaced, type, data, x, y, z "; sql.append("SELECT replaced, type, data, x, y, z ");
else else
query = "SELECT type AS replaced, replaced AS type, data, x, y, z "; sql.append("SELECT type AS replaced, replaced AS type, data, x, y, z ");
query += "FROM `" + table + "` INNER JOIN `lb-players` USING (playerid) WHERE (type <> replaced OR (type = 0 AND replaced = 0)) AND "; sql.append("FROM `" + logblock.getConfig().tables.get(player.getWorld().getName().hashCode()) + "` INNER JOIN `lb-players` USING (playerid) WHERE (type <> replaced OR (type = 0 AND replaced = 0)) AND ");
if (name != null) if (name != null)
query += "playername = '" + name + "' AND "; sql.append("playername = '" + name + "' AND ");
if (radius != -1) if (radius != -1)
query += "x > '" + (player.getLocation().getBlockX() - radius) + "' AND x < '" + (player.getLocation().getBlockX() + radius) + "' AND z > '" + (player.getLocation().getBlockZ() - radius) + "' AND z < '" + (player.getLocation().getBlockZ() + radius) + "' AND "; sql.append("x > '" + (player.getLocation().getBlockX() - radius) + "' AND x < '" + (player.getLocation().getBlockX() + radius) + "' AND z > '" + (player.getLocation().getBlockZ() - radius) + "' AND z < '" + (player.getLocation().getBlockZ() + radius) + "' AND ");
if (sel != null) if (sel != null)
query += "x >= '"+ Math.min(sel.getMinimumPoint().getBlockX(), sel.getMaximumPoint().getBlockX()) + "' AND x <= '" + Math.max(sel.getMinimumPoint().getBlockX(), sel.getMaximumPoint().getBlockX()) + "' AND y >= '" + Math.min(sel.getMinimumPoint().getBlockY(), sel.getMaximumPoint().getBlockY()) + "' AND y <= '" + Math.max(sel.getMinimumPoint().getBlockY(), sel.getMaximumPoint().getBlockY()) + "' AND z >= '" + Math.min(sel.getMinimumPoint().getBlockZ(), sel.getMaximumPoint().getBlockZ()) + "' AND z <= '" + Math.max(sel.getMinimumPoint().getBlockZ(), sel.getMaximumPoint().getBlockZ()) + "' AND "; sql.append("x >= '"+ Math.min(sel.getMinimumPoint().getBlockX(), sel.getMaximumPoint().getBlockX()) + "' AND x <= '" + Math.max(sel.getMinimumPoint().getBlockX(), sel.getMaximumPoint().getBlockX()) + "' AND y >= '" + Math.min(sel.getMinimumPoint().getBlockY(), sel.getMaximumPoint().getBlockY()) + "' AND y <= '" + Math.max(sel.getMinimumPoint().getBlockY(), sel.getMaximumPoint().getBlockY()) + "' AND z >= '" + Math.min(sel.getMinimumPoint().getBlockZ(), sel.getMaximumPoint().getBlockZ()) + "' AND z <= '" + Math.max(sel.getMinimumPoint().getBlockZ(), sel.getMaximumPoint().getBlockZ()) + "' AND ");
if (minutes >= 0) if (minutes >= 0)
query += "date > date_sub(now(), INTERVAL " + minutes + " MINUTE) AND "; sql.append("date > date_sub(now(), INTERVAL " + minutes + " MINUTE) AND ");
query = query.substring(0, query.length() - 4); sql.delete(sql.length() - 5, sql.length() - 1);
if (!redo) if (!redo)
query += "ORDER BY date DESC, id DESC"; sql.append("ORDER BY date DESC, id DESC");
else else
query += "ORDER BY date ASC, id ASC"; sql.append("ORDER BY date ASC, id ASC");
query = sql.toString();
} }
public void run() { public void run() {
@@ -51,13 +58,17 @@ public class Rollback implements Runnable
LinkedBlockingQueue<Edit> edits = new LinkedBlockingQueue<Edit>(); LinkedBlockingQueue<Edit> edits = new LinkedBlockingQueue<Edit>();
edits.clear(); edits.clear();
try { try {
if (!config.tables.containsKey(player.getWorld().getName().hashCode())) {
player.sendMessage(ChatColor.RED + "This world isn't logged!");
return;
}
rs = conn.createStatement().executeQuery(query); rs = conn.createStatement().executeQuery(query);
while (rs.next()) { while (rs.next()) {
Edit e = new Edit(rs.getInt("type"), rs.getInt("replaced"), rs.getByte("data"), rs.getInt("x"), rs.getInt("y"), rs.getInt("z"), player.getWorld()); Edit e = new Edit(rs.getInt("type"), rs.getInt("replaced"), rs.getByte("data"), rs.getInt("x"), rs.getInt("y"), rs.getInt("z"), player.getWorld());
edits.offer(e); edits.offer(e);
} }
} catch (SQLException ex) { } catch (SQLException ex) {
LogBlock.log.log(Level.SEVERE, "[LogBlock Rollback] SQL exception", ex); log.log(Level.SEVERE, "[LogBlock Rollback] SQL exception", ex);
player.sendMessage(ChatColor.RED + "Error, check server logs."); player.sendMessage(ChatColor.RED + "Error, check server logs.");
return; return;
} finally { } finally {
@@ -67,7 +78,7 @@ public class Rollback implements Runnable
if (conn != null) if (conn != null)
conn.close(); conn.close();
} catch (SQLException ex) { } catch (SQLException ex) {
LogBlock.log.log(Level.SEVERE, "[LogBlock Rollback] SQL exception on close", ex); log.log(Level.SEVERE, "[LogBlock Rollback] SQL exception on close", ex);
player.sendMessage(ChatColor.RED + "Error, check server logs."); player.sendMessage(ChatColor.RED + "Error, check server logs.");
return; return;
} }
@@ -85,7 +96,7 @@ public class Rollback implements Runnable
try { try {
this.wait(); this.wait();
} catch (InterruptedException e) { } catch (InterruptedException e) {
LogBlock.log.severe("[LogBlock Rollback] Interrupted"); log.severe("[LogBlock Rollback] Interrupted");
} }
} }
logblock.getServer().getScheduler().cancelTask(taskID); logblock.getServer().getScheduler().cancelTask(taskID);
@@ -160,13 +171,13 @@ public class Rollback implements Runnable
} }
private PerformResult perform() { private PerformResult perform() {
if (logblock.config.dontRollback.contains(replaced)) if (config.dontRollback.contains(replaced))
return PerformResult.BLACKLISTED; return PerformResult.BLACKLISTED;
try { try {
Block block = world.getBlockAt(x, y, z); Block block = world.getBlockAt(x, y, z);
if (!world.isChunkLoaded(block.getChunk())) if (!world.isChunkLoaded(block.getChunk()))
world.loadChunk(block.getChunk()); world.loadChunk(block.getChunk());
if (equalsType(block.getTypeId(), type) || logblock.config.replaceAnyway.contains(block.getTypeId()) || (type == 0 && replaced == 0)) { if (equalsType(block.getTypeId(), type) || config.replaceAnyway.contains(block.getTypeId()) || (type == 0 && replaced == 0)) {
if (block.setTypeIdAndData(replaced, data, false)) if (block.setTypeIdAndData(replaced, data, false))
return PerformResult.SUCCESS; return PerformResult.SUCCESS;
else else
@@ -174,7 +185,7 @@ public class Rollback implements Runnable
} else } else
return PerformResult.NO_ACTION; return PerformResult.NO_ACTION;
} catch (Exception ex) { } catch (Exception ex) {
LogBlock.log.severe("[LogBlock Rollback] " + ex.toString()); log.severe("[LogBlock Rollback] " + ex.toString());
return PerformResult.ERROR; return PerformResult.ERROR;
} }
} }

View File

@@ -9,6 +9,7 @@ import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Material; import org.bukkit.Material;
@@ -16,16 +17,18 @@ import org.bukkit.entity.Player;
public class WriteLogFile implements Runnable public class WriteLogFile implements Runnable
{ {
private Connection conn; private final Logger log;
private Player player; private final Connection conn;
private String name; private final Player player;
private String table; private final String name;
private final String table;
WriteLogFile(Connection conn, Player player, String name, String table) { WriteLogFile(LogBlock logblock, Player player, String name) {
this.conn = conn;
this.player = player; this.player = player;
this.name = name; this.name = name;
this.table = table; log = logblock.getServer().getLogger();
conn = logblock.getConnection();
table = logblock.getConfig().tables.get(player.getWorld().getName().hashCode());
} }
@Override @Override
@@ -36,8 +39,16 @@ public class WriteLogFile implements Runnable
String newline = System.getProperty("line.separator"); String newline = System.getProperty("line.separator");
String msg; String msg;
try { try {
if (conn == null) {
player.sendMessage(ChatColor.RED + "Failed to create database connection");
return;
}
if (table == null) {
player.sendMessage(ChatColor.RED + "This world isn't logged");
return;
}
conn.setAutoCommit(false); conn.setAutoCommit(false);
ps = conn.prepareStatement("SELECT * FROM `" + table + "` LEFT JOIN `" + table + "-sign` USING (`id`) INNER JOIN `lb-players` USING (`playerid`) WHERE `playername` = ? ORDER BY `date` ASC"); ps = conn.prepareStatement("SELECT * FROM `" + table + "` LEFT JOIN `" + table + "-sign` USING (id) INNER JOIN `lb-players` USING (playerid) WHERE playername = ? ORDER BY date ASC");
ps.setString(1, name); ps.setString(1, name);
rs = ps.executeQuery(); rs = ps.executeQuery();
File file = new File ("plugins/LogBlock/log/" + name + ".log"); File file = new File ("plugins/LogBlock/log/" + name + ".log");
@@ -65,10 +76,10 @@ public class WriteLogFile implements Runnable
player.sendMessage(ChatColor.GREEN + "Done"); player.sendMessage(ChatColor.GREEN + "Done");
} catch (SQLException ex) { } catch (SQLException ex) {
player.sendMessage(ChatColor.RED + "SQL exception"); player.sendMessage(ChatColor.RED + "SQL exception");
LogBlock.log.log(Level.SEVERE, "[LogBlock WriteLogFile] SQL exception", ex); log.log(Level.SEVERE, "[LogBlock WriteLogFile] SQL exception", ex);
} catch (IOException ex) { } catch (IOException ex) {
player.sendMessage(ChatColor.RED + "IO exception"); player.sendMessage(ChatColor.RED + "IO exception");
LogBlock.log.log(Level.SEVERE, "[LogBlock WriteLogFile] IO exception", ex); log.log(Level.SEVERE, "[LogBlock WriteLogFile] IO exception", ex);
} finally { } finally {
try { try {
if (rs != null) if (rs != null)
@@ -78,7 +89,7 @@ public class WriteLogFile implements Runnable
if (conn != null) if (conn != null)
conn.close(); conn.close();
} catch (SQLException ex) { } catch (SQLException ex) {
LogBlock.log.log(Level.SEVERE, "[LogBlock BlockStats] SQL exception on close", ex); log.log(Level.SEVERE, "[LogBlock BlockStats] SQL exception on close", ex);
} }
} }
} }

View File

@@ -36,9 +36,6 @@ import java.util.Enumeration;
import java.util.Map; import java.util.Map;
import java.util.Properties; import java.util.Properties;
import java.util.Vector; import java.util.Vector;
import java.util.logging.Level;
import de.diddiz.LogBlock.LogBlock;
public class ConnectionPool implements Driver { public class ConnectionPool implements Driver {
public static final String URL_PREFIX = "jdbc:jdc:"; public static final String URL_PREFIX = "jdbc:jdc:";
@@ -58,15 +55,6 @@ public class ConnectionPool implements Driver {
return pool.getConnection(); return pool.getConnection();
} }
public Connection getConnection() {
try {
return pool.getConnection();
} catch (SQLException ex) {
LogBlock.log.log(Level.SEVERE, "[LogBlock ConnectionPool] Error while fetching connection", ex);
return null;
}
}
public boolean acceptsURL(String url) { public boolean acceptsURL(String url) {
return url.startsWith(URL_PREFIX); return url.startsWith(URL_PREFIX);
} }