From 22a37a0c1bfdad81196a38e23c120e9ddee4b43f Mon Sep 17 00:00:00 2001 From: snowleo Date: Sat, 3 Mar 2012 02:40:22 +0100 Subject: Revert "I honestly have no idea if this works, but on paper it does. Will be great, now to figure out how to test." until there is a real alternative. This reverts commit 7b8a9d60d7da4cba5013671920b1064f711b4538. --- .../protect/data/ProtectedBlockJDBC.java | 42 ++++++++++++++-------- 1 file changed, 27 insertions(+), 15 deletions(-) (limited to 'EssentialsProtect/src/com/earth2me/essentials/protect/data/ProtectedBlockJDBC.java') diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/data/ProtectedBlockJDBC.java b/EssentialsProtect/src/com/earth2me/essentials/protect/data/ProtectedBlockJDBC.java index 30ac5ae8e..e24a71b80 100644 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/data/ProtectedBlockJDBC.java +++ b/EssentialsProtect/src/com/earth2me/essentials/protect/data/ProtectedBlockJDBC.java @@ -1,6 +1,11 @@ package com.earth2me.essentials.protect.data; -import java.sql.*; +import com.mchange.v2.c3p0.ComboPooledDataSource; +import java.beans.PropertyVetoException; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import java.util.logging.Level; @@ -11,7 +16,7 @@ import org.bukkit.block.Block; public abstract class ProtectedBlockJDBC implements IProtectedBlock { protected static final Logger LOGGER = Logger.getLogger("Minecraft"); - protected String url; + protected final transient ComboPooledDataSource cpds; protected abstract PreparedStatement getStatementCreateTable(Connection conn) throws SQLException; @@ -29,20 +34,22 @@ public abstract class ProtectedBlockJDBC implements IProtectedBlock protected abstract PreparedStatement getStatementAllBlocks(Connection conn) throws SQLException; - public ProtectedBlockJDBC(String driver, String url) throws ClassNotFoundException + public ProtectedBlockJDBC(String driver, String url) throws PropertyVetoException { this(driver, url, null, null); } - public ProtectedBlockJDBC(String driver, String url, String username, String password) throws ClassNotFoundException + public ProtectedBlockJDBC(String driver, String url, String username, String password) throws PropertyVetoException { - Class.forName(driver); - this.url = url; + cpds = new ComboPooledDataSource(); + cpds.setDriverClass(driver); + cpds.setJdbcUrl(url); if (username != null) { - url += "?user=" + username; - url += "&password=" + password; + cpds.setUser(username); + cpds.setPassword(password); } + cpds.setMaxStatements(20); createAndConvertTable(); } @@ -52,7 +59,7 @@ public abstract class ProtectedBlockJDBC implements IProtectedBlock PreparedStatement ps = null; try { - conn = DriverManager.getConnection(url); + conn = cpds.getConnection(); ps = getStatementCreateTable(conn); ps.execute(); ps.close(); @@ -96,7 +103,7 @@ public abstract class ProtectedBlockJDBC implements IProtectedBlock PreparedStatement ps = null; try { - conn = DriverManager.getConnection(url); + conn = cpds.getConnection(); ps = getStatementDeleteAll(conn); ps.executeUpdate(); } @@ -151,7 +158,7 @@ public abstract class ProtectedBlockJDBC implements IProtectedBlock List blocks = new ArrayList(); try { - conn = DriverManager.getConnection(url); + conn = cpds.getConnection(); ps = getStatementAllBlocks(conn); rs = ps.executeQuery(); while (rs.next()) @@ -220,7 +227,7 @@ public abstract class ProtectedBlockJDBC implements IProtectedBlock PreparedStatement ps = null; try { - conn = DriverManager.getConnection(url); + conn = cpds.getConnection(); ps = getStatementInsert(conn, world, x, y, z, playerName); ps.executeUpdate(); } @@ -262,7 +269,7 @@ public abstract class ProtectedBlockJDBC implements IProtectedBlock ResultSet rs = null; try { - conn = DriverManager.getConnection(url); + conn = cpds.getConnection(); ps = getStatementPlayerCountByLocation(conn, block.getWorld().getName(), block.getX(), block.getY(), block.getZ(), playerName); rs = ps.executeQuery(); return rs.next() && rs.getInt(1) > 0 && rs.getInt(2) == 0; @@ -318,7 +325,7 @@ public abstract class ProtectedBlockJDBC implements IProtectedBlock List owners = new ArrayList(); try { - conn = DriverManager.getConnection(url); + conn = cpds.getConnection(); ps = getStatementPlayersByLocation(conn, block.getWorld().getName(), block.getX(), block.getY(), block.getZ()); rs = ps.executeQuery(); while (rs.next()) @@ -376,7 +383,7 @@ public abstract class ProtectedBlockJDBC implements IProtectedBlock PreparedStatement ps = null; try { - conn = DriverManager.getConnection(url); + conn = cpds.getConnection(); ps = getStatementDeleteByLocation(conn, block.getWorld().getName(), block.getX(), block.getY(), block.getZ()); return ps.executeUpdate(); } @@ -411,4 +418,9 @@ public abstract class ProtectedBlockJDBC implements IProtectedBlock } } } + + public void onPluginDeactivation() + { + cpds.close(); + } } -- cgit v1.2.3