package com.alttd.forms.properties; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.net.URI; import java.nio.file.Path; import java.util.Optional; import java.util.Properties; public class PropertiesLoader { private static final Logger logger = LoggerFactory.getLogger(PropertiesLoader.class); public static Optional loadProperties(String path, String fileName) { Properties prop = new Properties(); File file; if (path.isEmpty()) { Optional currentJarPath = JarPath.getCurrentJarDir(); if (currentJarPath.isEmpty()) { logger.error("Unable to find jar path to load properties (" + fileName + ")"); return Optional.empty(); } file = new File(currentJarPath.get(), fileName); } else { file = new File(path, fileName); } if (!file.exists()) { logger.warn("Tried to load properties file that doesnt exists (" + fileName + ")"); return Optional.empty(); } if (!file.canRead()) { logger.error("Unable to read properties file (" + fileName + ")"); return Optional.empty(); } if (!file.isFile()) { logger.error("Invalid properties file (" + fileName + ")"); return Optional.empty(); } try (FileInputStream input = new FileInputStream(file)) { prop.load(input); return Optional.of(prop); } catch (IOException ex) { logger.error("Failed to load properties due to an unexpected error", ex); } return Optional.empty(); } }