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;
 
   71             File propPath = 
new File(getSettingsFilePath(moduleName));
 
   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) {
 
  100         return new File(getSettingsFilePath(moduleName)).exists();
 
  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); 
 
  134     static String getSettingsFilePath(String moduleName) {
 
  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());
 
  212             File path = 
new File(getSettingsFilePath(moduleName));
 
  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);
 
  237             File path = 
new File(getSettingsFilePath(moduleName));
 
  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);
 
  257                 File path = 
new File(getSettingsFilePath(moduleName));
 
  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 {
 
  278         try (InputStream inputStream = 
new FileInputStream(getSettingsFilePath(moduleName))) {
 
  279             props = 
new Properties();
 
  280             props.load(inputStream);
 
  293         File configFile = null;
 
  295             configFile = 
new File(getSettingsFilePath(moduleName));
 
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 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