package models; import com.google.common.base.Charsets; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.yaml.snakeyaml.Yaml; import java.io.File; import java.io.FileNotFoundException; import java.net.URI; import java.net.URISyntaxException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.Collections; import java.util.List; import java.util.Map; public class ConfigReader { final private static Logger log = LoggerFactory.getLogger(ConfigReader.class); final private static ConfigReader reader = new ConfigReader(); Map<String, Object> yaml = null; private ConfigReader() { try { final File SettingsFile = getSettingsFile(); yaml = (Map<String, Object>) new Yaml().load(com.google.common.io.Files.newReader(SettingsFile, Charsets.UTF_8)); } catch (final FileNotFoundException | URISyntaxException e) { log.warn("config file is not exist.", e); throw new RuntimeException(); } } private static File getSettingsFile() throws FileNotFoundException,URISyntaxException { final String userFilePath = "conf/capybara.yaml"; if (Files.exists(Paths.get(userFilePath))) { return new File(userFilePath); } final URI defaultPath = Capybara.class.getClassLoader().getResource("capybara.yaml").toURI(); if (Files.exists(Paths.get(defaultPath))) { return new File(defaultPath); } throw new FileNotFoundException(); } public static ConfigReader getInstance() { return reader; } public int getPort() { return (int) yaml.get("port"); } public String getBasicIcon() { return (String) yaml.get("icon.basic"); } public String getHappyIcon() { return (String) yaml.get("icon.happy"); } public String getAngryIcon() { return (String) yaml.get("icon.angry"); } public String getSadIcon() { return (String) yaml.get("icon.sad"); } public List<String> getOtherIcon() { return (List) yaml.get("icon.other"); } public String getOneOthericon() { final List<String> otherIcon = getOtherIcon(); Collections.shuffle(otherIcon); return otherIcon.get(0); } public String getDatabaseURI() { return (String) yaml.get("database.uri"); } public String getDatabaseId() { return (String) yaml.get("database.id"); } public String getDatabasePassword() { return (String) yaml.get("database.password"); } public String getKvsURI() { return (String) yaml.get("kvs.uri"); } public String getKvsName() { return (String) yaml.get("kvs.name"); } public String getSlackTeam() { return (String) yaml.get("slack.team"); } public String getSlackUserName() { return (String) yaml.get("slack.username"); } public String getSlackPassword() { return (String) yaml.get("slack.password"); } public String getSlackRoom() { return (String) yaml.get("slack.room"); } public String getSlackApiToken() { return (String) yaml.get("slack.api.token"); } public String getGoogleMapApiKey() { return (String) yaml.get("google.map.api.key"); } public String getGoogleMapLanguage() { return (String) yaml.get("google.map.language"); } public String getGoogleMapSensor() { return (String) yaml.get("google.map.sensor"); } public String getGoogleMapScale() { return (String) yaml.get("google.map.scale"); } public String getGoogleMapZoom() { return (String) yaml.get("google.map.zoom"); } public String getGoogleMapSizeLength() { return (String) yaml.get("google.map.size.length"); } public String getGoogleMapSizeHeight() { return (String) yaml.get("google.map.size.height"); } }