All Downloads are FREE. Search and download functionalities are using the official Maven repository.

be.maximvdw.placeholderapi.internal.storage.YamlStorage Maven / Gradle / Ivy

package be.maximvdw.placeholderapi.internal.storage;

import be.maximvdw.placeholderapi.internal.ui.SendConsole;
import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.Plugin;

import java.io.*;
import java.util.Date;

/**
 * YamlStorage
 * 

* YAML File storage * * @author Maxim Van de Wynckel (Maximvdw) * @version 12-04-2014 * @project MVdW Software Plugin Interface * @site http://www.mvdw-software.be/ */ public class YamlStorage { private Plugin plugin = null; // Plugin instance private String configName = ""; // Configuration name private String pluginFolder = ""; // Plugin folder private String folder = ""; // Folder private String resourceFolder = ""; // Resource folder private boolean resources = false; private int configVersion = -1; private YamlBuilder template = null; /** * Initialize the Yaml Configuration * * @param plugin Plugin */ public YamlStorage(Plugin plugin, String configName) { this(plugin, "", configName); } /** * Initialize the Yaml Configuration * * @param plugin Plugin */ public YamlStorage(Plugin plugin, String folder, String configName) { this(plugin, folder, configName, false); } /** * Initialize the Yaml Configuration * * @param plugin Plugin */ public YamlStorage(Plugin plugin, String folder, String configName, boolean resources) { this(plugin, folder, configName, resources, 0); } /** * Initialize the Yaml Configuration * * @param plugin Plugin */ public YamlStorage(Plugin plugin, String folder, String configName, boolean resources, int version, int errorLevel) { this.plugin = plugin; this.folder = folder; this.configName = configName; this.resources = resources; this.setConfigVersion(version); loadConfig(errorLevel); if (version != -1) if (getConfig().getInt("config") < version) { updateConfig(); } } /** * Initialize the Yaml Configuration * * @param plugin Plugin */ public YamlStorage(Plugin plugin, String folder, String configName, boolean resources, int version) { this(plugin, folder, configName, resources, version, 0); } /** * Initialize the Yaml Configuration * * @param plugin Plugin */ public YamlStorage(Plugin plugin, String folder, String configName, int version, YamlBuilder builder) { this(plugin, folder, configName, version, builder, 0); } /** * Initialize the Yaml Configuration * * @param plugin Plugin */ public YamlStorage(Plugin plugin, String folder, String configName, int version, YamlBuilder builder, int errorLevel) { this.plugin = plugin; this.folder = folder; this.configName = configName; setTemplate(builder); loadConfig(errorLevel); if (getConfig().getInt("config") < version) { updateConfig(); } } /** * Initialize the Yaml Configuration * * @param plugin Plugin */ public YamlStorage(Plugin plugin, String folder, String configName, String resourceFolder, boolean resources) { this.plugin = plugin; this.folder = folder; this.configName = configName; this.resourceFolder = resourceFolder; this.resources = resources; loadConfig(); } /** * Initialize the Yaml Configuration * * @param plugin Plugin */ public YamlStorage(Plugin plugin, String folder, String configName, String resourceFolder, boolean resources, int version) { this(plugin, folder, configName, resourceFolder, resources, version, 0); } public YamlStorage(Plugin plugin, String folder, String configName, String resourceFolder, boolean resources, int version, int errorLevel) { this.plugin = plugin; this.folder = folder; this.configName = configName; this.resourceFolder = resourceFolder; this.resources = resources; this.setConfigVersion(version); loadConfig(errorLevel); if (getConfig().getInt("config") < version) { updateConfig(); } } /** * Initialize the Yaml Configuration * * @param plugin Plugin */ public YamlStorage(String pluginFolder, String folder, String configName) { this.folder = folder; this.pluginFolder = pluginFolder; this.configName = configName; loadConfig(); } // Yaml Configuration private YamlConfiguration pluginConfig; private File configFile; private boolean loaded = false; /** * Gets the configuration file. * * @return the myConfig */ public YamlConfiguration getConfig() { if (!loaded) { loadConfig(); } return pluginConfig; } /** * Gets the configuration file. * * @return Configuration file */ public File getConfigFile() { return configFile; } /** * Get file contents * * @return Contents */ public String getContents() { try { FileInputStream fis = new FileInputStream(configFile); byte[] data = new byte[(int) configFile.length()]; fis.read(data); fis.close(); // String s = new String(data, "UTF-8"); return s; } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return ""; } /** * Loads the configuration file */ public void loadConfig() { loadConfig(0); } /** * Loads the configuration file */ public void loadConfig(int errorLevel) { if (plugin != null) configFile = new File(plugin.getDataFolder() + "/" + folder, configName + ".yml"); else configFile = new File("plugins/" + pluginFolder + "/" + folder, configName + ".yml"); if (configFile.exists()) { pluginConfig = new YamlConfiguration(); try { pluginConfig.load(configFile); } catch (FileNotFoundException ex) { if (errorLevel < 1) SendConsole.severe("Error in [" + configName + "] - File not found!"); } catch (IOException ex) { if (errorLevel < 2) SendConsole.severe("Error in [" + configName + "] - Error while reading!"); } catch (InvalidConfigurationException ex) { if (errorLevel < 3) SendConsole.severe("Error in [" + configName + "] - Corrupted YML!"); ex.printStackTrace(); } loaded = true; } else { try { InputStream jarURL = null; if (plugin != null) { plugin.getDataFolder().mkdir(); new File(plugin.getDataFolder() + "/" + folder).mkdirs(); jarURL = plugin.getClass().getResourceAsStream( "/" + resourceFolder + (resourceFolder == "" ? "" : "/") + configName + ".yml"); } else { new File("plugins/" + pluginFolder + "/" + folder).mkdirs(); } if (jarURL != null) { SendConsole.info("Copying '" + configFile + "' from the resources!"); copyFile(jarURL, configFile); } else { if (!resources) { SendConsole.info("Creating new file '" + configFile + "'!"); configFile.createNewFile(); if (getTemplate() != null) { SendConsole.info("Using template for file '" + configFile + "' ..."); getTemplate().writeToFile(getConfigFile()); } } else { return; } } pluginConfig = new YamlConfiguration(); pluginConfig.load(configFile); loaded = true; if (jarURL != null) { jarURL.close(); } } catch (Exception e) { if (errorLevel < 1) { SendConsole.severe("Error while loading " + configFile + "!"); e.printStackTrace(); } } } } /** * Update configuration */ public void updateConfig() { SendConsole.warning("Updating " + getConfigFile().getName() + "!"); configFile.renameTo(new File((plugin == null ? "plugins/ " : plugin.getDataFolder()) + "/" + folder, configFile.getName().replace(".yml", "") + new Date().getTime() + ".yml")); configFile = null; loadConfig(); } /** * Copies a file to a new location. * * @param in InputStream * @param out File * @throws Exception */ static private void copyFile(InputStream in, File out) throws Exception { InputStream fis = in; FileOutputStream fos = new FileOutputStream(out); try { byte[] buf = new byte[1024]; int i = 0; while ((i = fis.read(buf)) != -1) { fos.write(buf, 0, i); } } catch (Exception e) { throw e; } finally { if (fis != null) { fis.close(); } if (fos != null) { fos.close(); } } } public int getConfigVersion() { return configVersion; } public void setConfigVersion(int configVersion) { this.configVersion = configVersion; } public YamlBuilder getTemplate() { return template; } public void setTemplate(YamlBuilder template) { this.template = template; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy