/******************************************************************************* * gMix open source project - https://svs.informatik.uni-hamburg.de/gmix/ * Copyright (C) 2014 SVS * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. *******************************************************************************/ package staticContent.evaluation.simulator.conf.service; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.Properties; import org.apache.log4j.Level; import org.apache.log4j.Logger; public class UserConfigService { private static Logger logger = Logger.getLogger(UserConfigService.class); /** * Constants for file */ private final static String CONFIGFILENAME = "user.properties"; private final static String CONFIGPATH = "inputOutput/simulator/config"; private final static String CONFIGFILE = CONFIGPATH + "/" + CONFIGFILENAME; /** * Names of Options & Constants for default Values */ // Console Frame private final static String BROWSER_PATH = "BROWSER_PATH"; private final static String BROWSER_PATH_DEFAULT = "firefox-bin"; private final static String CONSOLEFRAME_XPOS = "CONSOLEFRAME_XPOS"; private final static Integer CONSOLEFRAME_XPOS_DEFAULT = 600; private final static String CONSOLEFRAME_YPOS = "CONSOLEFRAME_YPOS"; private final static Integer CONSOLEFRAME_YPOS_DEFAULT = 100; private final static String CONSOLEFRAME_WIDTH = "CONSOLEFRAME_WIDTH"; private final static Integer CONSOLEFRAME_WIDTH_DEFAULT = 700; private final static String CONSOLEFRAME_HEIGHT = "CONSOLEFRAME_HEIGHT"; private final static Integer CONSOLEFRAME_HEIGHT_DEFAULT = 750; // Help Frame private final static String HELPFRAME_XPOS = "HELPFRAME_XPOS"; private final static Integer HELPFRAME_XPOS_DEFAULT = 600; private final static String HELPFRAME_YPOS = "HELPFRAME_YPOS"; private final static Integer HELPFRAME_YPOS_DEFAULT = 100; private final static String HELPFRAME_WIDTH = "HELPFRAME_WIDTH"; private final static Integer HELPFRAME_WIDTH_DEFAULT = 700; private final static String HELPFRAME_HEIGHT = "HELPFRAME_HEIGHT"; private final static Integer HELPFRAME_HEIGHT_DEFAULT = 750; // Configuration Frame private final static String CONFTOOLFRAME_XPOS = "CONFTOOLFRAME_XPOS"; private final static Integer CONFTOOLFRAME_XPOS_DEFAULT = 100; private final static String CONFTOOLFRAME_YPOS = "CONFTOOLFRAME_YPOS"; private final static Integer CONFTOOLFRAME_YPOS_DEFAULT = 100; private final static String CONFTOOLFRAME_WIDTH = "CONFTOOLFRAME_WIDTH"; private final static Integer CONFTOOLFRAME_WIDTH_DEFAULT = 500; private final static String CONFTOOLFRAME_HEIGHT = "CONFTOOLFRAME_HEIGHT"; private final static Integer CONFTOOLFRAME_HEIGHT_DEFAULT = 750; // Main Gui private final static String MAINGUI_XPOS = "MAINGUI_XPOS"; private final static Integer MAINGUI_XPOS_DEFAULT = 0; private final static String MAINGUI_YPOS = "MAINGUI_YPOS"; private final static Integer MAINGUI_YPOS_DEFAULT = 0; private final static String MAINGUI_WIDTH = "MAINGUI_WIDTH"; private final static Integer MAINGUI_WIDTH_DEFAULT = 1024; private final static String MAINGUI_HEIGHT = "MAINGUI_HEIGHT"; private final static Integer MAINGUI_HEIGHT_DEFAULT = 768; private final static String MAINGUI_HSPLIT_DEVIDER_LOCATION = "MAINGUI_HSPLIT_DEVIDER_LOCATION"; private final static Integer MAINGUI_HSPLIT_DEVIDER_LOCATION_DEFAULT = 200; private final static String MAINGUI_CONSOLE_HEIGHT = "MAINGUI_CONSOLE_HEIGHT"; private final static Integer MAINGUI_CONSOLE_HEIGHT_DEFAULT = 650; // GUI Service private final static String GUISERVICE_SEPERATE_CONF_TOOL = "GUISERVICE_SEPERATE_CONF_TOOL"; private final static Boolean GUISERVICE_SEPERATE_CONF_TOOL_DEFAULT = false; private final static String GUISERVICE_SEPERATE_HELP_TOOL = "GUISERVICE_SEPERATE_HELP_TOOL"; private final static Boolean GUISERVICE_SEPERATE_HELP_TOOL_DEFAULT = false; private final static String GUISERVICE_SEPERATE_CONSOLE = "GUISERVICE_SEPERATE_CONSOLE"; private final static Boolean GUISERVICE_SEPERATE_CONSOLE_DEFAULT = false; private final static String GUISERVICE_TOGGLE_HOME_TAB = "GUISERVICE_TOGGLE_HOME_TAB"; private final static Boolean GUISERVICE_TOGGLE_HOME_TAB_DEFAULT = false; /** * Config */ private static Properties configuration = null; private static String OUTPUTFOLDERPATH = "./inputOutput/simulator/output"; // this will be parsed always at program start! static { File f = new File (OUTPUTFOLDERPATH); if (!f.exists() && !f.mkdir()){ throw new RuntimeException("Failed to create folder "+OUTPUTFOLDERPATH+"!. Please check user rights!"); } new UserConfigService(); } private UserConfigService() { configuration = new Properties(); try { File folder = new File(UserConfigService.CONFIGPATH); File conf = new File(UserConfigService.CONFIGFILE); if (!folder.exists()) { folder.mkdir(); } if (!conf.exists()) { conf.createNewFile(); } FileOutputStream oFile = new FileOutputStream(conf, true); oFile.close(); UserConfigService.configuration.load(new FileInputStream(UserConfigService.CONFIGFILE)); } catch (IOException e) { logger.log(Level.FATAL, "Initializing User Properties failed! Reason:" + e.toString()); // Without storable UserOptions the GUI should stop throw new RuntimeException("Initializing User Properties failed! Reason:" + e.toString()); } } public static String getBRWOSER_PATH(){ String result = getString(BROWSER_PATH); if (result != null) { return result; } else { logger.log(Level.DEBUG, "Using default value for Item " + GUISERVICE_TOGGLE_HOME_TAB); return BROWSER_PATH_DEFAULT; } } public static Boolean getGUISERVICE_TOGGLE_HOME_TAB() { Boolean result = getBool(GUISERVICE_TOGGLE_HOME_TAB); if (result != null) { return result; } else { logger.log(Level.DEBUG, "Using default value for Item " + GUISERVICE_TOGGLE_HOME_TAB); return GUISERVICE_TOGGLE_HOME_TAB_DEFAULT; } } public static void setGUISERVICE_TOGGLE_HOME_TAB(Boolean b) { setBool(GUISERVICE_TOGGLE_HOME_TAB, b); } public static Boolean getGUISERVICE_SEPERATE_CONSOLE() { Boolean result = getBool(GUISERVICE_SEPERATE_CONSOLE); if (result != null) { return result; } else { logger.log(Level.DEBUG, "Using default value for Item " + GUISERVICE_SEPERATE_CONSOLE); return GUISERVICE_SEPERATE_CONSOLE_DEFAULT; } } public static void setGUISERVICE_SEPERATE_CONSOLE(Boolean b) { setBool(GUISERVICE_SEPERATE_CONSOLE, b); } public static Boolean getGUISERVICE_SEPERATE_HELP_TOOL() { Boolean result = getBool(GUISERVICE_SEPERATE_HELP_TOOL); if (result != null) { return result; } else { logger.log(Level.DEBUG, "Using default value for Item " + GUISERVICE_SEPERATE_HELP_TOOL); return GUISERVICE_SEPERATE_HELP_TOOL_DEFAULT; } } public static void setGUISERVICE_SEPERATE_HELP_TOOL(Boolean b) { setBool(GUISERVICE_SEPERATE_HELP_TOOL, b); } public static Boolean getGUISERVICE_SEPERATE_CONF_TOOL() { Boolean result = getBool(GUISERVICE_SEPERATE_CONF_TOOL); if (result != null) { return result; } else { logger.log(Level.DEBUG, "Using default value for Item " + GUISERVICE_SEPERATE_CONF_TOOL); return GUISERVICE_SEPERATE_CONF_TOOL_DEFAULT; } } public static void setGUISERVICE_SEPERATE_CONF_TOOL(Boolean b) { setBool(GUISERVICE_SEPERATE_CONF_TOOL, b); } public static Integer getMAINGUI_CONSOLE_HEIGHT() { Integer result = getInteger(MAINGUI_CONSOLE_HEIGHT); if (result != null) { return result; } else { logger.log(Level.DEBUG, "Using default value for Item " + MAINGUI_CONSOLE_HEIGHT); return MAINGUI_CONSOLE_HEIGHT_DEFAULT; } } public static void setMAINGUI_CONSOLE_HEIGHT(Integer value) { setInteger(MAINGUI_CONSOLE_HEIGHT, value); } public static Integer getMAINGUI_HSPLIT_DEVIDER_LOCATION() { Integer result = getInteger(MAINGUI_HSPLIT_DEVIDER_LOCATION); if (result != null) { return result; } else { logger.log(Level.DEBUG, "Using default value for Item " + MAINGUI_HSPLIT_DEVIDER_LOCATION); return MAINGUI_HSPLIT_DEVIDER_LOCATION_DEFAULT; } } public static void setMAINGUI_HSPLIT_DEVIDER_LOCATION(Integer value) { setInteger(MAINGUI_HSPLIT_DEVIDER_LOCATION, value); } public static Integer getMAINGUI_HEIGHT() { Integer result = getInteger(MAINGUI_HEIGHT); if (result != null) { return result; } else { logger.log(Level.DEBUG, "Using default value for Item " + MAINGUI_HEIGHT); return MAINGUI_HEIGHT_DEFAULT; } } public static void setMAINGUI_HEIGHT(Integer value) { setInteger(MAINGUI_HEIGHT, value); } public static Integer getMAINGUI_WIDTH() { Integer result = getInteger(MAINGUI_WIDTH); if (result != null) { return result; } else { logger.log(Level.DEBUG, "Using default value for Item " + MAINGUI_WIDTH); return MAINGUI_WIDTH_DEFAULT; } } public static void setMAINGUI_WIDTH(Integer value) { setInteger(MAINGUI_WIDTH, value); } public static Integer getMAINGUI_YPOS() { Integer result = getInteger(MAINGUI_YPOS); if (result != null) { return result; } else { logger.log(Level.DEBUG, "Using default value for Item " + MAINGUI_YPOS); return MAINGUI_YPOS_DEFAULT; } } public static void setMAINGUI_YPOS(Integer value) { setInteger(MAINGUI_YPOS, value); } public static Integer getMAINGUI_XPOS() { Integer result = getInteger(MAINGUI_XPOS); if (result != null) { return result; } else { logger.log(Level.DEBUG, "Using default value for Item " + MAINGUI_XPOS); return MAINGUI_XPOS_DEFAULT; } } public static void setMAINGUI_XPOS(Integer value) { setInteger(MAINGUI_XPOS, value); } public static Integer getCONFTOOLFRAME_HEIGHT() { Integer result = getInteger(CONFTOOLFRAME_HEIGHT); if (result != null) { return result; } else { logger.log(Level.DEBUG, "Using default value for Item " + CONFTOOLFRAME_HEIGHT); return CONFTOOLFRAME_HEIGHT_DEFAULT; } } public static void setCONFTOOLFRAME_HEIGHT(Integer value) { setInteger(CONFTOOLFRAME_HEIGHT, value); } public static Integer getCONFTOOLFRAME_WIDTH() { Integer result = getInteger(CONFTOOLFRAME_WIDTH); if (result != null) { return result; } else { logger.log(Level.DEBUG, "Using default value for Item " + CONFTOOLFRAME_WIDTH); return CONFTOOLFRAME_WIDTH_DEFAULT; } } public static void setCONFTOOLFRAME_WIDTH(Integer value) { setInteger(CONFTOOLFRAME_WIDTH, value); } public static Integer getCONFTOOLFRAME_YPOS() { Integer result = getInteger(CONFTOOLFRAME_YPOS); if (result != null) { return result; } else { logger.log(Level.DEBUG, "Using default value for Item " + CONFTOOLFRAME_YPOS); return CONFTOOLFRAME_YPOS_DEFAULT; } } public static void setCONFTOOLFRAME_YPOS(Integer value) { setInteger(CONFTOOLFRAME_YPOS, value); } public static Integer getCONFTOOLFRAME_XPOS() { Integer result = getInteger(CONFTOOLFRAME_XPOS); if (result != null) { return result; } else { logger.log(Level.DEBUG, "Using default value for Item " + CONFTOOLFRAME_XPOS); return CONFTOOLFRAME_XPOS_DEFAULT; } } public static void setCONFTOOLFRAME_XPOS(Integer value) { setInteger(CONFTOOLFRAME_XPOS, value); } public static Integer getHELPFRAME_HEIGHT() { Integer result = getInteger(HELPFRAME_HEIGHT); if (result != null) { return result; } else { logger.log(Level.DEBUG, "Using default value for Item " + HELPFRAME_HEIGHT); return HELPFRAME_HEIGHT_DEFAULT; } } public static void setHELPFRAME_HEIGHT(Integer value) { setInteger(HELPFRAME_HEIGHT, value); } public static Integer getHELPFRAME_WIDTH() { Integer result = getInteger(HELPFRAME_WIDTH); if (result != null) { return result; } else { logger.log(Level.DEBUG, "Using default value for Item " + HELPFRAME_WIDTH); return HELPFRAME_WIDTH_DEFAULT; } } public static void setHELPFRAME_WIDTH(Integer value) { setInteger(HELPFRAME_WIDTH, value); } public static Integer getHELPFRAME_YPOS() { Integer result = getInteger(HELPFRAME_YPOS); if (result != null) { return result; } else { logger.log(Level.DEBUG, "Using default value for Item " + HELPFRAME_YPOS); return HELPFRAME_YPOS_DEFAULT; } } public static void setHELPFRAME_YPOS(Integer value) { setInteger(HELPFRAME_YPOS, value); } public static Integer getHELPFRAME_XPOS() { Integer result = getInteger(HELPFRAME_XPOS); if (result != null) { return result; } else { logger.log(Level.DEBUG, "Using default value for Item " + HELPFRAME_XPOS); return HELPFRAME_XPOS_DEFAULT; } } public static void setHELPFRAME_XPOS(Integer value) { setInteger(HELPFRAME_XPOS, value); } public static Integer getCONSOLEFRAME_HEIGHT() { Integer result = getInteger(CONSOLEFRAME_HEIGHT); if (result != null) { return result; } else { logger.log(Level.DEBUG, "Using default value for Item " + CONSOLEFRAME_HEIGHT); return CONSOLEFRAME_HEIGHT_DEFAULT; } } public static void setCONSOLEFRAME_HEIGHT(Integer value) { setInteger(CONSOLEFRAME_HEIGHT, value); } public static Integer getCONSOLEFRAME_WIDTH() { Integer result = getInteger(CONSOLEFRAME_WIDTH); if (result != null) { return result; } else { logger.log(Level.DEBUG, "Using default value for Item " + CONSOLEFRAME_WIDTH); return CONSOLEFRAME_WIDTH_DEFAULT; } } public static void setCONSOLEFRAME_WIDTH(Integer value) { setInteger(CONSOLEFRAME_WIDTH, value); } public static Integer getCONSOLEFRAME_YPOS() { Integer result = getInteger(CONSOLEFRAME_YPOS); if (result != null) { return result; } else { logger.log(Level.DEBUG, "Using default value for Item " + CONSOLEFRAME_YPOS); return CONSOLEFRAME_YPOS_DEFAULT; } } public static void setCONSOLEFRAME_YPOS(Integer value) { setInteger(CONSOLEFRAME_YPOS, value); } public static Integer getCONSOLEFRAME_XPOS() { Integer result = getInteger(CONSOLEFRAME_XPOS); if (result != null) { return result; } else { logger.log(Level.DEBUG, "Using default value for Item " + CONSOLEFRAME_XPOS); return CONSOLEFRAME_XPOS_DEFAULT; } } public static void setCONSOLEFRAME_XPOS(Integer value) { setInteger(CONSOLEFRAME_XPOS, value); } /** * private helper methods */ private static String getString(String item) { String readValue = configuration.getProperty(item); if (readValue == null) { logger.log(Level.DEBUG, "Item in property not found: " + item); return null; } if (readValue.equals("true") || readValue.equals("false")) { return String.valueOf(readValue); } else { logger.log(Level.DEBUG, "Item: " + item + " could not be parsed to a boolean"); return null; } } private static Boolean getBool(String item) { String readValue = configuration.getProperty(item); if (readValue == null) { logger.log(Level.DEBUG, "Item in property not found: " + item); return null; } if (readValue.equals("true") || readValue.equals("false")) { return Boolean.parseBoolean(readValue); } else { logger.log(Level.DEBUG, "Item: " + item + " could not be parsed to a boolean"); return null; } } private static Integer getInteger(String item) { Integer returnvalue = null; String readValue = configuration.getProperty(item); if (readValue == null) { logger.log(Level.DEBUG, "Item in property not found: " + item); return null; } try { returnvalue = Integer.parseInt(readValue); } catch (Exception e) { logger.log(Level.DEBUG, "Item: " + item + " could not be parsed to an integer"); return null; } return returnvalue; } private static void setBool(String key, boolean value) { try { UserConfigService.configuration.setProperty(key, new Boolean(value).toString()); UserConfigService.configuration.store(new FileOutputStream(UserConfigService.CONFIGFILE), null); } catch (IOException e) { logger.log(Level.DEBUG, "Could not save item " + key + " to userConfig file!"); } } private static void setInteger(String key, Integer value) { try { UserConfigService.configuration.setProperty(key, new Integer(value).toString()); UserConfigService.configuration.store(new FileOutputStream(UserConfigService.CONFIGFILE), null); } catch (IOException e) { logger.log(Level.DEBUG, "Could not save item " + key + " to userConfig file!"); } } /** * Not needed right now.. */ // private String getString(String item) { // String readValue = configuration.getProperty(item); // if (readValue == null) { // logger.log(Level.DEBUG, "Item in property not found: "+item); // return null; // } // return readValue; // } }