package jk_5.nailed.server.config; import com.typesafe.config.Config; import com.typesafe.config.ConfigFactory; import org.apache.commons.compress.utils.IOUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.nio.channels.Channels; import java.nio.channels.FileChannel; import java.nio.channels.ReadableByteChannel; public class Settings { private static Config config; private static final Logger logger = LogManager.getLogger(); public static Config load(){ File file = new File("settings.conf"); logger.info("Loading config"); if(!file.exists() || file.length() == 0){ ReadableByteChannel in = null; FileChannel out = null; try{ in = Channels.newChannel(Settings.class.getResourceAsStream("/reference.conf")); out = new FileOutputStream(file).getChannel(); out.transferFrom(in, 0, Long.MAX_VALUE); }catch(IOException e){ logger.error("Error while creating default config file", e); }finally{ IOUtils.closeQuietly(in); IOUtils.closeQuietly(out); } } Config defaults = ConfigFactory.defaultReference().withOnlyPath("nailed"); Config conf = ConfigFactory.parseFile(file).withFallback(defaults); try{ config = conf.getConfig("nailed"); }catch(Throwable e){ logger.warn("Failed to load nailed config, using defaults.", e); config = defaults.getConfig("nailed"); } return config; } }