From db1b19c2eb59c02d68c944494bf8308b57c5b73a Mon Sep 17 00:00:00 2001 From: Martin <ms618@hdm-stuttgart.de> Date: Tue, 5 Dec 2023 14:29:30 +0100 Subject: [PATCH] Add: GsonHandler.java Add: localMaps.json Update: MapData.java (Attributes + Methods added) Update: pom.xml (added GSON Dependency) Update: module-info.java (added GSON) Update: Persistence.java --- pom.xml | 5 +++ .../Persistance/Classes/GsonHandler.java | 40 +++++++++++++++++++ .../Persistance/Classes/MapData.java | 29 +++++++++++++- .../Persistance/Classes/Persistence.java | 13 ++---- src/main/java/module-info.java | 2 + src/main/resources/maps/localMaps.json | 6 +++ 6 files changed, 85 insertions(+), 10 deletions(-) create mode 100644 src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/GsonHandler.java create mode 100644 src/main/resources/maps/localMaps.json diff --git a/pom.xml b/pom.xml index 3bfb64f7..f9950c34 100644 --- a/pom.xml +++ b/pom.xml @@ -57,6 +57,11 @@ <version>12.4.2.jre11</version> </dependency> + <dependency> + <groupId>com.google.code.gson</groupId> + <artifactId>gson</artifactId> + <version>2.10.1</version> + </dependency> </dependencies> diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/GsonHandler.java b/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/GsonHandler.java new file mode 100644 index 00000000..63a235bf --- /dev/null +++ b/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/GsonHandler.java @@ -0,0 +1,40 @@ +package de.hdm_stuttgart.battlearena.Persistance.Classes; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.io.FileReader; +import java.io.FileWriter; +import java.lang.reflect.Type; +import java.util.ArrayList; + +public class GsonHandler { + Persistence singleton = Persistence.getInstance(); + Gson gson = new Gson(); + + private static final Logger log = LogManager.getLogger(GsonHandler.class); + Type mapDataType = new TypeToken<ArrayList<MapData>>(){}.getType(); + + public void loadMaps() { + try (FileReader reader = new FileReader("src/main/resources/maps/localMaps.json")) { + singleton.maps = gson.fromJson(reader, mapDataType); + log.info("GSON - Maps successfully loaded from JSON"); + } catch (Exception e) { + log.info(e); + log.info("GSON - Loading Maps from JSON failed"); + } + } + + public void updateMaps() { + try (FileWriter writer = new FileWriter("src/main/resources/maps/localMaps.json")) { + gson.toJson(singleton.maps, writer); + log.info("GSON - Maps successfully written to JSON"); + } catch ( + Exception e) { + log.info(e); + log.info("GSON - Saving SingleBookings to JSON failed"); + } + } +} 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 index c265696e..249e4571 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/MapData.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/MapData.java @@ -1,8 +1,35 @@ 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); + + private String mapID; + private String mapName; + private int mapHeight; + private int mapWidth; + private String mapData; + + protected MapData(String mapID, String mapName, String mapSize, String mapData) { + this.mapID = mapID; + this.mapName = mapName; + this.mapData = mapData; + + sizeParser(mapSize); + } + + private void sizeParser(String mapSize){ + int whereX = 0; + + for(int i = 0; i > mapSize.length(); i++){ + if(mapSize.substring(i, i+1).equals("x")){ + whereX = i; + break; + } + } + mapHeight = Integer.valueOf(mapSize.substring(0, whereX)); + mapWidth = Integer.valueOf(mapSize.substring(whereX)); + } + } 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 index a675dffb..4ddef45c 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/Persistence.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/Persistence.java @@ -9,19 +9,16 @@ import java.util.LinkedHashMap; public class Persistence { private static final Logger log = LogManager.getLogger(Persistence.class); - private static final Persistence singleton = new Persistence(); - - private Persistence (){} - private Connection connection; - private LinkedHashMap<String, String> mapNames; - private String map; private int[] sizeArrayInt; private String sizeString; - protected static PlayerStatistics statistics = new PlayerStatistics("", 0,0,0,0,0,0); + protected ArrayList<MapData> maps = new ArrayList<MapData>(); + private GsonHandler gsonHandler = new GsonHandler(); + + private Persistence (){} public void createPlayer(String player){ statistics.setPlayerName(player); @@ -31,6 +28,4 @@ public class Persistence { return singleton; } - - } diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index c634cb3c..185f1837 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -4,8 +4,10 @@ module gui { requires javafx.media; requires org.apache.logging.log4j; requires java.sql; + requires com.google.gson; opens de.hdm_stuttgart.battlearena to javafx.fxml; exports de.hdm_stuttgart.battlearena.Main; exports de.hdm_stuttgart.battlearena.Controller; + opens de.hdm_stuttgart.battlearena.Persistance.Classes to com.google.gson, javafx.fxml; } diff --git a/src/main/resources/maps/localMaps.json b/src/main/resources/maps/localMaps.json new file mode 100644 index 00000000..caeeb4c1 --- /dev/null +++ b/src/main/resources/maps/localMaps.json @@ -0,0 +1,6 @@ +{ + "name": "maps", + "version": "1.0.0", + "dependencies": { + } +} -- GitLab