From 0c4f125670f259b34efe068942861267417d0f48 Mon Sep 17 00:00:00 2001
From: Martin <ms618@hdm-stuttgart.de>
Date: Sat, 20 Jan 2024 16:56:01 +0100
Subject: [PATCH] Update: Persistence.java (consolidated methods
 "saveMapLocally" und "uploadCreatedMap" into one method) Update:
 RuntimeInfo.java (added fields for additional Thread classes + getter/setter)
 Update: ThreadUpdateStats.java (added lines to reset stats counter after
 updating stats) Add: ThreadCreateAcc.java Add: ThreadDLCommMap.java Add:
 ThreadGetMapList.java Add: ThreadRstStats.java Add: ThreadSaveCommMap.java
 Add: ThreadSaveStats.java

---
 .../DataStorage/Classes/GsonHandler.java      |   1 -
 .../DataStorage/Classes/Persistence.java      |  47 +++---
 .../DataStorage/Classes/RuntimeInfo.java      | 146 ++++++++++++++++--
 .../DataStorage/Classes/ThreadCreateAcc.java  |  41 +++++
 .../DataStorage/Classes/ThreadDLCommMap.java  |  36 +++++
 .../DataStorage/Classes/ThreadGetMapList.java |  30 ++++
 .../DataStorage/Classes/ThreadRstStats.java   |  30 ++++
 .../Classes/ThreadSaveCommMap.java            |  38 +++++
 .../DataStorage/Classes/ThreadSaveStats.java  |  30 ++++
 .../DataStorage/Classes/ThreadStartup1.java   |   3 +-
 .../DataStorage/Classes/ThreadStartup2.java   |   3 +-
 .../DataStorage/Classes/ThreadUpdateMaps.java |   1 +
 .../Classes/ThreadUpdateStats.java            |   5 +
 13 files changed, 371 insertions(+), 40 deletions(-)
 create mode 100644 src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadCreateAcc.java
 create mode 100644 src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadDLCommMap.java
 create mode 100644 src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadGetMapList.java
 create mode 100644 src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadRstStats.java
 create mode 100644 src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadSaveCommMap.java
 create mode 100644 src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadSaveStats.java

diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/GsonHandler.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/GsonHandler.java
index 190cc6c4..0b6bb2a2 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/GsonHandler.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/GsonHandler.java
@@ -146,5 +146,4 @@ public class GsonHandler {
         }
     }
 
-
 }
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Persistence.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Persistence.java
index d2830af9..39ce2633 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Persistence.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Persistence.java
@@ -195,7 +195,8 @@ public class Persistence {
         }
     }
 
-    public void saveCreatedMapLocally(MapData map) throws DatabaseException {
+    public void saveCreatedMap(MapData map, boolean doUpload) throws DatabaseException {
+        String part1 = "";
         try {
             for(int i = 0; communityMaps.size() > i; i++){
                 if(communityMaps.get(i).getMapID().equals(map.getMapID())){
@@ -204,35 +205,27 @@ public class Persistence {
             }
             communityMaps.add(map);
             gsonHandler.saveMaps(communityMaps, MapType.COMMUNITYMAP);
-            //createLocalCommunityMapsList();
             log.info("Newly created map stored successfully in JSON!");
         }
         catch(Exception e){
             log.error(e);
-            if(e.getMessage().contains("Identical map already saved") | e.getMessage().contains("ORA-01017")){
-                throw new DatabaseException(e.getMessage());
-            }
-            else{
-                throw new DatabaseException("Unknown Database Error. Saving newly created Community-Map locally failed!");
-            }
-        }
-    }
-
-    public void uploadCreatedMap(MapData map) throws DatabaseException {
-        try {
-            db.uploadCommunityMap(map);
-            log.info("Newly created Community-Map successfully published!");
-        }
-        catch(Exception e){
-            log.error(e);
-            if(e.getMessage().contains("ORA-17868") | e.getMessage().contains("ORA-01017")){
-                throw new DatabaseException("No connection to SQL server!");
-            }
-            else if(e.getMessage().contains("ORA-00001")){
-                throw new DatabaseException("Map already existing on communityMaps server!\n Look for mapID: " + map.getMapID());
-            }
-            else{
-                throw new DatabaseException("Unknown Database Error. Saving to SQL communityMap server failed!");
+            if(e.getMessage().contains("Identical map already saved")){
+                part1 = e.getMessage();
+            }
+        }
+        if(doUpload) {
+            try {
+                db.uploadCommunityMap(map);
+                log.info("Newly created Community-Map successfully published!");
+            } catch (Exception e) {
+                log.error(e);
+                if (e.getMessage().contains("ORA-17868") | e.getMessage().contains("ORA-01017")) {
+                    throw new DatabaseException(part1 + "\nNo connection to SQL server! Saving to SQL communityMap server failed!");
+                } else if (e.getMessage().contains("ORA-00001")) {
+                    throw new DatabaseException(part1 + "\nMap already existing on communityMaps server!\n Look for mapID: " + map.getMapID());
+                } else {
+                    throw new DatabaseException(part1 + "\nUnknown Database Error. Saving to SQL communityMap server failed!");
+                }
             }
         }
     }
@@ -321,7 +314,7 @@ public class Persistence {
                     throw new DatabaseException("Locally stored password does not match online password. Please reenter credentials!");
                 }
             }
-            else{   //überflüssig, da GSON schon beim laden der Daten meckern würde, wenn er den Accounttype nicht finden kann
+            else{   //eigentlich überflüssig, da GSON schon beim Laden der Daten meckern würde, wenn er den Accounttype nicht finden kann
                 throw new DatabaseException("AccountType invalid - accountData corrupted! Please create new Account or login with existing!");
             }
             log.info("Player account successfully verified!");
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/RuntimeInfo.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/RuntimeInfo.java
index 9520b77d..5564faa2 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/RuntimeInfo.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/RuntimeInfo.java
@@ -26,11 +26,25 @@ public class RuntimeInfo {
 
     //Thread Status-Updates
     private ThreadStatus threadStartup1;
-    private String threadStartup1Message;
+    private String threadStartup1Msg;
     private ThreadStatus threadStartup2;
-    private String threadStartup2Message;
+    private String threadStartup2Msg;
     private ThreadStatus threadUpdateMaps;
+    private String threadUpdateMapsMsg;
     private ThreadStatus threadUpdateStats;
+    private String threadUpdateStatsMsg;
+    private ThreadStatus threadDLCommMap;
+    private String threadDLCommMapMsg;
+    private ThreadStatus threadSaveCommMap;
+    private String threadSaveCommMapMsg;
+    private ThreadStatus threadCommMapList;
+    private String threadCommMapListMsg;
+    private ThreadStatus threadRstStats;
+    private String threadRstStatsMsg;
+    private ThreadStatus threadSaveStats;
+    private String threadSaveStatsMsg;
+    private ThreadStatus threadCreateAcc;
+    private String threadCreateAccMsg;
 
     //Stats Tracking during Gameplay
     private int kills;
@@ -116,12 +130,12 @@ public class RuntimeInfo {
         this.threadStartup1 = threadStartup1;
     }
 
-    public String getThreadStartup1Message() {
-        return threadStartup1Message;
+    public String getThreadStartup1Msg() {
+        return threadStartup1Msg;
     }
 
-    public void setThreadStartup1Message(String threadStartup1Message) {
-        this.threadStartup1Message = threadStartup1Message;
+    public void setThreadStartup1Msg(String threadStartup1Msg) {
+        this.threadStartup1Msg = threadStartup1Msg;
     }
 
     public ThreadStatus getThreadStartup2() {
@@ -132,12 +146,12 @@ public class RuntimeInfo {
         this.threadStartup2 = threadStartup2;
     }
 
-    public String getThreadStartup2Message() {
-        return threadStartup2Message;
+    public String getThreadStartup2Msg() {
+        return threadStartup2Msg;
     }
 
-    public void setThreadStartup2Message(String threadStartup2Message) {
-        this.threadStartup2Message = threadStartup2Message;
+    public void setThreadStartup2Msg(String threadStartup2Msg) {
+        this.threadStartup2Msg = threadStartup2Msg;
     }
 
     public ThreadStatus getThreadUpdateMaps() {
@@ -148,6 +162,14 @@ public class RuntimeInfo {
         this.threadUpdateMaps = threadUpdateMaps;
     }
 
+    public String getThreadUpdateMapsMsg() {
+        return threadUpdateMapsMsg;
+    }
+
+    public void setThreadUpdateMapsMsg(String threadUpdateMapsMsg) {
+        this.threadUpdateMapsMsg = threadUpdateMapsMsg;
+    }
+
     public ThreadStatus getThreadUpdateStats() {
         return threadUpdateStats;
     }
@@ -156,6 +178,110 @@ public class RuntimeInfo {
         this.threadUpdateStats = threadUpdateStats;
     }
 
+    public String getThreadUpdateStatsMsg() {
+        return threadUpdateStatsMsg;
+    }
+
+    public void setThreadUpdateStatsMsg(String threadUpdateStatsMsg) {
+        this.threadUpdateStatsMsg = threadUpdateStatsMsg;
+    }
+
+    public ThreadStatus getThreadDLCommMap() {
+        return threadDLCommMap;
+    }
+
+    public void setThreadDLCommMap(ThreadStatus threadDLCommMap) {
+        this.threadDLCommMap = threadDLCommMap;
+    }
+
+    public String getThreadDLCommMapMsg() {
+        return threadDLCommMapMsg;
+    }
+
+    public void setThreadDLCommMapMsg(String threadDLCommMapMsg) {
+        this.threadDLCommMapMsg = threadDLCommMapMsg;
+    }
+
+    public ThreadStatus getThreadSaveCommMap() {
+        return threadSaveCommMap;
+    }
+
+    public void setThreadSaveCommMap(ThreadStatus threadSaveCommMap) {
+        this.threadSaveCommMap = threadSaveCommMap;
+    }
+
+    public String getThreadSaveCommMapMsg() {
+        return threadSaveCommMapMsg;
+    }
+
+    public void setThreadSaveCommMapMsg(String threadSaveCommMapMsg) {
+        this.threadSaveCommMapMsg = threadSaveCommMapMsg;
+    }
+
+    public ThreadStatus getThreadCommMapList() {
+        return threadCommMapList;
+    }
+
+    public void setThreadCommMapList(ThreadStatus threadCommMapList) {
+        this.threadCommMapList = threadCommMapList;
+    }
+
+    public String getThreadCommMapListMsg() {
+        return threadCommMapListMsg;
+    }
+
+    public void setThreadCommMapListMsg(String threadCommMapListMsg) {
+        this.threadCommMapListMsg = threadCommMapListMsg;
+    }
+
+    public ThreadStatus getThreadRstStats() {
+        return threadRstStats;
+    }
+
+    public void setThreadRstStats(ThreadStatus threadRstStats) {
+        this.threadRstStats = threadRstStats;
+    }
+
+    public String getThreadRstStatsMsg() {
+        return threadRstStatsMsg;
+    }
+
+    public void setThreadRstStatsMsg(String threadRstStatsMsg) {
+        this.threadRstStatsMsg = threadRstStatsMsg;
+    }
+
+    public ThreadStatus getThreadSaveStats() {
+        return threadSaveStats;
+    }
+
+    public void setThreadSaveStats(ThreadStatus threadSaveStats) {
+        this.threadSaveStats = threadSaveStats;
+    }
+
+    public String getThreadSaveStatsMsg() {
+        return threadSaveStatsMsg;
+    }
+
+    public void setThreadSaveStatsMsg(String threadSaveStatsMsg) {
+        this.threadSaveStatsMsg = threadSaveStatsMsg;
+    }
+
+    public ThreadStatus getThreadCreateAcc() {
+        return threadCreateAcc;
+    }
+
+    public void setThreadCreateAcc(ThreadStatus threadCreateAcc) {
+        this.threadCreateAcc = threadCreateAcc;
+    }
+
+    public String getThreadCreateAccMsg() {
+        return threadCreateAccMsg;
+    }
+
+    public void setThreadCreateAccMsg(String threadCreateAccMsg) {
+        this.threadCreateAccMsg = threadCreateAccMsg;
+    }
+
     public int getKills() {
         return kills;
     }
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadCreateAcc.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadCreateAcc.java
new file mode 100644
index 00000000..00ca1da5
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadCreateAcc.java
@@ -0,0 +1,41 @@
+package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes;
+
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.ENUMs.AccountType;
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.ENUMs.ThreadStatus;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+public class ThreadCreateAcc extends Thread{
+
+    private static final Logger log = LogManager.getLogger(ThreadCreateAcc.class);
+    private String playerName;
+    private String password;
+    private AccountType type;
+
+    @Override
+    public void run() {
+
+        Persistence persistenceInst = Persistence.getInstance();
+        RuntimeInfo runtimeInfoInst = RuntimeInfo.getInstance();
+
+        try {
+            runtimeInfoInst.setThreadCreateAcc(ThreadStatus.RUNNING);
+            persistenceInst.createAccount(playerName, password, type);
+            log.info("Create account thread finished successfully!");
+            runtimeInfoInst.setThreadCreateAcc(ThreadStatus.FINISHED);
+        } catch (Exception e) {
+            log.error(e);
+            runtimeInfoInst.setThreadCreateAccMsg(e.getMessage());
+            log.info("Create account thread failed!");
+            runtimeInfoInst.setThreadCreateAcc(ThreadStatus.FAILED);
+        }
+    }
+
+    public void startThread(String playerName, String password, AccountType type){
+        this.playerName = playerName;
+        this.password = password;
+        this.type = type;
+        start();
+    }
+
+}
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadDLCommMap.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadDLCommMap.java
new file mode 100644
index 00000000..be7d23d7
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadDLCommMap.java
@@ -0,0 +1,36 @@
+package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes;
+
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.ENUMs.ThreadStatus;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+public class ThreadDLCommMap extends Thread{
+
+    private static final Logger log = LogManager.getLogger(ThreadDLCommMap.class);
+    private String mapID;
+
+    @Override
+    public void run() {
+
+        Persistence persistenceInst = Persistence.getInstance();
+        RuntimeInfo runtimeInfoInst = RuntimeInfo.getInstance();
+
+        try {
+            runtimeInfoInst.setThreadDLCommMap(ThreadStatus.RUNNING);
+            persistenceInst.getCommunityMap(mapID);
+            log.info("Download Community-Map thread finished successfully!");
+            runtimeInfoInst.setThreadDLCommMap(ThreadStatus.FINISHED);
+        } catch (Exception e) {
+            log.error(e);
+            runtimeInfoInst.setThreadDLCommMapMsg(e.getMessage());
+            log.info("Download Community-Map thread failed!");
+            runtimeInfoInst.setThreadDLCommMap(ThreadStatus.FAILED);
+        }
+    }
+
+    public void startThread(String mapID){
+        this.mapID = mapID;
+        start();
+    }
+
+}
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadGetMapList.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadGetMapList.java
new file mode 100644
index 00000000..e550762d
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadGetMapList.java
@@ -0,0 +1,30 @@
+package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes;
+
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.ENUMs.ThreadStatus;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+public class ThreadGetMapList extends Thread {
+
+    private static final Logger log = LogManager.getLogger(ThreadGetMapList.class);
+
+    @Override
+    public void run() {
+
+        Persistence persistenceInst = Persistence.getInstance();
+        RuntimeInfo runtimeInfoInst = RuntimeInfo.getInstance();
+
+        try {
+            runtimeInfoInst.setThreadCommMapList(ThreadStatus.RUNNING);
+            persistenceInst.createRemoteCommunityMapsList();
+            log.info("Retrieving Community-Map-List thread finished successfully!");
+            runtimeInfoInst.setThreadCommMapList(ThreadStatus.FINISHED);
+        } catch (Exception e) {
+            log.error(e);
+            runtimeInfoInst.setThreadCommMapListMsg(e.getMessage());
+            log.info("Retrieving Community-Map-List thread failed!");
+            runtimeInfoInst.setThreadCommMapList(ThreadStatus.FAILED);
+        }
+    }
+
+}
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadRstStats.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadRstStats.java
new file mode 100644
index 00000000..9d3579e2
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadRstStats.java
@@ -0,0 +1,30 @@
+package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes;
+
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.ENUMs.ThreadStatus;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+public class ThreadRstStats extends Thread {
+
+    private static final Logger log = LogManager.getLogger(ThreadRstStats.class);
+
+    @Override
+    public void run() {
+
+        Persistence persistenceInst = Persistence.getInstance();
+        RuntimeInfo runtimeInfoInst = RuntimeInfo.getInstance();
+
+        try {
+            runtimeInfoInst.setThreadRstStats(ThreadStatus.RUNNING);
+            persistenceInst.resetPlayerStatistics();
+            log.info("Reset Player-Statistics thread finished successfully!");
+            runtimeInfoInst.setThreadRstStats(ThreadStatus.FINISHED);
+        } catch (Exception e) {
+            log.error(e);
+            runtimeInfoInst.setThreadRstStatsMsg(e.getMessage());
+            log.info("Reset Player-Statistics thread failed!");
+            runtimeInfoInst.setThreadRstStats(ThreadStatus.FAILED);
+        }
+    }
+
+}
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadSaveCommMap.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadSaveCommMap.java
new file mode 100644
index 00000000..a7b8fe7f
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadSaveCommMap.java
@@ -0,0 +1,38 @@
+package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes;
+
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.ENUMs.ThreadStatus;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+public class ThreadSaveCommMap extends Thread{
+
+    private static final Logger log = LogManager.getLogger(ThreadSaveCommMap.class);
+    private MapData map;
+    private boolean doUpload;
+
+    @Override
+    public void run() {
+
+        Persistence persistenceInst = Persistence.getInstance();
+        RuntimeInfo runtimeInfoInst = RuntimeInfo.getInstance();
+
+        try {
+            runtimeInfoInst.setThreadSaveCommMap(ThreadStatus.RUNNING);
+            persistenceInst.saveCreatedMap(map, doUpload);
+            log.info("Uploading Community-Map thread finished successfully!");
+            runtimeInfoInst.setThreadSaveCommMap(ThreadStatus.FINISHED);
+        } catch (Exception e) {
+            log.error(e);
+            runtimeInfoInst.setThreadSaveCommMapMsg(e.getMessage());
+            log.info("Uploading Community-Map thread failed!");
+            runtimeInfoInst.setThreadSaveCommMap(ThreadStatus.FAILED);
+        }
+    }
+
+    public void startThread(MapData map, boolean doUpload){
+        this.map = map;
+        this.doUpload = doUpload;
+        start();
+    }
+
+}
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadSaveStats.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadSaveStats.java
new file mode 100644
index 00000000..d3174d6d
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadSaveStats.java
@@ -0,0 +1,30 @@
+package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes;
+
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.ENUMs.ThreadStatus;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+public class ThreadSaveStats extends Thread{
+
+    private static final Logger log = LogManager.getLogger(ThreadSaveStats.class);
+
+    @Override
+    public void run() {
+
+        Persistence persistenceInst = Persistence.getInstance();
+        RuntimeInfo runtimeInfoInst = RuntimeInfo.getInstance();
+
+        try {
+            runtimeInfoInst.setThreadSaveStats(ThreadStatus.RUNNING);
+            persistenceInst.savePlayerStatistics();
+            log.info("Save Player-Statistics thread finished successfully!");
+            runtimeInfoInst.setThreadSaveStats(ThreadStatus.FINISHED);
+        } catch (Exception e) {
+            log.error(e);
+            runtimeInfoInst.setThreadSaveStatsMsg(e.getMessage());
+            log.info("Save Player-Statistics thread failed!");
+            runtimeInfoInst.setThreadSaveStats(ThreadStatus.FAILED);
+        }
+    }
+
+}
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadStartup1.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadStartup1.java
index a680df0d..d224f074 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadStartup1.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadStartup1.java
@@ -26,7 +26,8 @@ public class ThreadStartup1 extends Thread{
             runtimeInfoInst.setThreadStartup1(ThreadStatus.FINISHED);
         } catch (Exception e) {
             log.error(e);
-            runtimeInfoInst.setThreadStartup1Message(e.getMessage());
+            runtimeInfoInst.setThreadStartup1Msg(e.getMessage());
+            log.info("Startup routine part1 failed!");
             runtimeInfoInst.setThreadStartup1(ThreadStatus.FAILED);
         }
     }
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadStartup2.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadStartup2.java
index a711e529..b2d6bca9 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadStartup2.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadStartup2.java
@@ -21,7 +21,8 @@ public class ThreadStartup2 extends Thread{
             runtimeInfoInst.setThreadStartup2(ThreadStatus.FINISHED);
         } catch (Exception e) {
             log.error(e);
-            runtimeInfoInst.setThreadStartup2Message(e.getMessage());
+            runtimeInfoInst.setThreadStartup2Msg(e.getMessage());
+            log.info("Startup routine part2 failed!");
             runtimeInfoInst.setThreadStartup2(ThreadStatus.FAILED);
         }
     }
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadUpdateMaps.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadUpdateMaps.java
index 19d27572..d3b693ba 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadUpdateMaps.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadUpdateMaps.java
@@ -21,6 +21,7 @@ public class ThreadUpdateMaps extends Thread{
             runtimeInfoInst.setThreadUpdateMaps(ThreadStatus.FINISHED);
         } catch (Exception e) {
             log.error(e);
+            log.info("Update Core-Maps thread failed!");
             runtimeInfoInst.setThreadUpdateMaps(ThreadStatus.FAILED);
         }
     }
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadUpdateStats.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadUpdateStats.java
index 9f0b7358..02475b2d 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadUpdateStats.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadUpdateStats.java
@@ -17,6 +17,11 @@ public class ThreadUpdateStats extends Thread{
         try {
             runtimeInfoInst.setThreadUpdateStats(ThreadStatus.RUNNING);
             persistenceInst.updatePlayerStatistics(runtimeInfoInst.getKills(), runtimeInfoInst.getDeaths(), runtimeInfoInst.getGameTime(), runtimeInfoInst.getBlocksDestroyed(), runtimeInfoInst.isGameWon());
+            runtimeInfoInst.setKills(0);
+            runtimeInfoInst.setDeaths(0);
+            runtimeInfoInst.setGameTime(0);
+            runtimeInfoInst.setBlocksDestroyed(0);
+            runtimeInfoInst.setGameWon(false);
             log.info("Update statistics thread finished successfully!");
             runtimeInfoInst.setThreadUpdateStats(ThreadStatus.FINISHED);
         } catch (Exception e) {
-- 
GitLab