package org.mcupdater.ravenbot; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; public class SettingsManager { private static SettingsManager instance; private final Gson gson = new GsonBuilder().setPrettyPrinting().create(); private Settings settings; private final Path configFile = new File(".").toPath().resolve("raven.json"); public static SettingsManager getInstance() { if (instance == null) { instance = new SettingsManager(); } return instance; } public SettingsManager() { if (!configFile.toFile().exists()) { System.out.println("Creating default settings"); this.settings = getDefaultSettings(); saveSettings(); return; } loadSettings(); System.out.println("Settings loaded"); } public void loadSettings() { try { BufferedReader reader = Files.newBufferedReader(configFile, StandardCharsets.UTF_8); this.settings = gson.fromJson(reader, Settings.class); reader.close(); } catch (IOException e) { e.printStackTrace(); } } public Settings getSettings() { return settings; } public void saveSettings() { String jsonOut = gson.toJson(this.settings); try { BufferedWriter writer = Files.newBufferedWriter(configFile, StandardCharsets.UTF_8); writer.append(jsonOut); writer.close(); } catch (IOException e) { e.printStackTrace(); } } private Settings getDefaultSettings() { Settings newSettings = new Settings(); newSettings.setNick("RavenBot"); newSettings.setLogin("ravenbot"); newSettings.setRealName("MCUpdater's RavenBot 2.0"); newSettings.setServer("irc.esper.net"); newSettings.setPort(6667); newSettings.setNsPassword(""); newSettings.setTwitCKey(""); newSettings.setTwitCSecret(""); newSettings.setTwitToken(""); newSettings.setTwitTSecret(""); return newSettings; } }