19 package org.sleuthkit.autopsy.coreutils;
 
   22 import java.io.FileInputStream;
 
   23 import java.io.FileOutputStream;
 
   24 import java.io.IOException;
 
   25 import java.io.InputStream;
 
   26 import java.nio.file.Paths;
 
   27 import java.util.HashMap;
 
   29 import java.util.Properties;
 
   31 import java.util.logging.Level;
 
   72             File parent = 
new File(propPath.getParent());
 
   73             if (!parent.exists()) {
 
   77             Properties props = 
new Properties();
 
   79                 propPath.createNewFile();
 
   80                 try (FileOutputStream fos = 
new FileOutputStream(propPath)) {
 
   81                     props.store(fos, 
"Created module settings file");
 
   83             } 
catch (IOException ex) {
 
   84                 logger.log(Level.SEVERE, String.format(
"Failed to create module settings file at %s)", propPath), ex); 
 
   99     public static synchronized boolean configExists(String moduleName) {
 
  113     public static synchronized boolean settingExists(String moduleName, String settingName) {
 
  120             return (props.getProperty(settingName) != null);
 
  121         } 
catch (IOException ex) {
 
  122             logger.log(Level.SEVERE, String.format(
"Failed to get %s setting from module settings file at %s)", settingName, 
getSettingsFilePath(moduleName)), ex); 
 
  135         return Paths.get(MODULE_DIR_PATH, moduleName + SETTINGS_FILE_EXT).toString();
 
  149     public static synchronized String 
getConfigSetting(String moduleName, String settingName) {
 
  156             return props.getProperty(settingName);
 
  157         } 
catch (IOException ex) {
 
  158             logger.log(Level.SEVERE, String.format(
"Failed to get %s setting from module settings file at %s)", settingName, 
getSettingsFilePath(moduleName)), ex); 
 
  180             Set<String> keys = props.stringPropertyNames();
 
  181             Map<String, String> map = 
new HashMap<>();
 
  182             for (String s : keys) {
 
  183                 map.put(s, props.getProperty(s));
 
  186         } 
catch (IOException ex) {
 
  187             logger.log(Level.SEVERE, String.format(
"Failed to get settings from module settings file at %s)", 
getSettingsFilePath(moduleName)), ex); 
 
  201     public static synchronized void setConfigSettings(String moduleName, Map<String, String> settings) {
 
  208             for (Map.Entry<String, String> kvp : settings.entrySet()) {
 
  209                 props.setProperty(kvp.getKey(), kvp.getValue());
 
  213             try (FileOutputStream fos = 
new FileOutputStream(path)) {
 
  214                 props.store(fos, 
"Set settings (batch)"); 
 
  216         } 
catch (IOException ex) {
 
  217             logger.log(Level.SEVERE, String.format(
"Error writing to module settings file at %s)", 
getSettingsFilePath(moduleName)), ex); 
 
  230     public static synchronized void setConfigSetting(String moduleName, String settingName, String settingVal) {
 
  236             props.setProperty(settingName, settingVal);
 
  238             try (FileOutputStream fos = 
new FileOutputStream(path)) {
 
  239                 props.store(fos, 
"Set " + settingName); 
 
  241         } 
catch (IOException ex) {
 
  242             logger.log(Level.SEVERE, String.format(
"Error writing %s setting to module settings file at %s)", settingName, 
getSettingsFilePath(moduleName)), ex); 
 
  252     public static synchronized void removeProperty(String moduleName, String settingName) {
 
  256                 props.remove(settingName);
 
  258                 try (FileOutputStream fos = 
new FileOutputStream(path)) {
 
  259                     props.store(fos, 
"Removed " + settingName); 
 
  262         } 
catch (IOException ex) {
 
  263             logger.log(Level.SEVERE, String.format(
"Error removing %s setting from module settings file at %s)", settingName, 
getSettingsFilePath(moduleName)), ex); 
 
  276     private static synchronized Properties 
fetchProperties(String moduleName) 
throws IOException {
 
  279             props = 
new Properties();
 
  280             props.load(inputStream);
 
  293         File configFile = null;
 
static synchronized String getConfigSetting(String moduleName, String settingName)
 
static final String CURRENT_CASE_TYPE
 
static final String MODULE_DIR_PATH
 
static final Logger logger
 
static synchronized void removeProperty(String moduleName, String settingName)
 
static synchronized Properties fetchProperties(String moduleName)
 
static synchronized boolean makeConfigFile(String moduleName)
 
static synchronized boolean settingExists(String moduleName, String settingName)
 
static final String DEFAULT_CONTEXT
 
static synchronized void setConfigSetting(String moduleName, String settingName, String settingVal)
 
static String getSettingsFilePath(String moduleName)
 
static synchronized File getPropertyFile(String moduleName)
 
static synchronized void setConfigSettings(String moduleName, Map< String, String > settings)
 
static synchronized boolean configExists(String moduleName)
 
static final String MAIN_SETTINGS
 
synchronized static Logger getLogger(String name)
 
static synchronized Map< String, String > getConfigSettings(String moduleName)
 
static final String SETTINGS_FILE_EXT