package com.alecgorge.minecraft.jsonapi.config; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Writer; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.YamlConfiguration; /* * SuperEasyConfig - Config * * Based off of codename_Bs EasyConfig v2.1 * which was inspired by md_5 * * An even awesomer super-duper-lazy Config lib! * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @author MrFigg * @version 1.2 */ public abstract class Config extends ConfigObject { protected transient File CONFIG_FILE = null; protected transient InputStream CONFIG_STREAM = null; protected transient String CONFIG_HEADER = null; public Config() { CONFIG_HEADER = null; } public Config load(File file) throws InvalidConfigurationException { if(file==null) throw new InvalidConfigurationException(new NullPointerException()); if(!file.exists()) throw new InvalidConfigurationException(new IOException("File doesn't exist")); CONFIG_FILE = file; return reload(); } public Config reload() throws InvalidConfigurationException { if(CONFIG_FILE==null && CONFIG_STREAM == null) throw new InvalidConfigurationException(new NullPointerException()); if(CONFIG_STREAM == null && !CONFIG_FILE.exists()) throw new InvalidConfigurationException(new IOException("File doesn't exist")); YamlConfiguration yamlConfig; if(CONFIG_STREAM != null) { yamlConfig = YamlConfiguration.loadConfiguration(new InputStreamReader(CONFIG_STREAM)); } else { yamlConfig = YamlConfiguration.loadConfiguration(CONFIG_FILE); } try { onLoad(yamlConfig); if(CONFIG_FILE != null) { yamlConfig.save(CONFIG_FILE); } } catch(Exception ex) { throw new InvalidConfigurationException(ex); } return this; } public Config save(File file) throws InvalidConfigurationException { if(file==null) throw new InvalidConfigurationException(new NullPointerException()); CONFIG_FILE = file; return save(); } public Config save() throws InvalidConfigurationException { if(CONFIG_FILE==null) throw new InvalidConfigurationException(new NullPointerException()); if(!CONFIG_FILE.exists()) { try { if(CONFIG_FILE.getParentFile() != null) CONFIG_FILE.getParentFile().mkdirs(); CONFIG_FILE.createNewFile(); if(CONFIG_HEADER!=null) { Writer newConfig = new BufferedWriter(new FileWriter(CONFIG_FILE)); for(String line : CONFIG_HEADER.split("\n")) { newConfig.write("# "+line+"\n"); } newConfig.close(); } } catch(Exception ex) { throw new InvalidConfigurationException(ex); } } YamlConfiguration yamlConfig = YamlConfiguration.loadConfiguration(CONFIG_FILE); try { onSave(yamlConfig); yamlConfig.save(CONFIG_FILE); } catch(Exception ex) { throw new InvalidConfigurationException(ex); } return this; } public Config init(File file) throws InvalidConfigurationException { if(file==null) throw new InvalidConfigurationException(new NullPointerException()); CONFIG_FILE = file; return init(); } public Config init() throws InvalidConfigurationException { if(CONFIG_FILE==null && CONFIG_STREAM == null) throw new InvalidConfigurationException(new NullPointerException()); if(CONFIG_STREAM != null || CONFIG_FILE.exists()) return reload(); else return save(); } }