package nagini.config; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.List; import java.util.Properties; import nagini.utils.NaginiFileUtils; public class NaginiConfig { private static final String NAGINI_PROPERTIES_FILE = "nagini.properties"; public static final String HOST_LIST_FILE = "host.list"; public NaginiServerConfig server; public NaginiClientConfig client; public NaginiConfig() { server = new NaginiServerConfig(); client = new NaginiClientConfig(); } public NaginiConfig(String configPath) throws IOException { this(); loadConfig(configPath); } public void loadConfig(String configPath) throws IOException { // load nagini.properties String propFilePath = configPath + File.separator + NAGINI_PROPERTIES_FILE; File propFile = new File(propFilePath); if(!propFile.exists() || propFile.isDirectory()) { throw new RuntimeException("Config: invalid property file " + propFilePath); } Properties props = new Properties(); InputStream input = new BufferedInputStream(new FileInputStream(propFilePath)); props.load(input); // load host.list String hostFilePath = configPath + File.separator + HOST_LIST_FILE; List<String> hostList = NaginiFileUtils.read(hostFilePath); // load config from the above config files server.loadConfig(props, hostList); client.loadConfig(props); System.out.println("Config: loaded config from " + configPath); } }