Bläddra i källkod

Merge pull request #24 from RedstoneFuture/Refactoring/FileSetup

Outsourcing of the config create and load function
Daniel 3 år sedan
förälder
incheckning
c1e47d5a2e

+ 8 - 36
missilewars-plugin/src/main/java/de/butzlabben/missilewars/Config.java

@@ -19,6 +19,7 @@
 package de.butzlabben.missilewars;
 
 import de.butzlabben.missilewars.game.GameManager;
+import de.butzlabben.missilewars.util.SetupUtil;
 import org.bukkit.Bukkit;
 import org.bukkit.Location;
 import org.bukkit.Material;
@@ -26,8 +27,7 @@ import org.bukkit.World;
 import org.bukkit.configuration.ConfigurationSection;
 import org.bukkit.configuration.file.YamlConfiguration;
 
-import java.io.*;
-import java.nio.charset.StandardCharsets;
+import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -43,34 +43,15 @@ public class Config {
     private static final File DIR = MissileWars.getInstance().getDataFolder();
     private static final File FILE = new File(DIR, "config.yml");
     private static YamlConfiguration cfg;
-    private static boolean configNew = false;
+    private static boolean isNewConfig = false;
 
     public static void load() {
 
-        // check if the directory "/MissileWars" exists
-        if (!DIR.exists()) {
-            DIR.mkdirs();
-        }
-
-        // check if the config file exists
-        if (!FILE.exists()) {
-            try {
-                FILE.createNewFile();
-            } catch (IOException e) {
-                Logger.ERROR.log("Could not create config.yml!");
-                e.printStackTrace();
-            }
-            configNew = true;
-        }
+        // check if the directory and the file exists or create it new
+        isNewConfig = SetupUtil.isNewConfig(DIR, FILE);
 
         // try to load the config
-        try {
-            cfg = YamlConfiguration.loadConfiguration(new InputStreamReader(new FileInputStream(FILE), StandardCharsets.UTF_8));
-        } catch (FileNotFoundException e) {
-            Logger.ERROR.log("Couldn't load config.yml");
-            e.printStackTrace();
-            return;
-        }
+        cfg = SetupUtil.getLoadedConfig(FILE);
 
         // copy the config input
         cfg.options().copyDefaults(true);
@@ -79,7 +60,7 @@ public class Config {
         addDefaults();
 
         // re-save the config with only validated options
-        saveConfig();
+        SetupUtil.safeFile(FILE, cfg);
     }
 
     private static void addDefaults() {
@@ -133,7 +114,7 @@ public class Config {
         cfg.addDefault("sidebar.member_list_style", "%team_color%%playername%");
         cfg.addDefault("sidebar.member_list_max", "4");
 
-        if (configNew) {
+        if (isNewConfig) {
             List<String> sidebarList = new ArrayList<>();
 
             sidebarList.add("§7Time left:");
@@ -147,15 +128,6 @@ public class Config {
         }
     }
 
-    private static void saveConfig() {
-        try {
-            cfg.save(FILE);
-        } catch (IOException e) {
-            Logger.ERROR.log("Could not save config.yml!");
-            e.printStackTrace();
-        }
-    }
-
     public static List<String> getScoreboardEntries() {
         return cfg.getStringList("sidebar.entries");
     }

+ 7 - 33
missilewars-plugin/src/main/java/de/butzlabben/missilewars/MessageConfig.java

@@ -18,11 +18,11 @@
 
 package de.butzlabben.missilewars;
 
+import de.butzlabben.missilewars.util.SetupUtil;
 import org.bukkit.ChatColor;
 import org.bukkit.configuration.file.YamlConfiguration;
 
-import java.io.*;
-import java.nio.charset.StandardCharsets;
+import java.io.File;
 
 
 /**
@@ -34,32 +34,15 @@ public class MessageConfig {
     private static final File DIR = MissileWars.getInstance().getDataFolder();
     private static final File FILE = new File(DIR, "messages.yml");
     private static YamlConfiguration cfg;
+    private static boolean isNewConfig = false;
 
     public static void load() {
 
-        // check if the directory "/MissileWars" exists
-        if (!DIR.exists()) {
-            DIR.mkdirs();
-        }
-
-        // check if the config file exists
-        if (!FILE.exists()) {
-            try {
-                FILE.createNewFile();
-            } catch (IOException e) {
-                Logger.ERROR.log("Could not create messages.yml!");
-                e.printStackTrace();
-            }
-        }
+        // check if the directory and the file exists or create it new
+        isNewConfig = SetupUtil.isNewConfig(DIR, FILE);
 
         // try to load the config
-        try {
-            cfg = YamlConfiguration.loadConfiguration(new InputStreamReader(new FileInputStream(FILE), StandardCharsets.UTF_8));
-        } catch (FileNotFoundException e) {
-            Logger.ERROR.log("Couldn't load messages.yml");
-            e.printStackTrace();
-            return;
-        }
+        cfg = SetupUtil.getLoadedConfig(FILE);
 
         // copy the config input
         cfg.options().copyDefaults(true);
@@ -68,7 +51,7 @@ public class MessageConfig {
         addDefaults();
 
         // re-save the config with only validated options
-        saveConfig();
+        SetupUtil.safeFile(FILE, cfg);
     }
 
     private static void addDefaults() {
@@ -141,15 +124,6 @@ public class MessageConfig {
 
     }
 
-    private static void saveConfig() {
-        try {
-            cfg.save(FILE);
-        } catch (IOException e) {
-            Logger.ERROR.log("Could not save messages.yml!");
-            e.printStackTrace();
-        }
-    }
-
     public static String getMessage(String path) {
         return getPrefix() + getNativeMessage(path);
     }

+ 49 - 0
missilewars-plugin/src/main/java/de/butzlabben/missilewars/util/SetupUtil.java

@@ -23,10 +23,12 @@ import de.butzlabben.missilewars.Logger;
 import de.butzlabben.missilewars.MissileWars;
 import de.butzlabben.missilewars.game.Arenas;
 import de.butzlabben.missilewars.wrapper.abstracts.Arena;
+import org.bukkit.configuration.file.YamlConfiguration;
 import org.bukkit.plugin.java.JavaPlugin;
 
 import java.io.*;
 import java.net.URL;
+import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.util.Enumeration;
 import java.util.jar.JarEntry;
@@ -45,6 +47,53 @@ public class SetupUtil {
     private SetupUtil() {
     }
 
+    public static boolean isNewConfig(File dir, File file) {
+        String fileName = file.getName();
+
+        // check if the directory exists
+        if (!dir.exists()) {
+            dir.mkdirs();
+        }
+
+        // check if the config file exists
+        if (!file.exists()) {
+            try {
+                file.createNewFile();
+            } catch (IOException e) {
+                Logger.ERROR.log("Could not create " + fileName + "!");
+                e.printStackTrace();
+            }
+            return true;
+        }
+
+        return false;
+    }
+
+    public static YamlConfiguration getLoadedConfig(File file) {
+        String fileName = file.getName();
+        YamlConfiguration cfg;
+
+        try {
+            cfg = YamlConfiguration.loadConfiguration(new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8));
+        } catch (FileNotFoundException e) {
+            Logger.ERROR.log("Couldn't load " + fileName + "!");
+            e.printStackTrace();
+            return null;
+        }
+        return cfg;
+    }
+
+    public static void safeFile(File file, YamlConfiguration cfg) {
+        String fileName = file.getName();
+
+        try {
+            cfg.save(file);
+        } catch (IOException e) {
+            Logger.ERROR.log("Could not save " + fileName + "!");
+            e.printStackTrace();
+        }
+    }
+
     public static void checkShields() {
         for (Arena arena : Arenas.getArenas()) {
             File file = new File(MissileWars.getInstance().getDataFolder(), arena.getShieldConfiguration().getSchematic());