diff --git a/src/main/java/ru/prisonlife/PrisonAPI/PrisonAPI.java b/src/main/java/ru/prisonlife/PrisonAPI/PrisonAPI.java index 4946035..fa629cf 100644 --- a/src/main/java/ru/prisonlife/PrisonAPI/PrisonAPI.java +++ b/src/main/java/ru/prisonlife/PrisonAPI/PrisonAPI.java @@ -11,7 +11,27 @@ public class PrisonAPI extends JavaPlugin { public static final String PLUGIN_PATH = "plugins/PrisonManager"; public enum Factions { - NONE, ASIANS, LATINOS, NIGGAZ, POLICE + NONE(0), ASIANS(1), LATINOS(2), NIGGAZ(3), POLICE(4); + + public static Factions valueOf(int id) { + for (Factions factions : Factions.values()) { + if (factions.id == id) { + return factions; + } + } + + throw new IllegalArgumentException("Factions id " + id + " not defined!"); + } + + private int id; + + Factions(int id) { + this.id = id; + } + + public int getId() { + return id; + } } public static Connection CONN; diff --git a/src/main/java/ru/prisonlife/PrisonAPI/template/Faction.java b/src/main/java/ru/prisonlife/PrisonAPI/template/Faction.java index 2f981ac..78d4dbb 100644 --- a/src/main/java/ru/prisonlife/PrisonAPI/template/Faction.java +++ b/src/main/java/ru/prisonlife/PrisonAPI/template/Faction.java @@ -1,21 +1,18 @@ package ru.prisonlife.prisonapi.template; import org.bukkit.Bukkit; -import org.bukkit.entity.Player; -import ru.prisonlife.prisonapi.PrisonAPI; +import ru.prisonlife.prisonapi.PrisonAPI.Factions; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Iterator; import java.util.List; import java.util.stream.Collectors; +import static ru.prisonlife.prisonapi.PrisonAPI.CONN; + public class Faction { - private PreparedStatement state; - private ResultSet resultSet; private Prisoner me; Faction(Prisoner prisoner) { @@ -23,43 +20,45 @@ public class Faction { } public String getType() throws SQLException { - connect(); - if (resultSet.first()) { - resultSet = state.executeQuery("SELECT FACTION FROM player_stats WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - if (resultSet.first()) { - return resultSet.getString(1); - } - } - disconnect(); - return "null"; - } + try (PreparedStatement statement = CONN.prepareStatement("SELECT FACTION FROM player_stats WHERE UUID = ?")) { + statement.setString(1, me.getPlayer().getUniqueId().toString()); - public int getId() throws SQLException { - connect(); - if (resultSet.first()) { - resultSet = state.executeQuery("SELECT FACTION FROM player_stats WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - if (resultSet.first()) { - for (int i = 0; i < PrisonAPI.Factions.values().length; i++) { - if (PrisonAPI.Factions.values()[i].name().equals(resultSet.getString(1))) { - return i; - } + try (ResultSet resultSet = statement.executeQuery()) { + if (resultSet.next()) { + return resultSet.getString(1); + } else { + return "null"; } } } - disconnect(); + } + + public int getId() throws SQLException { + try (PreparedStatement statement = CONN.prepareStatement("SELECT FACTION FROM player_stats WHERE UUID = ?")) { + statement.setString(1, me.getPlayer().getUniqueId().toString()); + + try (ResultSet resultSet = statement.executeQuery()) { + if (resultSet.next()) { + return Factions.valueOf(resultSet.getString(1)).getId(); + } + } + } + return 0; } public int getRangId() throws SQLException { - connect(); - if (resultSet.first()) { - resultSet = state.executeQuery("SELECT F_RANG FROM player_stats WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - if (resultSet.first()) { - return resultSet.getInt(1); + try (PreparedStatement statement = CONN.prepareStatement("SELECT F_RANG FROM player_stats WHERE UUID = ?")) { + statement.setString(1, me.getPlayer().getUniqueId().toString()); + + try (ResultSet resultSet = statement.executeQuery()) { + if (resultSet.next()) { + return resultSet.getInt(1); + } else { + return 0; + } } } - disconnect(); - return 0; } public String getRangType() throws SQLException { @@ -72,81 +71,78 @@ public class Faction { } public void addRang(int value) throws SQLException { - connect(); - if (resultSet.first()) { - state.execute("UPDATE player_stats SET F_RANG = " + (getRangId() + value) + " WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - } - disconnect(); + setRang(getRangId() + value); } public void setRang(int value) throws SQLException { - connect(); - if (resultSet.first()) { - state.execute("UPDATE player_stats SET F_RANG = " + value + " WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); + try (PreparedStatement statement = CONN.prepareStatement("UPDATE player_stats SET F_RANG = ? WHERE UUID = ?")) { + statement.setInt(1, value); + statement.setString(2, me.getPlayer().getUniqueId().toString()); + + statement.executeUpdate(); } - disconnect(); } public void setFaction(int id) throws SQLException { - connect(); - if (resultSet.first()) { - state.execute("UPDATE player_stats SET FACTION = '" + PrisonAPI.Factions.values()[id].name() + "' WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); + try (PreparedStatement statement = CONN.prepareStatement("UPDATE player_stats SET FACTION = ? WHERE UUID = ?")) { + statement.setInt(1, Factions.valueOf(id).getId()); + statement.setString(2, me.getPlayer().getUniqueId().toString()); + + statement.executeUpdate(); } - disconnect(); } public int getRespect() throws SQLException { - connect(); - if (resultSet.first()) { - resultSet = state.executeQuery("SELECT RESPECT FROM prison4life.player_stats WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - if (resultSet.first()) { - return resultSet.getInt(1); + try (PreparedStatement statement = CONN.prepareStatement("SELECT RESPECT FROM prison4life.player_stats WHERE UUID = ?")) { + statement.setString(1, me.getPlayer().getUniqueId().toString()); + + try (ResultSet resultSet = statement.executeQuery()) { + if (resultSet.next()) { + return resultSet.getInt(1); + } else { + return 0; + } } } - disconnect(); - return 0; } public void addRespect(int value) throws SQLException { - connect(); - if (resultSet.first()) { - state.execute("UPDATE player_stats SET RESPECT = " + (getRespect() + value) + " WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - } - disconnect(); + setRespect(getRespect() + value); } public void setRespect(int value) throws SQLException { - connect(); - if (resultSet.first()) { - state.execute("UPDATE player_stats SET RESPECT = " + value + " WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); + try (PreparedStatement statement = CONN.prepareStatement("UPDATE player_stats SET RESPECT = ? WHERE UUID = ?")) { + statement.setInt(1, value); + statement.setString(2, me.getPlayer().getUniqueId().toString()); + + statement.executeUpdate(); } - disconnect(); } public int getRespectDailyCooldown() throws SQLException { - connect(); - if (resultSet.first()) { - resultSet = state.executeQuery("SELECT COOLDOWN FROM daily_respect_task WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); + try (PreparedStatement statement = CONN.prepareStatement("SELECT COOLDOWN FROM daily_respect_task WHERE UUID = ?")) { + statement.setString(1, me.getPlayer().getUniqueId().toString()); + + try (ResultSet resultSet = statement.executeQuery()) { + if (resultSet.next()) { + return resultSet.getInt(1); + } else { + return 0; + } + } } - if (resultSet.first()) { - return resultSet.getInt(1); - } - disconnect(); - return 0; } public void addRespectDailyCooldown(int value) throws SQLException { - connect(); - if (resultSet.first()) { - state.execute("UPDATE daily_respect_task SET COOLDOWN = " + (getRespectDailyCooldown() + value) - + " WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - } + setRespectDailyCooldown(getRespectDailyCooldown() + value); } public void setRespectDailyCooldown(int value) throws SQLException { - connect(); - if (resultSet.first()) { - state.execute("UPDATE daily_respect_task SET COOLDOWN = " + value + " WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); + try (PreparedStatement statement = CONN.prepareStatement("UPDATE daily_respect_task SET COOLDOWN = ? WHERE UUID = ?")) { + statement.setInt(1, value); + statement.setString(2, me.getPlayer().getUniqueId().toString()); + + statement.executeUpdate(); } } @@ -163,15 +159,4 @@ public class Faction { }) .collect(Collectors.toList()); } - - private void connect() throws SQLException { - state = PrisonAPI.CONN.prepareStatement("SELECT * UUID FROM player_stats WHERE UUID = ?;"); - state.setString(1, me.getPlayer().getUniqueId().toString()); - resultSet = state.executeQuery("SELECT UUID FROM player_stats WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - } - - private void disconnect() throws SQLException { - resultSet.close(); - state.close(); - } } diff --git a/src/main/java/ru/prisonlife/PrisonAPI/template/Level.java b/src/main/java/ru/prisonlife/PrisonAPI/template/Level.java index 7f40bee..87a3f1b 100644 --- a/src/main/java/ru/prisonlife/PrisonAPI/template/Level.java +++ b/src/main/java/ru/prisonlife/PrisonAPI/template/Level.java @@ -1,15 +1,13 @@ package ru.prisonlife.prisonapi.template; -import ru.prisonlife.prisonapi.PrisonAPI; - import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import static ru.prisonlife.prisonapi.PrisonAPI.CONN; + public class Level { - private PreparedStatement state; - private ResultSet resultSet; private Prisoner me; private Score score; @@ -19,50 +17,41 @@ public class Level { } public Score getScore() throws SQLException { + //FIXME приведи в порядок метод + /* connect(); if (resultSet.first()) { return this.score; } disconnect(); + */ return null; } public double getLevel() throws SQLException, NullPointerException { - connect(); - if (resultSet.first()) { - resultSet = state.executeQuery("SELECT LEVEL FROM player_stats WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - if (resultSet.first()) { - return resultSet.getDouble(1); + try (PreparedStatement statement = CONN.prepareStatement("SELECT LEVEL FROM player_stats WHERE UUID = ?")) { + statement.setString(1, me.getPlayer().getUniqueId().toString()); + + try (ResultSet resultSet = statement.executeQuery()) { + if (resultSet.next()) { + return resultSet.getDouble(1); + } else { + return 1d; //TODO нужно или default значение, или exception + } } } - disconnect(); - return NullPointerException.class.hashCode(); } public void addLevel(double value) throws SQLException, NullPointerException { - connect(); - if (resultSet.first()) { - state.execute("UPDATE player_stats SET LEVEL = " + (getLevel() + value) + " WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - } - disconnect(); + setLevel(getLevel() + value); } public void setLevel(double value) throws SQLException, NullPointerException { - connect(); - if (resultSet.first()) { - state.execute("UPDATE player_stats SET LEVEL = " + value + " WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); + try (PreparedStatement statement = CONN.prepareStatement("UPDATE player_stats SET LEVEL = ? WHERE UUID = ?")) { + statement.setDouble(1, getLevel() + value); + statement.setString(2, me.getPlayer().getUniqueId().toString()); + + statement.executeUpdate(); } - disconnect(); - } - - private void connect() throws SQLException { - state = PrisonAPI.CONN.prepareStatement("SELECT * UUID FROM player_stats WHERE UUID = ?;"); - state.setString(1, me.getPlayer().getUniqueId().toString()); - resultSet = state.executeQuery("SELECT UUID FROM player_stats WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - } - - private void disconnect() throws SQLException { - resultSet.close(); - state.close(); } } diff --git a/src/main/java/ru/prisonlife/PrisonAPI/template/Prisoner.java b/src/main/java/ru/prisonlife/PrisonAPI/template/Prisoner.java index 85d0ca1..5b2bd9c 100644 --- a/src/main/java/ru/prisonlife/PrisonAPI/template/Prisoner.java +++ b/src/main/java/ru/prisonlife/PrisonAPI/template/Prisoner.java @@ -4,7 +4,6 @@ import org.bukkit.Location; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; -import ru.prisonlife.prisonapi.PrisonAPI; import java.io.File; import java.sql.PreparedStatement; @@ -14,6 +13,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import static ru.prisonlife.prisonapi.PrisonAPI.CONN; import static ru.prisonlife.prisonapi.PrisonAPI.PLUGIN_PATH; public class Prisoner { @@ -23,8 +23,6 @@ public class Prisoner { private Faction faction; private Wallet wallet; private Stats stats; - private PreparedStatement state; - private ResultSet resultSet; public Prisoner(Player player) { me = player; @@ -122,20 +120,35 @@ public class Prisoner { } public void register() throws SQLException { - state = PrisonAPI.CONN.prepareStatement("SELECT * UUID FROM player_stats WHERE UUID = ?;"); - state.setString(1, me.getUniqueId().toString()); - resultSet = state.executeQuery("SELECT UUID FROM player_stats WHERE UUID = '" + me.getUniqueId() + "'"); - if (!resultSet.next()) { - state.execute( - "INSERT INTO player_stats(NAME, UUID, LEVEL, POINTS, FACTION, RESPECT, F_RANG, WALLET, G_TIME, D_BLOCKS, " + - "K_PLAYERS, K_MOBS, DEATHS) VALUES (" + "'" + getPlayer().getName() - + "', '" + me.getUniqueId() + "', 1, 0, 'NONE', 0, 0, 0, 0, 0, 0, 0, 0);"); - state.execute("INSERT INTO daily_respect_task(NAME, UUID, COOLDOWN) VALUES ('" + me.getName() + "', '" + me.getUniqueId() + "', (3600 * 24));"); - level = new Level(this); - stats = new Stats(this); - wallet = new Wallet(this); + PreparedStatement statement = CONN.prepareStatement("SELECT UUID FROM player_stats WHERE UUID = ?"); + statement.setString(1, me.getUniqueId().toString()); + + try (ResultSet resultSet = statement.executeQuery()) { + if (!resultSet.next()) { + statement.close(); + + statement = CONN.prepareStatement( + "INSERT INTO player_stats(NAME, UUID, LEVEL, POINTS, FACTION, RESPECT, F_RANG, WALLET, " + + "G_TIME, D_BLOCKS, K_PLAYERS, K_MOBS, DEATHS) " + + "VALUES (?, ?, 1, 0, 'NONE', 0, 0, 0, 0, 0, 0, 0, 0)"); + statement.setString(1, getPlayer().getName()); + statement.setString(2, me.getUniqueId().toString()); + statement.executeUpdate(); + statement.close(); + + statement = CONN.prepareStatement( + "INSERT INTO daily_respect_task(NAME, UUID, COOLDOWN) " + + "VALUES (?, ?, ?)"); + statement.setString(1, getPlayer().getName()); + statement.setString(2, me.getUniqueId().toString()); + statement.setInt(3, (3600 * 24)); + statement.executeUpdate(); + + level = new Level(this); + stats = new Stats(this); + wallet = new Wallet(this); + } } - resultSet.close(); - state.close(); + statement.close(); } } \ No newline at end of file diff --git a/src/main/java/ru/prisonlife/PrisonAPI/template/Score.java b/src/main/java/ru/prisonlife/PrisonAPI/template/Score.java index 6b14375..59ebf47 100644 --- a/src/main/java/ru/prisonlife/PrisonAPI/template/Score.java +++ b/src/main/java/ru/prisonlife/PrisonAPI/template/Score.java @@ -1,15 +1,13 @@ package ru.prisonlife.prisonapi.template; -import ru.prisonlife.prisonapi.PrisonAPI; - import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import static ru.prisonlife.prisonapi.PrisonAPI.CONN; + public class Score { - private PreparedStatement state; - private ResultSet resultSet; private Prisoner me; Score(Prisoner prisoner) { @@ -17,41 +15,29 @@ public class Score { } public double getPoints() throws SQLException { - connect(); - if (resultSet.first()) { - resultSet = state.executeQuery("SELECT POINTS FROM player_stats WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - if (resultSet.first()) { - return resultSet.getDouble(1); + try (PreparedStatement statement = CONN.prepareStatement("SELECT POINTS FROM player_stats WHERE UUID = ?")) { + statement.setString(1, me.getPlayer().getUniqueId().toString()); + + try (ResultSet resultSet = statement.executeQuery()) { + if (resultSet.next()) { + return resultSet.getDouble(1); + } else { + return 0d; //TODO нужно или default значение, или exception + } } } - disconnect(); - return NullPointerException.class.hashCode(); } public void setPoints(double value) throws SQLException { - connect(); - if (resultSet.first()) { - state.execute("UPDATE player_stats SET POINTS = " + value + " WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); + try (PreparedStatement statement = CONN.prepareStatement("UPDATE player_stats SET POINTS = ? WHERE UUID = ?")) { + statement.setDouble(1, value); + statement.setString(2, me.getPlayer().getUniqueId().toString()); + + statement.executeUpdate(); } - disconnect(); } public void addPoints(double value) throws SQLException { - connect(); - if (resultSet.first()) { - state.execute("UPDATE player_stats SET POINTS = " + (getPoints() + value) + " WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - } - disconnect(); - } - - private void connect() throws SQLException { - state = PrisonAPI.CONN.prepareStatement("SELECT * UUID FROM player_stats WHERE UUID = ?;"); - state.setString(1, me.getPlayer().getUniqueId().toString()); - resultSet = state.executeQuery("SELECT UUID FROM player_stats WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - } - - private void disconnect() throws SQLException { - resultSet.close(); - state.close(); + setPoints(getPoints() + value); } } diff --git a/src/main/java/ru/prisonlife/PrisonAPI/template/Stats.java b/src/main/java/ru/prisonlife/PrisonAPI/template/Stats.java index fbbc84d..cad3e4b 100644 --- a/src/main/java/ru/prisonlife/PrisonAPI/template/Stats.java +++ b/src/main/java/ru/prisonlife/PrisonAPI/template/Stats.java @@ -1,15 +1,13 @@ package ru.prisonlife.prisonapi.template; -import ru.prisonlife.prisonapi.PrisonAPI; - import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import static ru.prisonlife.prisonapi.PrisonAPI.CONN; + public class Stats { - private PreparedStatement state; - private ResultSet resultSet; private Prisoner me; Stats(Prisoner prisoner) { @@ -17,149 +15,137 @@ public class Stats { } public void setServerTime(int value) throws SQLException { - connect(); - if (resultSet.first()) { - state.execute("UPDATE player_stats SET G_TIME = " + value + " WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); + try (PreparedStatement statement = CONN.prepareStatement("UPDATE player_stats SET G_TIME = ? WHERE UUID = ?")) { + statement.setDouble(1, value); + statement.setString(2, me.getPlayer().getUniqueId().toString()); + + statement.executeUpdate(); } - disconnect(); } public int getServerTime() throws SQLException { - connect(); - if (resultSet.first()) { - resultSet = state.executeQuery("SELECT G_TIME FROM player_stats WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - if (resultSet.first()) { - return resultSet.getInt(1); + try (PreparedStatement statement = CONN.prepareStatement("SELECT G_TIME FROM player_stats WHERE UUID = ?")) { + statement.setString(1, me.getPlayer().getUniqueId().toString()); + + try (ResultSet resultSet = statement.executeQuery()) { + if (resultSet.next()) { + return resultSet.getInt(1); + } else { + return 0; //TODO нужно или default значение, или exception + } } } - disconnect(); - return NullPointerException.class.hashCode(); } public void addServerTime(int value) throws SQLException { - connect(); - if (resultSet.first()) { - state.execute("UPDATE player_stats SET G_TIME = " + (getServerTime() + value) + " WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - } - disconnect(); + setServerTime(getServerTime() + value); } public void setBlocks(int value) throws SQLException { - connect(); - if (resultSet.first()) { - state.execute("UPDATE player_stats SET B = " + value + " WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); + try (PreparedStatement statement = CONN.prepareStatement("UPDATE player_stats SET B = ? WHERE UUID = ?")) { + statement.setDouble(1, value); + statement.setString(2, me.getPlayer().getUniqueId().toString()); + + statement.executeUpdate(); } - disconnect(); } public int getBlocks() throws SQLException { - connect(); - if (resultSet.first()) { - resultSet = state.executeQuery("SELECT D_BLOCKS FROM player_stats WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - if (resultSet.first()) { - return resultSet.getInt(1); + try (PreparedStatement statement = CONN.prepareStatement("SELECT D_BLOCKS FROM player_stats WHERE UUID = ?")) { + statement.setString(1, me.getPlayer().getUniqueId().toString()); + + try (ResultSet resultSet = statement.executeQuery()) { + if (resultSet.next()) { + return resultSet.getInt(1); + } else { + return 0; //TODO нужно или default значение, или exception + } } } - disconnect(); - return NullPointerException.class.hashCode(); } public void addBlocks(int value) throws SQLException { - connect(); - if (resultSet.first()) { - state.execute("UPDATE player_stats SET D_BLOCKS = " + (getBlocks() + value) + " WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - } - disconnect(); + setBlocks(getBlocks() + value); } public void setPlayers(int value) throws SQLException { - connect(); - if (resultSet.first()) { - state.execute("UPDATE player_stats SET K_PLAYERS = " + value + " WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); + try (PreparedStatement statement = CONN.prepareStatement("UPDATE player_stats SET K_PLAYERS = ? WHERE UUID = ?")) { + statement.setDouble(1, value); + statement.setString(2, me.getPlayer().getUniqueId().toString()); + + statement.executeUpdate(); } - disconnect(); } public int getPlayers() throws SQLException { - connect(); - if (resultSet.first()) { - resultSet = state.executeQuery("SELECT K_PLAYERS FROM player_stats WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - if (resultSet.first()) { - return resultSet.getInt(1); + try (PreparedStatement statement = CONN.prepareStatement("SELECT K_PLAYERS FROM player_stats WHERE UUID = ?")) { + statement.setString(1, me.getPlayer().getUniqueId().toString()); + + try (ResultSet resultSet = statement.executeQuery()) { + if (resultSet.next()) { + return resultSet.getInt(1); + } else { + return 0; //TODO нужно или default значение, или exception + } } } - disconnect(); - return NullPointerException.class.hashCode(); } public void addPlayers(int value) throws SQLException { - connect(); - if (resultSet.first()) { - state.execute("UPDATE player_stats SET K_PLAYERS = " + (getPlayers() + value) + " WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - } - disconnect(); + setPlayers(getPlayers() + value); } public void setMobs(int value) throws SQLException { - connect(); - if (resultSet.first()) { - state.execute("UPDATE player_stats SET K_MOBS = " + value + " WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); + try (PreparedStatement statement = CONN.prepareStatement("UPDATE player_stats SET K_MOBS = ? WHERE UUID = ?")) { + statement.setDouble(1, value); + statement.setString(2, me.getPlayer().getUniqueId().toString()); + + statement.executeUpdate(); } - disconnect(); } public int getMobs() throws SQLException { - connect(); - if (resultSet.first()) { - resultSet = state.executeQuery("SELECT K_MOBS FROM player_stats WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - if (resultSet.first()) { - return resultSet.getInt(1); + try (PreparedStatement statement = CONN.prepareStatement("SELECT K_MOBS FROM player_stats WHERE UUID = ?")) { + statement.setString(1, me.getPlayer().getUniqueId().toString()); + + try (ResultSet resultSet = statement.executeQuery()) { + if (resultSet.next()) { + return resultSet.getInt(1); + } else { + return 0; //TODO нужно или default значение, или exception + } } } - disconnect(); - return NullPointerException.class.hashCode(); } public void addMobs(int value) throws SQLException { - connect(); - if (resultSet.first()) - state.execute("UPDATE player_stats SET K_MOBS = " + (getMobs() + value) + " WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - disconnect(); + setMobs(getMobs() + value); } public void setDeaths(int value) throws SQLException { - connect(); - if (resultSet.first()) - state.execute("UPDATE player_stats SET DEATHS = " + value + " WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - disconnect(); + try (PreparedStatement statement = CONN.prepareStatement("UPDATE player_stats SET DEATHS = ? WHERE UUID = ?")) { + statement.setDouble(1, value); + statement.setString(2, me.getPlayer().getUniqueId().toString()); + + statement.executeUpdate(); + } } public int getDeaths() throws SQLException { - connect(); - if (resultSet.first()) { - resultSet = state.executeQuery("SELECT DEATHS FROM player_stats WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - if (resultSet.first()) - return resultSet.getInt(1); + try (PreparedStatement statement = CONN.prepareStatement("SELECT DEATHS FROM player_stats WHERE UUID = ?")) { + statement.setString(1, me.getPlayer().getUniqueId().toString()); + + try (ResultSet resultSet = statement.executeQuery()) { + if (resultSet.next()) { + return resultSet.getInt(1); + } else { + return 0; //TODO нужно или default значение, или exception + } + } } - disconnect(); - return NullPointerException.class.hashCode(); } public void addDeaths(int value) throws SQLException { - connect(); - if (resultSet.first()) - state.execute("UPDATE player_stats SET DEATHS = " + (getDeaths() + value) + " WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - disconnect(); - } - - private void connect() throws SQLException { - state = PrisonAPI.CONN.prepareStatement("SELECT * UUID FROM player_stats WHERE UUID = ?;"); - state.setString(1, me.getPlayer().getUniqueId().toString()); - resultSet = state.executeQuery("SELECT UUID FROM player_stats WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - } - - private void disconnect() throws SQLException { - resultSet.close(); - state.close(); + setDeaths(getDeaths() + value); } } diff --git a/src/main/java/ru/prisonlife/PrisonAPI/template/Wallet.java b/src/main/java/ru/prisonlife/PrisonAPI/template/Wallet.java index aeb320a..cc9fd9d 100644 --- a/src/main/java/ru/prisonlife/PrisonAPI/template/Wallet.java +++ b/src/main/java/ru/prisonlife/PrisonAPI/template/Wallet.java @@ -1,15 +1,13 @@ package ru.prisonlife.prisonapi.template; -import ru.prisonlife.prisonapi.PrisonAPI; - import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import static ru.prisonlife.prisonapi.PrisonAPI.CONN; + public class Wallet { - private PreparedStatement state; - private ResultSet resultSet; private Prisoner me; Wallet(Prisoner prisoner) { @@ -17,49 +15,33 @@ public class Wallet { } public int getBalance() throws SQLException { - connect(); - if (resultSet.first()) { - resultSet = state.executeQuery("SELECT WALLET FROM player_stats WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - if (resultSet.first()) { - return resultSet.getInt(1); + try (PreparedStatement statement = CONN.prepareStatement("SELECT WALLET FROM player_stats WHERE UUID = ?")) { + statement.setString(1, me.getPlayer().getUniqueId().toString()); + + try (ResultSet resultSet = statement.executeQuery()) { + if (resultSet.next()) { + return resultSet.getInt(1); + } else { + return 0; //TODO нужно или default значение, или exception + } } } - disconnect(); - return NullPointerException.class.hashCode(); } public void addBalance(int value) throws SQLException { - connect(); - if (resultSet.first()) { - state.execute("UPDATE player_stats SET WALLET = " + (getBalance() + value) + " WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - } - disconnect(); + setBalance(getBalance() + value); } public void deposit(int value) throws SQLException { - connect(); - if (resultSet.first()) { - state.execute("UPDATE player_stats SET WALLET = " + (getBalance() - value) + " WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - } - disconnect(); + setBalance(getBalance() - value); } public void setBalance(int value) throws SQLException { - connect(); - if (resultSet.first()) { - state.execute("UPDATE player_stats SET WALLET = " + value + " WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); + try (PreparedStatement statement = CONN.prepareStatement("UPDATE player_stats SET WALLET = ? WHERE UUID = ?")) { + statement.setDouble(1, value); + statement.setString(2, me.getPlayer().getUniqueId().toString()); + + statement.executeUpdate(); } - disconnect(); - } - - private void connect() throws SQLException { - state = PrisonAPI.CONN.prepareStatement("SELECT * UUID FROM player_stats WHERE UUID = ?;"); - state.setString(1, me.getPlayer().getUniqueId().toString()); - resultSet = state.executeQuery("SELECT UUID FROM player_stats WHERE UUID = '" + me.getPlayer().getUniqueId() + "'"); - } - - private void disconnect() throws SQLException { - resultSet.close(); - state.close(); } }