package co.forsaken.projectindigo.utils; import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; import co.forsaken.projectindigo.log.LogManager; import com.google.gson.Gson; public class Settings { private static final File SETTINGS_FILE = new File(DirectoryLocations.BACKEND_DATA_DIR.format("settings.json")); private static SettingsToken token; public static SettingsToken getToken() { if (token == null) { try { if (!SETTINGS_FILE.exists()) { SETTINGS_FILE.createNewFile(); FileUtils.writeStringToFile("{ \"installDir\": \"" + formatInput(DirectoryLocations.INSTANCE_DIR.get()) + "\", \"maxRam\": \"1024\", \"javaParams\": \"-XX:PermSize=512M\", \"windowSize\": \"1280,720\", \"windowPos\": \"0,0\", \"windowMax\": \"true\" }", SETTINGS_FILE); } token = new Gson().fromJson(new Scanner(SETTINGS_FILE, "UTF-8").useDelimiter("\\A").next(), SettingsToken.class); if (token.installPath == null) { LogManager.info("Could not get path properly, setting it to default"); token.installPath = formatInput(DirectoryLocations.INSTANCE_DIR.get()); save(); } DirectoryLocations.INSTANCE_DIR.update(token.installPath); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } return token; } private static String formatInput(String input) { return input.replace("\\", "\\\\").replace("\"", "\\\""); } public static void save() { String path = new File(token.installPath).getAbsolutePath(); if (!path.endsWith(File.separator)) path += File.separator; LogManager.info("Install Directory set to " + path); token.installPath = path; token.javaParams = formatInput(token.javaParams); DirectoryLocations.INSTANCE_DIR.update(formatInput(path)); FileUtils.writeStringToFile(new Gson().toJson(token), SETTINGS_FILE); } public class SettingsToken { public String installPath; public String maxRam; public String javaParams; public String windowSize; public String windowPos; public String windowMax; } }