/** * */ package jframe.launcher.api; import java.io.File; import org.slf4j.LoggerFactory; import ch.qos.logback.classic.LoggerContext; import jframe.launcher.util.VarProperties; /** * @author dzh * @date Feb 15, 2016 11:57:40 AM * @since 1.0 */ public abstract class DefLauncher implements Launcher { protected Config _config = null; /* * (non-Javadoc) * * @see jframe.launcher.api.Launcher#load(java.lang.String) */ public Config load(String file) throws LauncherException { File configFile = new File(file); assert configFile.exists() : "Not found config.properties"; Config config = null; try { String os = System.getProperty("os.name").toLowerCase(); if (os.startsWith("windows") && System.getProperties().containsKey(Config.APP_HOME)) { System.setProperty(Config.APP_HOME, System.getProperty(Config.APP_HOME).replaceAll("\\\\", "/")); } VarProperties props = new VarProperties(System.getProperties()); props.load(file); config = new DefConfig(props); config.setConfig(Config.APP_HOME, props.getProperty(Config.APP_HOME)); config.setConfig(Config.LAUNCHER, props.getProperty(Config.LAUNCHER)); // TODO verify variables in config.properties _config = config; return config; } catch (Exception e) { throw new LauncherException(e.getMessage()); } } protected String config(String k, String defv) { return _config.getConfig(k, defv); } private static final void stopLog() { LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory(); loggerContext.stop(); } public void exit(int status) { _config = null; stopLog(); System.exit(status); } public String name() { return getClass().getName(); } }