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. --- .../essentials/protect/EssentialsConnect.java | 16 +++-- .../essentials/protect/EssentialsProtect.java | 84 +++++++++++++++++----- .../essentials/protect/data/IProtectedBlock.java | 2 + .../protect/data/ProtectedBlockJDBC.java | 42 +++++++---- .../protect/data/ProtectedBlockMemory.java | 5 ++ .../protect/data/ProtectedBlockMySQL.java | 3 +- .../protect/data/ProtectedBlockSQLite.java | 3 +- 7 files changed, 115 insertions(+), 40 deletions(-) (limited to 'EssentialsProtect/src') diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsConnect.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsConnect.java index 9f1cc122a..539ff208b 100644 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsConnect.java +++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsConnect.java @@ -66,6 +66,10 @@ public class EssentialsConnect @Override public void onReload() { + if (protect.getStorage() != null) + { + protect.getStorage().onPluginDeactivation(); + } /* * for (ProtectConfig protectConfig : ProtectConfig.values()) { if (protectConfig.isList()) { @@ -93,7 +97,7 @@ public class EssentialsConnect settings.getData().getDbuser(), settings.getData().getDbpassword())); } - catch (ClassNotFoundException ex) + catch (PropertyVetoException ex) { LOGGER.log(Level.SEVERE, null, ex); } @@ -104,15 +108,15 @@ public class EssentialsConnect { protect.setStorage(new ProtectedBlockSQLite("jdbc:sqlite:plugins/Essentials/EssentialsProtect.db")); } - catch (ClassNotFoundException ex) + catch (PropertyVetoException ex) { LOGGER.log(Level.SEVERE, null, ex); } } - /* - * if (protect.getSettingBool(ProtectConfig.memstore)) { protect.setStorage(new - * ProtectedBlockMemory(protect.getStorage(), protect)); } - */ + /*if (protect.getSettingBool(ProtectConfig.memstore)) + { + protect.setStorage(new ProtectedBlockMemory(protect.getStorage(), protect)); + }*/ } finally diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java index 5c3e3eab7..72000eeba 100644 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java +++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java @@ -1,7 +1,9 @@ package com.earth2me.essentials.protect; import com.earth2me.essentials.protect.data.IProtectedBlock; +import java.util.logging.Filter; import java.util.logging.Level; +import java.util.logging.LogRecord; import java.util.logging.Logger; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; @@ -12,6 +14,7 @@ import org.bukkit.plugin.java.JavaPlugin; public class EssentialsProtect extends JavaPlugin implements IProtect { private static final Logger LOGGER = Logger.getLogger("Minecraft"); + private static com.mchange.v2.log.MLogger C3P0logger; //private final transient Map settingsBoolean = new EnumMap(ProtectConfig.class); //private final transient Map settingsString = new EnumMap(ProtectConfig.class); //private final transient Map> settingsList = new EnumMap>(ProtectConfig.class); @@ -20,6 +23,18 @@ public class EssentialsProtect extends JavaPlugin implements IProtect private transient ProtectHolder settings = null; @Override + public void onLoad() + { + C3P0logger = com.mchange.v2.log.MLog.getLogger(com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.class); + C3P0logger.setFilter(new Filter() + { + public boolean isLoggable(LogRecord lr) + { + return lr.getLevel() != Level.INFO; + } + }); + } + public void onEnable() { final PluginManager pm = this.getServer().getPluginManager(); @@ -56,10 +71,13 @@ public class EssentialsProtect extends JavaPlugin implements IProtect LOGGER.log(Level.SEVERE, "Essentials not installed or failed to load. Essenials Protect is in emergency mode now."); } - /* - * @Override public boolean checkProtectionItems(final ProtectConfig list, final int id) { final List - * itemList = settingsList.get(list); return itemList != null && !itemList.isEmpty() && itemList.contains(id); } - */ + /*@Override + public boolean checkProtectionItems(final ProtectConfig list, final int id) + { + final List itemList = settingsList.get(list); + return itemList != null && !itemList.isEmpty() && itemList.contains(id); + }*/ + @Override public IProtectedBlock getStorage() { @@ -76,20 +94,52 @@ public class EssentialsProtect extends JavaPlugin implements IProtect { return ess; } + + /*public Map getSettingsBoolean() + { + return settingsBoolean; + } + + public Map getSettingsString() + { + return settingsString; + } + + public Map> getSettingsList() + { + return settingsList; + } + + @Override + public boolean getSettingBool(final ProtectConfig protectConfig) + { + final Boolean bool = settingsBoolean.get(protectConfig); + return bool == null ? protectConfig.getDefaultValueBoolean() : bool; + } + + @Override + public String getSettingString(final ProtectConfig protectConfig) + { + final String str = settingsString.get(protectConfig); + return str == null ? protectConfig.getDefaultValueString() : str; + }*/ + + public void onDisable() + { + if (storage != null) + { + storage.onPluginDeactivation(); + } + // Sleep for a second to allow the database to close. + try + { + Thread.sleep(1000); + } + catch (InterruptedException ex) + { + } + } - /* - * public Map getSettingsBoolean() { return settingsBoolean; } - * - * public Map getSettingsString() { return settingsString; } - * - * public Map> getSettingsList() { return settingsList; } - * - * @Override public boolean getSettingBool(final ProtectConfig protectConfig) { final Boolean bool = - * settingsBoolean.get(protectConfig); return bool == null ? protectConfig.getDefaultValueBoolean() : bool; } - * - * @Override public String getSettingString(final ProtectConfig protectConfig) { final String str = - * settingsString.get(protectConfig); return str == null ? protectConfig.getDefaultValueString() : str; } - */ public ProtectHolder getSettings() { return settings; diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/data/IProtectedBlock.java b/EssentialsProtect/src/com/earth2me/essentials/protect/data/IProtectedBlock.java index d8267429f..755baface 100644 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/data/IProtectedBlock.java +++ b/EssentialsProtect/src/com/earth2me/essentials/protect/data/IProtectedBlock.java @@ -19,4 +19,6 @@ public interface IProtectedBlock public List getOwners(Block block); public int unprotectBlock(Block block); + + public void onPluginDeactivation(); } 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(); + } } diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/data/ProtectedBlockMemory.java b/EssentialsProtect/src/com/earth2me/essentials/protect/data/ProtectedBlockMemory.java index 61e38a848..876c8a575 100644 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/data/ProtectedBlockMemory.java +++ b/EssentialsProtect/src/com/earth2me/essentials/protect/data/ProtectedBlockMemory.java @@ -240,4 +240,9 @@ public class ProtectedBlockMemory implements IProtectedBlock } return id; } + + public void onPluginDeactivation() + { + storage.onPluginDeactivation(); + } } diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/data/ProtectedBlockMySQL.java b/EssentialsProtect/src/com/earth2me/essentials/protect/data/ProtectedBlockMySQL.java index 96f399d27..2a0077698 100644 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/data/ProtectedBlockMySQL.java +++ b/EssentialsProtect/src/com/earth2me/essentials/protect/data/ProtectedBlockMySQL.java @@ -1,5 +1,6 @@ package com.earth2me.essentials.protect.data; +import java.beans.PropertyVetoException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -10,7 +11,7 @@ import java.util.logging.Logger; public class ProtectedBlockMySQL extends ProtectedBlockJDBC { - public ProtectedBlockMySQL(String url, String username, String password) throws ClassNotFoundException + public ProtectedBlockMySQL(String url, String username, String password) throws PropertyVetoException { super("com.mysql.jdbc.Driver", url, username, password); } diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/data/ProtectedBlockSQLite.java b/EssentialsProtect/src/com/earth2me/essentials/protect/data/ProtectedBlockSQLite.java index 84aff3823..cf256f1ec 100644 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/data/ProtectedBlockSQLite.java +++ b/EssentialsProtect/src/com/earth2me/essentials/protect/data/ProtectedBlockSQLite.java @@ -1,5 +1,6 @@ package com.earth2me.essentials.protect.data; +import java.beans.PropertyVetoException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; @@ -7,7 +8,7 @@ import java.sql.SQLException; public class ProtectedBlockSQLite extends ProtectedBlockJDBC { - public ProtectedBlockSQLite(String url) throws ClassNotFoundException + public ProtectedBlockSQLite(String url) throws PropertyVetoException { super("org.sqlite.JDBC", url); } -- cgit v1.2.3