From f109fef4676964600e469ccef9cbb49c2aacd832 Mon Sep 17 00:00:00 2001 From: Butzlabben Date: Fri, 16 Aug 2019 21:33:12 +0200 Subject: [PATCH] Added 1.8 support --- pom.xml | 4 ++-- .../butzlabben/world/util/PlayerPositions.java | 14 ++++++++++++++ .../world/util/database/DatabaseConnection.java | 13 +++++++++++-- .../world/util/database/DatabaseUtil.java | 2 ++ .../world/util/database/MysqlConnection.java | 4 ++-- .../world/util/database/SqliteConnection.java | 16 ++++++++++++++-- ...abben.world.wrapper.GeneratorSettingsTest.xml | 14 +++++++------- 7 files changed, 52 insertions(+), 15 deletions(-) diff --git a/pom.xml b/pom.xml index 5048816..11fa957 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 de.butzlabben.world WorldSystem - 2.4.6.3 + 2.4.7 UTF-8 @@ -183,7 +183,7 @@ me.clip placeholderapi - LATEST + 2.9.2 provided diff --git a/src/main/java/de/butzlabben/world/util/PlayerPositions.java b/src/main/java/de/butzlabben/world/util/PlayerPositions.java index bd209ba..c157ceb 100644 --- a/src/main/java/de/butzlabben/world/util/PlayerPositions.java +++ b/src/main/java/de/butzlabben/world/util/PlayerPositions.java @@ -34,6 +34,8 @@ public class PlayerPositions { public Location injectWorldsLocation(Player player, WorldConfig config, Location location) { if (!PluginConfig.useWorldSpawnLastLocation()) return location; + if (!util.isConnectionAvailable()) + return location; Preconditions.checkNotNull(player); Preconditions.checkNotNull(config); @@ -69,6 +71,8 @@ public class PlayerPositions { public Location injectPlayersLocation(Player player, Location location) { if (!PluginConfig.useSpawnLastLocation()) return location; + if (!util.isConnectionAvailable()) + return location; if (player == null) return location; Preconditions.checkNotNull(location); @@ -108,6 +112,8 @@ public class PlayerPositions { public void savePlayerLocation(Player player) { if (!PluginConfig.useSpawnLastLocation()) return; + if (!util.isConnectionAvailable()) + return; Preconditions.checkNotNull(player); @@ -135,6 +141,8 @@ public class PlayerPositions { public void saveWorldsPlayerLocation(Player player, WorldConfig config) { if (!PluginConfig.useWorldSpawnLastLocation()) return; + if (!util.isConnectionAvailable()) + return; Preconditions.checkNotNull(player); Preconditions.checkNotNull(config); @@ -162,6 +170,9 @@ public class PlayerPositions { public void deletePositions(WorldConfig config) { Preconditions.checkNotNull(config); + if (!util.isConnectionAvailable()) + return; + String tableName = PluginConfig.getWorldsTableName(); int id = config.getId(); @@ -180,6 +191,9 @@ public class PlayerPositions { } private void checkTables() { + if (!util.isConnectionAvailable()) + return; + String worldsTableName = PluginConfig.getWorldsTableName(); try { PreparedStatement ps = util.prepareStatement("CREATE TABLE IF NOT EXISTS " + worldsTableName + diff --git a/src/main/java/de/butzlabben/world/util/database/DatabaseConnection.java b/src/main/java/de/butzlabben/world/util/database/DatabaseConnection.java index affe1c9..11c6bba 100644 --- a/src/main/java/de/butzlabben/world/util/database/DatabaseConnection.java +++ b/src/main/java/de/butzlabben/world/util/database/DatabaseConnection.java @@ -1,21 +1,25 @@ package de.butzlabben.world.util.database; +import lombok.Getter; + import java.sql.*; public abstract class DatabaseConnection implements DatabaseUtil { + final Object lock = new Object(); + @Getter Connection connection; public void close() { synchronized (lock) { try { if (connection == null || connection.isClosed()) { - System.err.println("[WorldSystem|DB] Connection does not exist or was already closed"); + System.err.println("[WorldSystem | DB] Connection does not exist or was already closed"); return; } connection.close(); } catch (SQLException e) { - System.out.println("[WorldSystem|DB] Connection could not be closed"); + System.out.println("[WorldSystem | DB] Connection could not be closed"); e.printStackTrace(); } } @@ -44,4 +48,9 @@ public abstract class DatabaseConnection implements DatabaseUtil { return ps.executeUpdate(); } } + + @Override + public boolean isConnectionAvailable() { + return connection != null; + } } diff --git a/src/main/java/de/butzlabben/world/util/database/DatabaseUtil.java b/src/main/java/de/butzlabben/world/util/database/DatabaseUtil.java index b0fdf9e..d2ea9fc 100644 --- a/src/main/java/de/butzlabben/world/util/database/DatabaseUtil.java +++ b/src/main/java/de/butzlabben/world/util/database/DatabaseUtil.java @@ -15,4 +15,6 @@ public interface DatabaseUtil { void close(); void connect(); + + boolean isConnectionAvailable(); } diff --git a/src/main/java/de/butzlabben/world/util/database/MysqlConnection.java b/src/main/java/de/butzlabben/world/util/database/MysqlConnection.java index 1197915..ff95c8e 100644 --- a/src/main/java/de/butzlabben/world/util/database/MysqlConnection.java +++ b/src/main/java/de/butzlabben/world/util/database/MysqlConnection.java @@ -12,14 +12,14 @@ public class MysqlConnection extends DatabaseConnection { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { - System.out.println("[WorldSystem|MySQL] Drivers are not working properly"); + System.out.println("[WorldSystem | MySQL] Drivers are not working properly"); return; } try { connection = DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + database + "?user=" + user + "&password=" + password); } catch (SQLException e) { - System.out.println("[WorldSystem|MySQL] Failed to connect with given server:"); + System.out.println("[WorldSystem | MySQL] Failed to connect with given server:"); e.printStackTrace(); } } diff --git a/src/main/java/de/butzlabben/world/util/database/SqliteConnection.java b/src/main/java/de/butzlabben/world/util/database/SqliteConnection.java index 9210ce4..9080d1c 100644 --- a/src/main/java/de/butzlabben/world/util/database/SqliteConnection.java +++ b/src/main/java/de/butzlabben/world/util/database/SqliteConnection.java @@ -1,24 +1,36 @@ package de.butzlabben.world.util.database; import de.butzlabben.world.config.PluginConfig; +import de.butzlabben.world.util.VersionUtil; +import org.bukkit.Bukkit; import java.sql.DriverManager; import java.sql.SQLException; +import java.util.logging.Level; public class SqliteConnection extends DatabaseConnection { private void connect(String file) { + if (VersionUtil.getVersion() <= 8) { + Bukkit.getLogger().log(Level.SEVERE, "[WorldSystem | SQLite] ========================================================"); + Bukkit.getLogger().log(Level.SEVERE, "[WorldSystem | SQLite] SQLite is not available in 1.8."); + Bukkit.getLogger().log(Level.SEVERE, "[WorldSystem | SQLite] Please consider using MySQL or disable the use_last_location option"); + Bukkit.getLogger().log(Level.SEVERE, "[WorldSystem | SQLite] ========================================================"); + return; + } + synchronized (lock) { try { Class.forName("com.mysql.jdbc.Driver"); + Class.forName("org.sqlite.JDBC"); } catch (ClassNotFoundException e) { - System.out.println("[WorldSystem|MySQL] Drivers are not working properly"); + Bukkit.getLogger().log(Level.SEVERE, "[WorldSystem | SQLite] Drivers are not working properly"); return; } try { connection = DriverManager.getConnection("jdbc:sqlite:" + file); } catch (SQLException e) { - System.out.println("[WorldSystem|MySQL] Failed to connect with given server:"); + Bukkit.getLogger().log(Level.SEVERE, "[WorldSystem | SQLite] Failed to connect with given server:"); e.printStackTrace(); } } diff --git a/target/surefire-reports/TEST-de.butzlabben.world.wrapper.GeneratorSettingsTest.xml b/target/surefire-reports/TEST-de.butzlabben.world.wrapper.GeneratorSettingsTest.xml index 1210533..3cdc368 100644 --- a/target/surefire-reports/TEST-de.butzlabben.world.wrapper.GeneratorSettingsTest.xml +++ b/target/surefire-reports/TEST-de.butzlabben.world.wrapper.GeneratorSettingsTest.xml @@ -1,5 +1,5 @@ - + @@ -7,7 +7,7 @@ - + @@ -18,8 +18,8 @@ - - + + @@ -31,7 +31,7 @@ - + @@ -53,7 +53,7 @@ - + @@ -61,5 +61,5 @@ - + \ No newline at end of file