From a3ebd254f2897951a2ce31fdd90b6944c582d82b Mon Sep 17 00:00:00 2001 From: snowleo Date: Sat, 19 Mar 2011 22:39:51 +0000 Subject: Moving all files to trunk. git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@969 e251c2fe-e539-e718-e476-b85c1f46cddb --- .../anjocaido/groupmanager/GMConfiguration.java | 120 +++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java (limited to 'EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java') diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java new file mode 100644 index 000000000..68253eccc --- /dev/null +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java @@ -0,0 +1,120 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.anjocaido.groupmanager; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.Map; +import java.util.logging.Level; +import org.anjocaido.groupmanager.utils.Tasks; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.constructor.SafeConstructor; +import org.yaml.snakeyaml.reader.UnicodeReader; + +/** + * + * @author gabrielcouto + */ +public class GMConfiguration { + + private GroupManager plugin; + private Map rootDataNode; + private File configFile; + + public GMConfiguration(GroupManager plugin) { + this.plugin = plugin; + load(); + } + + public void load() { + if (!plugin.getDataFolder().exists()) { + plugin.getDataFolder().mkdirs(); + } + configFile = new File(plugin.getDataFolder(), "config.yml"); + + if (!configFile.exists()) { + try { + Tasks.copy(plugin.getResourceAsStream("config.yml"), configFile); + } catch (IOException ex) { + GroupManager.logger.log(Level.SEVERE, null, ex); + } + } + + Yaml yaml = new Yaml(new SafeConstructor()); + FileInputStream rx = null; + try { + rx = new FileInputStream(configFile); + } catch (FileNotFoundException ex) { + GroupManager.logger.log(Level.SEVERE, null, ex); + } + try { + rootDataNode = (Map) yaml.load(new UnicodeReader(rx)); + if (rootDataNode == null) { + throw new NullPointerException(); + } + } catch (Exception ex) { + throw new IllegalArgumentException("The following file couldn't pass on Parser.\n" + configFile.getPath(), ex); + } finally { + try { + rx.close(); + } catch (IOException ex) { + } + } + adjustLoggerLevel(); + } + + public Map getMirrorsMap() { + if (rootDataNode.get("settings") instanceof Map) { + Map settingsNode = (Map) rootDataNode.get("settings"); + if (settingsNode.get("permission") instanceof Map) { + Map permissionNode = (Map) settingsNode.get("permission"); + if (permissionNode.get("world") instanceof Map) { + Map worldsNode = (Map) permissionNode.get("world"); + if (worldsNode.get("mirror") instanceof Map) { + Map mirrorsNode = (Map) worldsNode.get("mirror"); + return mirrorsNode; + } + } + } + } + return null; + } + + public Integer getSaveInterval() { + if (rootDataNode.get("settings") instanceof Map) { + Map settingsNode = (Map) rootDataNode.get("settings"); + if (settingsNode.get("data") instanceof Map) { + Map dataNode = (Map) settingsNode.get("data"); + if (dataNode.get("save") instanceof Map) { + Map saveNode = (Map) dataNode.get("save"); + if (saveNode.get("minutes") instanceof Integer) { + return (Integer) saveNode.get("minutes"); + } + } + } + } + return 10; + } + + public void adjustLoggerLevel() { + if (rootDataNode.get("settings") instanceof Map) { + Map settingsNode = (Map) rootDataNode.get("settings"); + if (settingsNode.get("logging") instanceof Map) { + Map loggingNode = (Map) settingsNode.get("logging"); + if (loggingNode.get("level") instanceof String) { + String level = (String) loggingNode.get("level"); + try { + GroupManager.logger.setLevel(Level.parse(level)); + return; + } catch (Exception e) { + } + } + } + } + GroupManager.logger.setLevel(Level.INFO); + } +} -- cgit v1.2.3