game-client

Play TicTacToe and Reversi
Log | Files | Refs

SettingsFileHandler.java (1711B)


      1 package nl.isygameclient.util;
      2 
      3 import com.google.gson.Gson;
      4 import com.google.gson.GsonBuilder;
      5 import nl.isygameclient.settings.Settings;
      6 
      7 import java.io.FileWriter;
      8 import java.io.IOException;
      9 import java.nio.file.Files;
     10 import java.nio.file.Paths;
     11 
     12 
     13 /**
     14  * This Class is for accessing and manipulating settings files.
     15  * This class handles the loading and saving of settings data.
     16  * @author A F Koens
     17  */
     18 public abstract class SettingsFileHandler {
     19     public static final String SETTINGS_FILENAME = "settings.json";
     20 
     21 
     22     /**
     23      * Save a settings object to a json file.
     24      * @param settings a Settings object.
     25      * */
     26     public static void save(Settings settings) {
     27         try {
     28             Gson gson = new GsonBuilder()
     29                     .setPrettyPrinting()
     30                     .create();
     31 
     32             FileWriter writer = new FileWriter(SETTINGS_FILENAME);
     33             writer.write(gson.toJson(settings));
     34             writer.close();
     35         } catch (IOException e) {
     36             e.printStackTrace();
     37         }
     38     }
     39 
     40     /**
     41      * Read a json file and loads its values into a Settings object.
     42      * @return a Settings object.
     43      * */
     44     public static Settings load() {
     45         try {
     46             Gson gson = new GsonBuilder()
     47                     .setPrettyPrinting()
     48                     .create();
     49 
     50             String inFile = new String(Files.readAllBytes(Paths.get(SETTINGS_FILENAME)));
     51             return gson.fromJson(inFile, Settings.class);
     52         } catch (IOException e) {
     53             System.err.println("Could Not Load Settings File, Using Defaults Instead");
     54             var defaults = new Settings();
     55             save(defaults);
     56             return defaults;
     57         }
     58     }
     59 }
     60