package net.mc_pandacraft.java.plugin.pandacraftutils.config;

import java.io.File;
import java.util.Arrays;
import java.util.List;

import net.mc_pandacraft.java.plugin.pandacraftutils.PandacraftUtils;

/*
 * Configuration du plugin
 */
public class ConfigManager {
	private static ConfigManager instance = null;
	
	

	public synchronized static ConfigManager getInstance() {
		if (instance == null)
			loadNewInstance();
		return instance;
	}
	
	public synchronized static void loadNewInstance() {
		try {
			instance = new ConfigManager();
		} catch (Exception e) {
			PandacraftUtils.getInstance().getLogger().severe("Erreur de chargement de la configuration de PandacraftUtils");
			e.printStackTrace();
		}
	}
	
	
	
	
	
	
	
	
	
	
	/**
	 * Découpe une chaine de caractère contenant une série de noeuds
	 * de permissions séparés par des point-virgules et la retourne sous forme d'une liste.
	 * @param perms la chaine de permissions à traiter
	 * @return <code>null</code> si le paramètre est nulle ou si <code>perms.equals("*")</code>, ou alors la chaine splittée.
	 */
	public static List<String> splitPermissionsString(String perms) {
		if (perms == null || perms.equals("*"))
			return null;
		else
			return Arrays.asList(perms.split(";"));
	}
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	private PandacraftUtils plugin = PandacraftUtils.getInstance();
	
	public final DefaultConfig defaultConfig;
	public final WorldBorderConfig worldBorderConfig;
	public final ChatBadWordsConfig chatBadWordsConfig;
	public final AutoMessagesConfig autoMessagesConfig;
	public final CommandAliasConfig commandAliasConfig;
	public final MultiCommandConfig multiCommandConfig;
	
	
	
	
	
	private ConfigManager() throws Exception {
		
		// dossier de configuration principale
		File configDir = plugin.getDataFolder();
		configDir.mkdir();
		
		
		defaultConfig = new DefaultConfig();
		worldBorderConfig = new WorldBorderConfig();
		chatBadWordsConfig = new ChatBadWordsConfig();
		autoMessagesConfig = new AutoMessagesConfig();
		commandAliasConfig = new CommandAliasConfig();
		multiCommandConfig = new MultiCommandConfig();
		
		
	}
	
	
	
	
	
}
