summaryrefslogtreecommitdiffstats
path: root/EssentialsProtect/src
diff options
context:
space:
mode:
authorsnowleo <schneeleo@gmail.com>2012-03-03 02:40:22 +0100
committersnowleo <schneeleo@gmail.com>2012-03-03 02:40:22 +0100
commit22a37a0c1bfdad81196a38e23c120e9ddee4b43f (patch)
treecb15cb445b463669adf99bef561537610516d60c /EssentialsProtect/src
parent7b8a9d60d7da4cba5013671920b1064f711b4538 (diff)
downloadEssentials-22a37a0c1bfdad81196a38e23c120e9ddee4b43f.tar
Essentials-22a37a0c1bfdad81196a38e23c120e9ddee4b43f.tar.gz
Essentials-22a37a0c1bfdad81196a38e23c120e9ddee4b43f.tar.lz
Essentials-22a37a0c1bfdad81196a38e23c120e9ddee4b43f.tar.xz
Essentials-22a37a0c1bfdad81196a38e23c120e9ddee4b43f.zip
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.
Diffstat (limited to 'EssentialsProtect/src')
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsConnect.java16
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java84
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/data/IProtectedBlock.java2
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/data/ProtectedBlockJDBC.java42
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/data/ProtectedBlockMemory.java5
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/data/ProtectedBlockMySQL.java3
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/data/ProtectedBlockSQLite.java3
7 files changed, 115 insertions, 40 deletions
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<ProtectConfig, Boolean> settingsBoolean = new EnumMap<ProtectConfig, Boolean>(ProtectConfig.class);
//private final transient Map<ProtectConfig, String> settingsString = new EnumMap<ProtectConfig, String>(ProtectConfig.class);
//private final transient Map<ProtectConfig, List<Integer>> settingsList = new EnumMap<ProtectConfig, List<Integer>>(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<Integer>
- * itemList = settingsList.get(list); return itemList != null && !itemList.isEmpty() && itemList.contains(id); }
- */
+ /*@Override
+ public boolean checkProtectionItems(final ProtectConfig list, final int id)
+ {
+ final List<Integer> 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<ProtectConfig, Boolean> getSettingsBoolean()
+ {
+ return settingsBoolean;
+ }
+
+ public Map<ProtectConfig, String> getSettingsString()
+ {
+ return settingsString;
+ }
+
+ public Map<ProtectConfig, List<Integer>> 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<ProtectConfig, Boolean> getSettingsBoolean() { return settingsBoolean; }
- *
- * public Map<ProtectConfig, String> getSettingsString() { return settingsString; }
- *
- * public Map<ProtectConfig, List<Integer>> 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<String> 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<OwnedBlock> blocks = new ArrayList<OwnedBlock>();
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<String> owners = new ArrayList<String>();
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);
}