diff options
Diffstat (limited to 'src/main/java/net/tylermurphy/hideAndSeek/database/PlayerInfoTable.java')
-rw-r--r-- | src/main/java/net/tylermurphy/hideAndSeek/database/PlayerInfoTable.java | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/database/PlayerInfoTable.java b/src/main/java/net/tylermurphy/hideAndSeek/database/PlayerInfoTable.java index 07fb2ee..0dba4b4 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/database/PlayerInfoTable.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/database/PlayerInfoTable.java @@ -1,8 +1,7 @@ package net.tylermurphy.hideAndSeek.database; import net.tylermurphy.hideAndSeek.Main; -import net.tylermurphy.hideAndSeek.game.WinType; -import net.tylermurphy.hideAndSeek.util.Util; +import net.tylermurphy.hideAndSeek.util.WinType; import java.io.IOException; import java.io.InputStream; @@ -23,7 +22,7 @@ public class PlayerInfoTable { + " games_played int NOT NULL\n" + ");"; - try(Connection connection = Main.plugin.database.connect(); Statement statement = connection.createStatement()){ + try(Connection connection = Database.connect(); Statement statement = connection.createStatement()){ statement.execute(sql); } catch (SQLException e){ Main.plugin.getLogger().severe("SQL Error: " + e.getMessage()); @@ -32,21 +31,22 @@ public class PlayerInfoTable { public PlayerInfo getInfo(UUID uuid){ String sql = "SELECT * FROM player_info WHERE uuid = ?;"; - try(Connection connection = Main.plugin.database.connect(); PreparedStatement statement = connection.prepareStatement(sql)){ - InputStream is = Util.convertUniqueId(uuid); + try(Connection connection = Database.connect(); PreparedStatement statement = connection.prepareStatement(sql)){ + InputStream is = Database.convertUniqueId(uuid); byte[] bytes = new byte[is.available()]; - is.read(bytes); + if(is.read(bytes) == -1){ + throw new IOException("Failed to read bytes from input stream"); + } statement.setBytes(1, bytes); ResultSet rs = statement.executeQuery(); if(rs.next()){ - PlayerInfo info = new PlayerInfo( + return new PlayerInfo( uuid, rs.getInt("wins"), rs.getInt("seeker_wins"), rs.getInt("hider_wins"), rs.getInt("games_played") ); - return info; } } catch (SQLException e){ Main.plugin.getLogger().severe("SQL Error: " + e.getMessage()); @@ -59,13 +59,13 @@ public class PlayerInfoTable { public List<PlayerInfo> getInfoPage(int page){ String sql = "SELECT * FROM player_info ORDER BY wins DESC LIMIT 10 OFFSET ?;"; - try(Connection connection = Main.plugin.database.connect(); PreparedStatement statement = connection.prepareStatement(sql)){ + try(Connection connection = Database.connect(); PreparedStatement statement = connection.prepareStatement(sql)){ statement.setInt(1, (page-1)*10); ResultSet rs = statement.executeQuery(); List<PlayerInfo> infoList = new ArrayList<>(); while(rs.next()){ PlayerInfo info = new PlayerInfo( - Util.convertBinaryStream(rs.getBinaryStream("uuid")), + Database.convertBinaryStream(rs.getBinaryStream("uuid")), rs.getInt("wins"), rs.getInt("seeker_wins"), rs.getInt("hider_wins"), @@ -80,14 +80,16 @@ public class PlayerInfoTable { return null; } - public boolean addWins(List<UUID> uuids, List<UUID> winners, WinType type){ + public void addWins(List<UUID> uuids, List<UUID> winners, WinType type){ for(UUID uuid : uuids){ String sql = "INSERT OR REPLACE INTO player_info (uuid, wins, seeker_wins, hider_wins, games_played) VALUES (?,?,?,?,?)"; PlayerInfo info = getInfo(uuid); - try(Connection connection = Main.plugin.database.connect(); PreparedStatement statement = connection.prepareStatement(sql)){ - InputStream is = Util.convertUniqueId(uuid); + try(Connection connection = Database.connect(); PreparedStatement statement = connection.prepareStatement(sql)){ + InputStream is = Database.convertUniqueId(uuid); byte[] bytes = new byte[is.available()]; - is.read(bytes); + if(is.read(bytes) == -1){ + throw new IOException("Failed to read bytes from input stream"); + } statement.setBytes(1, bytes); statement.setInt(2, info.wins + (winners.contains(uuid) ? 1 : 0)); statement.setInt(3, info.seeker_wins + (winners.contains(uuid) && type == WinType.SEEKER_WIN ? 1 : 0)); @@ -97,13 +99,12 @@ public class PlayerInfoTable { } catch (SQLException e){ Main.plugin.getLogger().severe("SQL Error: " + e.getMessage()); e.printStackTrace(); - return false; + return; } catch (IOException e) { Main.plugin.getLogger().severe("IO Error: " + e.getMessage()); e.printStackTrace(); } } - return true; } } |