diff options
Diffstat (limited to 'EssentialsAntiCheat/src/com/earth2me/essentials/anticheat/config/ConfigurationManager.java')
-rw-r--r-- | EssentialsAntiCheat/src/com/earth2me/essentials/anticheat/config/ConfigurationManager.java | 257 |
1 files changed, 0 insertions, 257 deletions
diff --git a/EssentialsAntiCheat/src/com/earth2me/essentials/anticheat/config/ConfigurationManager.java b/EssentialsAntiCheat/src/com/earth2me/essentials/anticheat/config/ConfigurationManager.java deleted file mode 100644 index 283ad88d2..000000000 --- a/EssentialsAntiCheat/src/com/earth2me/essentials/anticheat/config/ConfigurationManager.java +++ /dev/null @@ -1,257 +0,0 @@ -package com.earth2me.essentials.anticheat.config; - -import com.earth2me.essentials.anticheat.NoCheat; -import java.io.File; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.text.SimpleDateFormat; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.logging.*; - - -/** - * Central location for everything that's described in the configuration file(s) - * - */ -public class ConfigurationManager -{ - private final static String configFileName = "config.yml"; - private final Map<String, ConfigurationCacheStore> worldnameToConfigCacheMap = new HashMap<String, ConfigurationCacheStore>(); - private FileHandler fileHandler; - private final NoCheat plugin; - - - private static class LogFileFormatter extends Formatter - { - private final SimpleDateFormat date; - - public LogFileFormatter() - { - date = new SimpleDateFormat("yy.MM.dd HH:mm:ss"); - } - - @Override - public String format(LogRecord record) - { - StringBuilder builder = new StringBuilder(); - Throwable ex = record.getThrown(); - - builder.append(date.format(record.getMillis())); - builder.append(" ["); - builder.append(record.getLevel().getLocalizedName().toUpperCase()); - builder.append("] "); - builder.append(record.getMessage()); - builder.append('\n'); - - if (ex != null) - { - StringWriter writer = new StringWriter(); - ex.printStackTrace(new PrintWriter(writer)); - builder.append(writer); - } - - return builder.toString(); - } - } - - public ConfigurationManager(NoCheat plugin, File rootConfigFolder) - { - - this.plugin = plugin; - - // Setup the real configuration - initializeConfig(rootConfigFolder); - - } - - /** - * Read the configuration file and assign either standard values or whatever is declared in the file - * - * @param configurationFile - */ - private void initializeConfig(File rootConfigFolder) - { - - // First try to obtain and parse the global config file - NoCheatConfiguration root = new NoCheatConfiguration(); - root.setDefaults(new DefaultConfiguration()); - root.options().copyDefaults(true); - root.options().copyHeader(true); - - File globalConfigFile = getGlobalConfigFile(rootConfigFolder); - - if (globalConfigFile.exists()) - { - try - { - root.load(globalConfigFile); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - - try - { - root.save(globalConfigFile); - } - catch (Exception e) - { - e.printStackTrace(); - } - - root.regenerateActionLists(); - - // Create a corresponding Configuration Cache - // put the global config on the config map - worldnameToConfigCacheMap.put(null, new ConfigurationCacheStore(root)); - - plugin.setFileLogger(setupFileLogger(new File(rootConfigFolder, root.getString(ConfPaths.LOGGING_FILENAME)))); - - // Try to find world-specific config files - Map<String, File> worldFiles = getWorldSpecificConfigFiles(rootConfigFolder); - - for (Entry<String, File> worldEntry : worldFiles.entrySet()) - { - - File worldConfigFile = worldEntry.getValue(); - - NoCheatConfiguration world = new NoCheatConfiguration(); - world.setDefaults(root); - - try - { - world.load(worldConfigFile); - - worldnameToConfigCacheMap.put(worldEntry.getKey(), new ConfigurationCacheStore(world)); - - // write the config file back to disk immediately - world.save(worldConfigFile); - - } - catch (Exception e) - { - plugin.getLogger().warning("Couldn't load world-specific config for " + worldEntry.getKey()); - e.printStackTrace(); - } - - world.regenerateActionLists(); - } - } - - private static File getGlobalConfigFile(File rootFolder) - { - - File globalConfig = new File(rootFolder, configFileName); - - return globalConfig; - } - - private static Map<String, File> getWorldSpecificConfigFiles(File rootFolder) - { - - HashMap<String, File> files = new HashMap<String, File>(); - - if (rootFolder.isDirectory()) - { - for (File f : rootFolder.listFiles()) - { - if (f.isFile()) - { - String filename = f.getName(); - if (filename.matches(".+_" + configFileName + "$")) - { - // Get the first part = world name - String worldname = filename.substring(0, filename.length() - (configFileName.length() + 1)); - files.put(worldname, f); - } - } - } - } - return files; - } - - private Logger setupFileLogger(File logfile) - { - - Logger l = Logger.getAnonymousLogger(); - l.setLevel(Level.INFO); - // Ignore parent's settings - l.setUseParentHandlers(false); - for (Handler h : l.getHandlers()) - { - l.removeHandler(h); - } - - if (fileHandler != null) - { - fileHandler.close(); - l.removeHandler(fileHandler); - fileHandler = null; - } - - try - { - try - { - logfile.getParentFile().mkdirs(); - } - catch (Exception e) - { - e.printStackTrace(); - } - fileHandler = new FileHandler(logfile.getCanonicalPath(), true); - fileHandler.setLevel(Level.ALL); - fileHandler.setFormatter(new LogFileFormatter()); - - l.addHandler(fileHandler); - } - catch (Exception e) - { - e.printStackTrace(); - } - - return l; - } - - /** - * Reset the loggers and flush and close the fileHandlers to be able to use them next time without problems - */ - public void cleanup() - { - fileHandler.flush(); - fileHandler.close(); - Logger l = Logger.getLogger("NoCheat"); - l.removeHandler(fileHandler); - fileHandler = null; - } - - /** - * Get the cache of the specified world, or the default cache, if no cache exists for that world. - * - * @param worldname - * @return - */ - public ConfigurationCacheStore getConfigurationCacheForWorld(String worldname) - { - - ConfigurationCacheStore cache = worldnameToConfigCacheMap.get(worldname); - - if (cache != null) - { - return cache; - } - else - { - // Enter a reference to the cache under the new name - // to be faster in looking it up later - cache = worldnameToConfigCacheMap.get(null); - worldnameToConfigCacheMap.put(worldname, cache); - - return cache; - } - } -} |