diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml new file mode 100644 index 0000000000000000000000000000000000000000..f07edf43fd5a289e4b6ae3c41e745c07417fb94b --- /dev/null +++ b/.idea/dataSources.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="DataSourceManagerImpl" format="xml" multifile-model="true"> + <data-source source="LOCAL" name="battleArena@battlearena.database.windows.net" uuid="7b1fc391-14cb-46cf-a8a0-29c091f02047"> + <driver-ref>azure.ms</driver-ref> + <synchronize>true</synchronize> + <jdbc-driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</jdbc-driver> + <jdbc-url>jdbc:sqlserver://battlearena.database.windows.net:1433;database=battleArena;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;</jdbc-url> + <working-dir>$ProjectFileDir$</working-dir> + </data-source> + </component> +</project> \ No newline at end of file diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml new file mode 100644 index 0000000000000000000000000000000000000000..8e5880919bb671e77ef02deb0617aba3a3be5031 --- /dev/null +++ b/.idea/sqldialects.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="SqlDialectMappings"> + <file url="file://$PROJECT_DIR$/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Scripts/DDL_Script.sql" dialect="GenericSQL" /> + <file url="PROJECT" dialect="AZURE" /> + </component> +</project> \ No newline at end of file diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/AzureDB.java b/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/AzureDB.java new file mode 100644 index 0000000000000000000000000000000000000000..c02cf9141c4aae1c9808f4f3d39c6a57cb5d7b16 --- /dev/null +++ b/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/AzureDB.java @@ -0,0 +1,177 @@ +package de.hdm_stuttgart.battlearena.Persistance.Classes; + +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + + +import java.io.IOException; +import java.util.LinkedHashMap; +import java.util.Properties; +import java.sql.*; + +public class DataBase implements IDataBase { + + private static final Logger log = LogManager.getLogger(DataBase.class); + + + @Override + public Connection connect() throws IOException, SQLException { + + log.info("Loading the properties File!"); + Properties properties = new Properties(); + properties.load(getClass().getClassLoader().getResourceAsStream("config.properties")); + + log.info("Connecting to the database!"); + Connection connection = DriverManager.getConnection(properties.getProperty("url"), properties.getProperty("user"), properties.getProperty("password")); + log.info("Database connection test" + connection.getCatalog()); + + connection.setAutoCommit(true); + return connection; + } + + + @Override + public void createNewPlayer(String playerName) throws SQLException, IOException { + Connection connection = connect(); + String sql = "INSERT INTO players (player_name, games_won, games_lost, kills, deaths, blocks_destroyed, ingame_time)" + "VALUES (?,?,?,?,?,?,?)"; + PreparedStatement preparedStatement = connection.prepareStatement(sql); + preparedStatement.setString(1, playerName); + preparedStatement.setInt(2, 0); + preparedStatement.setInt(3, 0); + preparedStatement.setInt(4, 0); + preparedStatement.setInt(5, 0); + preparedStatement.setInt(6, 0); + preparedStatement.setInt(7, 0); + + preparedStatement.execute(); + connection.close(); + } + + @Override + public void createMap(String name, int length, int width, String mapData) throws SQLException, IOException { + Connection connection = connect(); + String mapSize = length + "X" + width; + + String sql = "INSERT INTO battleArena.dbo.maps (map_name, map_size, map_data) VALUES(?,?,?)"; + PreparedStatement preparedStatement = connection.prepareStatement(sql); + preparedStatement.setString(1, name); + preparedStatement.setString(2, mapSize); + preparedStatement.setString(3, mapData); + + preparedStatement.execute(); + connection.close(); + } + + @Override + public LinkedHashMap<String, String> getMapNames() throws SQLException, IOException { + LinkedHashMap<String, String> mapNames = new LinkedHashMap<>(); + Connection connection = connect(); + String sql = "SELECT maps.map_id, maps.map_name FROM maps"; + PreparedStatement preparedStatement = connection.prepareStatement(sql); + ResultSet results = preparedStatement.executeQuery(); + while (results.next()) { + mapNames.put(results.getString("map_id"), results.getString("map_name")); + } + connection.close(); + return mapNames; + } + + @Override + public String getMapByID(String ID) throws SQLException, IOException { + Connection connection = connect(); + String sql = "SELECT map_name FROM maps WHERE map_id = ?"; + PreparedStatement preparedStatement = connection.prepareStatement(sql); + preparedStatement.setString(1, ID); + + String map = preparedStatement.executeQuery().toString(); + connection.close(); + return map; + } + + @Override + public String getMapSizeByID(String ID) throws SQLException, IOException { + Connection connection = connect(); + String sql = "SELECT map_size FROM maps WHERE battleArena.dbo.maps.map_id=?"; + PreparedStatement preparedStatement = connection.prepareStatement(sql); + preparedStatement.setString(1, ID); + ResultSet result = preparedStatement.executeQuery(); + + String mapSize = result.getString("map_size"); + connection.close(); + return mapSize; + } + + @Override + public ResultSet getStatistics(String playerName) throws SQLException, IOException { + Connection connection = connect(); + String sql = "SELECT * FROM players where player_name = ?"; + PreparedStatement preparedStatement = connection.prepareStatement(sql); + preparedStatement.setString(1, playerName); + ResultSet resultSet = preparedStatement.executeQuery(); + connection.close(); + return resultSet; + } + + @Override + public void updateMap(String mapID, String mapName, String mapData) throws SQLException, IOException { + Connection connection = connect(); + String sql = "UPDATE maps SET map_name = ?, map_data = ? WHERE map_id = ?"; + PreparedStatement preparedStatement = connection.prepareStatement(sql); + preparedStatement.setString(1, mapName); + preparedStatement.setString(2, mapData); + preparedStatement.setString(3, mapID); + preparedStatement.execute(); + connection.close(); + } + + + @Override + public void updatePlayerName(String playerNameNew, String playerNameOld) throws SQLException, IOException { + Connection connection = connect(); + String sql = "UPDATE players SET player_name = ? WHERE player_name = ?"; + PreparedStatement preparedStatement = connection.prepareStatement(sql); + preparedStatement.setString(1, playerNameNew); + preparedStatement.setString(2, playerNameOld); + preparedStatement.execute(); + connection.close(); + } + + @Override + public void updatePlayerStatistics(String playerName, int gamesWon, int gamesLost, int kills, int deaths, int blocksDestroyed, int gameTime) throws SQLException, IOException { + Connection connection = connect(); + String sql = "UPDATE players SET games_won = ?, games_lost = ?, kills = ?, " + "deaths = ?, blocks_destroyed = ?, ingame_time = ? WHERE player_name = ?"; + PreparedStatement preparedStatement = connection.prepareStatement(sql); + preparedStatement.setInt(1, gamesWon); + preparedStatement.setInt(2, gamesLost); + preparedStatement.setInt(3, kills); + preparedStatement.setInt(4, deaths); + preparedStatement.setInt(5, blocksDestroyed); + preparedStatement.setInt(6, gameTime); + preparedStatement.setString(7, playerName); + preparedStatement.execute(); + connection.close(); + } + + + @Override + public void deletePlayer(String playerName) throws IOException, SQLException { + Connection connection = connect(); + String sql = "DELETE FROM players WHERE player_name=?"; + PreparedStatement preparedStatement = connection.prepareStatement(sql); + preparedStatement.setString(1, playerName); + preparedStatement.execute(); + connection.close(); + } + + @Override + public void deleteMap(String mapID) throws SQLException, IOException { + Connection connection = connect(); + String sql = "DELETE * FROM maps WHERE map_id = ?"; + PreparedStatement preparedStatement = connection.prepareStatement(sql); + preparedStatement.setString(1, mapID); + preparedStatement.execute(); + connection.close(); + } + + +} diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/DataBase.java b/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/DataBase.java deleted file mode 100644 index e766e18264ef67496e300c52199eae616e794db6..0000000000000000000000000000000000000000 --- a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/DataBase.java +++ /dev/null @@ -1,10 +0,0 @@ -package de.hdm_stuttgart.battlearena.Persistance; - -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; - -public class DataBase implements IDataBase{ - - private static final Logger log = LogManager.getLogger(DataBase.class); - -} diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/MapData.java b/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/MapData.java new file mode 100644 index 0000000000000000000000000000000000000000..398258dc565edcfb9b87123688a3f9b739db7fd9 --- /dev/null +++ b/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/MapData.java @@ -0,0 +1,7 @@ +package de.hdm_stuttgart.battlearena.Persistance.Classes; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class MapData { +private static final Logger log = LogManager.getLogger(MapData.class); +} diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/Persistence.java b/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/Persistence.java new file mode 100644 index 0000000000000000000000000000000000000000..32cfeee358278cf5bcdfc25e4bd2b5897dc0979e --- /dev/null +++ b/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/Persistence.java @@ -0,0 +1,7 @@ +package de.hdm_stuttgart.battlearena.Persistance.Classes; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Persistence { +private static final Logger log = LogManager.getLogger(Persistence.class); +} diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/PlayerStatistics.java b/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/PlayerStatistics.java new file mode 100644 index 0000000000000000000000000000000000000000..aa1493f3a8aa063f861d91519d61c1c93d9fda30 --- /dev/null +++ b/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/PlayerStatistics.java @@ -0,0 +1,7 @@ +package de.hdm_stuttgart.battlearena.Persistance.Classes; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class PlayerStatistics { +private static final Logger log = LogManager.getLogger(PlayerStatistics.class); +} diff --git a/src/main/resources/player/player.txt b/src/main/resources/player/player.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391