diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/AzureDB.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/AzureDB.java index 3eff99fe10f391d2b5a1a4c31006cb1d0d8b270c..6b65471a2c58742ba339dd052d65228d7757a41f 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/AzureDB.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/AzureDB.java @@ -80,7 +80,7 @@ public class AzureDB implements ISQLDataBase { public ArrayList<MapInfo> getCommunityMapsList() throws DatabaseError{ try(Connection connection = connect()) { ArrayList<MapInfo> tempList = new ArrayList<MapInfo>(); - String sql = "SELECT map_id, map_name, map_width, map_height, map_downloads FROM battlearenadata.communitymaps"; + String sql = "SELECT map_id, map_name, map_width, map_height, map_downloads FROM communitymaps"; PreparedStatement stmt = connection.prepareStatement(sql); log.info("Sending SQL statement"); @@ -103,18 +103,27 @@ public class AzureDB implements ISQLDataBase { @Override public MapData getCommunityMapByID(String mapID) throws DatabaseError{ try(Connection connection = connect()) { - String sql = "SELECT * FROM battlearenadata.communitymaps WHERE map_ID = ?"; + String sql = "SELECT * FROM communitymaps WHERE map_ID = ?"; PreparedStatement stmt = connection.prepareStatement(sql); stmt.setString(1, mapID); log.info("Sending SQL statement"); ResultSet rs = stmt.executeQuery(); - - MapData mapChosen = new MapData(rs.getString("map_id"), rs.getString("map_name"), rs.getInt("map_width"), rs.getInt("map_height"), rs.getString("map_data")); - + MapData mapChosen = new MapData("", "",0,0, ""); + while(rs.next()) { + mapChosen = new MapData(rs.getString("map_id"), rs.getString("map_name"), rs.getInt("map_width"), rs.getInt("map_height"), rs.getString("map_data")); + } rs.close(); stmt.close(); log.info("Community map retrieved successfully"); + + String sql2 = "UPDATE communitymaps SET map_downloads = map_downloads + 1 WHERE map_id = ?"; + PreparedStatement stmt2 = connection.prepareStatement(sql2); + stmt2.setString(1, mapID); + stmt2.executeQuery(); + log.info("Sending SQL statement to update Download-Counter"); + stmt2.close(); + return mapChosen; } catch(Exception e){ @@ -126,7 +135,7 @@ public class AzureDB implements ISQLDataBase { @Override public void uploadCommunityMap(MapData map) throws DatabaseError{ try(Connection connection = connect()) { - String sql = "INSERT INTO battlearenadata.communitymaps (map_id, map_name, map_width, map_height, map_data) VALUES (?, ?, ?, ?, ?)"; + String sql = "INSERT INTO communitymaps (map_id, map_name, map_width, map_height, map_data) VALUES (?, ?, ?, ?, ?)"; PreparedStatement stmt = connection.prepareStatement(sql); stmt.setString(1, map.getMapID()); stmt.setString(2, map.getMapName()); @@ -149,7 +158,7 @@ public class AzureDB implements ISQLDataBase { @Override public void createPlayer(String playerName, String playerPW) throws DatabaseError{ try(Connection connection = connect()) { - String sql = "INSERT INTO battlearenadata.players (player_name, player_pw, games_won, games_lost, kills, deaths, blocks_destroyed, ingame_time) VALUES (?, ?, 0, 0, 0, 0, 0, 0)"; + String sql = "INSERT INTO players (player_name, player_pw, games_won, games_lost, kills, deaths, blocks_destroyed, ingame_time) VALUES (?, ?, 0, 0, 0, 0, 0, 0)"; PreparedStatement stmt = connection.prepareStatement(sql); stmt.setString(1, playerName); stmt.setString(2, playerPW); @@ -169,15 +178,17 @@ public class AzureDB implements ISQLDataBase { @Override public String checkCredentials(String playerName) throws DatabaseError{ try(Connection connection = connect()) { - String sql = "SELECT player_pw FROM battlearenadata.players WHERE player_name = ?"; + String sql = "SELECT player_pw FROM players WHERE player_name = ?"; PreparedStatement stmt = connection.prepareStatement(sql); stmt.setString(1, playerName); log.info("Sending SQL statement"); ResultSet rs = stmt.executeQuery(); - String password = rs.getString("player_pw"); - + String password = ""; + while(rs.next()) { + password = rs.getString("player_pw"); + } rs.close(); stmt.close(); log.info("Player credentials retrieved successfully"); @@ -192,15 +203,17 @@ public class AzureDB implements ISQLDataBase { @Override public PlayerStatistics getStatistics(String playerName) throws DatabaseError{ try(Connection connection = connect()) { - String sql = "SELECT games_won, games_lost, kills, deaths, blocks_destroyed, ingame_time FROM battlearenadata.players WHERE player_name = ?"; + String sql = "SELECT games_won, games_lost, kills, deaths, blocks_destroyed, ingame_time FROM players WHERE player_name = ?"; PreparedStatement stmt = connection.prepareStatement(sql); stmt.setString(1, playerName); log.info("Sending SQL statement"); ResultSet rs = stmt.executeQuery(); - PlayerStatistics stats = new PlayerStatistics(true, rs.getInt("games_won"), rs.getInt("games_lost"), rs.getInt("kills"), rs.getInt("deaths"), rs.getInt("blocks_destroyed"), rs.getInt("ingame_time")); - + PlayerStatistics stats = new PlayerStatistics(false, 0, 0, 0, 0, 0, 0); + while(rs.next()) { + stats = new PlayerStatistics(true, rs.getInt("games_won"), rs.getInt("games_lost"), rs.getInt("kills"), rs.getInt("deaths"), rs.getInt("blocks_destroyed"), rs.getInt("ingame_time")); + } rs.close(); stmt.close(); log.info("Player statistics retrieved successfully"); @@ -215,7 +228,7 @@ public class AzureDB implements ISQLDataBase { @Override public void updatePlayerStats(PlayerStatistics stats, PlayerAccount account) throws DatabaseError{ try(Connection connection = connect()) { - String sql = "UPDATE battlearenadata.players SET games_won = ?, games_lost = ?, kills = ?, deaths = ?, blocks_destroyed = ?, ingame_time = ? WHERE player_name = ?"; + String sql = "UPDATE players SET games_won = ?, games_lost = ?, kills = ?, deaths = ?, blocks_destroyed = ?, ingame_time = ? WHERE player_name = ?"; PreparedStatement stmt = connection.prepareStatement(sql); stmt.setInt(1, stats.getGamesWon()); stmt.setInt(2, stats.getGamesLost()); @@ -226,6 +239,7 @@ public class AzureDB implements ISQLDataBase { stmt.setString(7, account.getPlayerName()); log.info("Sending SQL statement"); + stmt.executeQuery(); stmt.close(); log.info("Player statistics updated successfully"); diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/OracleDB.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/OracleDB.java index c20d65fb302c4a3569f4d0b06b2f8958b4c2e4d3..72626e7c409de523a0a13a6515364b1cd66b204b 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/OracleDB.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/OracleDB.java @@ -108,12 +108,21 @@ public class OracleDB implements ISQLDataBase { log.info("Sending SQL statement"); ResultSet rs = stmt.executeQuery(); - - MapData mapChosen = new MapData(rs.getString("map_id"), rs.getString("map_name"), rs.getInt("map_width"), rs.getInt("map_height"), rs.getString("map_data")); - + MapData mapChosen = new MapData("", "",0,0, ""); + while(rs.next()) { + mapChosen = new MapData(rs.getString("map_id"), rs.getString("map_name"), rs.getInt("map_width"), rs.getInt("map_height"), rs.getString("map_data")); + } rs.close(); stmt.close(); log.info("Community map retrieved successfully"); + + String sql2 = "UPDATE battlearenadata.communitymaps SET map_downloads = map_downloads + 1 WHERE map_id = ?"; + PreparedStatement stmt2 = connection.prepareStatement(sql2); + stmt2.setString(1, mapID); + stmt2.executeQuery(); + log.info("Sending SQL statement to update Download-Counter"); + stmt2.close(); + return mapChosen; } catch(Exception e){ @@ -175,8 +184,10 @@ public class OracleDB implements ISQLDataBase { log.info("Sending SQL statement"); ResultSet rs = stmt.executeQuery(); - String password = rs.getString("player_pw"); - + String password = ""; + while(rs.next()) { + password = rs.getString("player_pw"); + } rs.close(); stmt.close(); log.info("Player credentials retrieved successfully"); @@ -198,8 +209,10 @@ public class OracleDB implements ISQLDataBase { log.info("Sending SQL statement"); ResultSet rs = stmt.executeQuery(); - PlayerStatistics stats = new PlayerStatistics(true, rs.getInt("games_won"), rs.getInt("games_lost"), rs.getInt("kills"), rs.getInt("deaths"), rs.getInt("blocks_destroyed"), rs.getInt("ingame_time")); - + PlayerStatistics stats = new PlayerStatistics(false, 0, 0, 0, 0, 0, 0); + while(rs.next()) { + stats = new PlayerStatistics(true, rs.getInt("games_won"), rs.getInt("games_lost"), rs.getInt("kills"), rs.getInt("deaths"), rs.getInt("blocks_destroyed"), rs.getInt("ingame_time")); + } rs.close(); stmt.close(); log.info("Player statistics retrieved successfully"); @@ -225,6 +238,7 @@ public class OracleDB implements ISQLDataBase { stmt.setString(7, account.getPlayerName()); log.info("Sending SQL statement"); + stmt.executeQuery(); stmt.close(); log.info("Player statistics updated successfully"); diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Utilities/CryptoUtils.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Utilities/CryptoUtils.java index 7a1d263c82ccaaec5138f0d49c2fa249cd855705..1d412e59223944dd8787bbc73c4c1da14cc2ef5f 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Utilities/CryptoUtils.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Utilities/CryptoUtils.java @@ -47,7 +47,7 @@ public class CryptoUtils{ byte[] outputBytes = cipher.doFinal(inputBytes); String completeString = new String(outputBytes, StandardCharsets.UTF_8); - System.out.println(completeString); + //System.out.println(completeString); parts = completeString.split(";"); //FileOutputStream outputStream = new FileOutputStream(outputFile); diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Scripts/DDL_Script_Oracle.sql b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Scripts/DDL_Script_Oracle.sql index b4e9ea6c94e9b170b46b24aa9f1bd58dfef42ff8..af8c0ca3e9ee71ca652b85f47c5ad018fa79725e 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Scripts/DDL_Script_Oracle.sql +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Scripts/DDL_Script_Oracle.sql @@ -87,4 +87,6 @@ GRANT SELECT ON battlearenadata.coremaps TO battlearenaplayer; GRANT SELECT, INSERT ON battlearenadata.communitymaps TO battlearenaplayer; -GRANT SELECT, INSERT, UPDATE ON battlearenadata.players TO battlearenaplayer; \ No newline at end of file +GRANT SELECT, INSERT, UPDATE ON battlearenadata.players TO battlearenaplayer; + +GRANT UPDATE (map_downloads) ON battlearenadata.communitymaps TO battlearenaplayer; \ No newline at end of file