summaryrefslogtreewikicommitdiff
path: root/src/main/java/net/tylermurphy/hideAndSeek/database/PlayerInfoTable.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/tylermurphy/hideAndSeek/database/PlayerInfoTable.java')
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/database/PlayerInfoTable.java33
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;
}
}