package resa.evaluation.topology.tomVLD;

import backtype.storm.Config;
import org.yaml.snakeyaml.Yaml;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Config manager provides methods to load a storm config from a file and access its content.
 */
public class StormConfigManager {
    /**
     * Read config from file path
     * @param path - the path to the file containing yaml config
     * @return the Config for this file
     * @throws FileNotFoundException
     */
    public static Config readConfig(String path) throws FileNotFoundException {
        Config config = new Config();
        Yaml yaml = new Yaml();
        InputStream inputStream = new FileInputStream(new File(path));
        HashMap<String, Object> map = (HashMap<String, Object>)yaml.load(inputStream);
        config.putAll(map);
        return config;
    }
    public static int getInt(Map<String, Object> config, String key) {
        Object obj = config.get(key);
        if (obj instanceof Integer)
            return (Integer)obj;
        return ((Long)config.get(key)).intValue();
    }
    public static String getString(Map<String, Object> config, String key) {
        return (String)config.get(key);
    }
    public static List<String> getListOfStrings(Map<String, Object> config, String key) {
        return (List<String>)config.get(key);
    }
}
