diff --git a/Core/src/org/sleuthkit/autopsy/ingest/Installer.java b/Core/src/org/sleuthkit/autopsy/ingest/Installer.java index c128c35c652e088030e953ffafcd344bf4eedf5f..d0faa07165f2906201f4c95beaeb2340808c39f4 100644 --- a/Core/src/org/sleuthkit/autopsy/ingest/Installer.java +++ b/Core/src/org/sleuthkit/autopsy/ingest/Installer.java @@ -24,9 +24,13 @@ import java.io.InputStream; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.Map; import java.util.Properties; +import java.util.stream.Collectors; +import org.apache.commons.io.FileUtils; import org.openide.modules.ModuleInstall; import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.autopsy.coreutils.ModuleSettings; import org.sleuthkit.autopsy.coreutils.PlatformUtil; /** @@ -71,23 +75,33 @@ private void upgradeSettings() { File settingsFolder = new File(IngestJobSettings.getBaseSettingsPath()); File legacySettingsFolder = new File(LEGACY_INGEST_SETTINGS_PATH); if (legacySettingsFolder.exists() && !settingsFolder.exists()) { - for (File moduleSettings : legacySettingsFolder.listFiles()) { - if (moduleSettings.isDirectory()) { + for (File moduleSettingsFolder : legacySettingsFolder.listFiles()) { + if (moduleSettingsFolder.isDirectory()) { // get the settings name from the folder name (will be the same for any properties files). - String settingsName = moduleSettings.getName(); - - Path configPropsPath = Paths.get(PlatformUtil.getUserConfigDirectory(), settingsName + PROPERTIES_EXT); - Path profilePropsPath = Paths.get(LEGACY_INGEST_PROFILES_PATH, settingsName + PROPERTIES_EXT); - boolean isProfile = profilePropsPath.toFile().exists(); - - // load properties - Properties configProps = loadProps(configPropsPath.toFile()); - - if (isProfile) { - configProps.putAll(loadProps(profilePropsPath.toFile())); + String settingsName = moduleSettingsFolder.getName(); + + try { + Path configPropsPath = Paths.get(PlatformUtil.getUserConfigDirectory(), settingsName + PROPERTIES_EXT); + Path profilePropsPath = Paths.get(LEGACY_INGEST_PROFILES_PATH, settingsName + PROPERTIES_EXT); + boolean isProfile = profilePropsPath.toFile().exists(); + + // load properties + Properties configProps = loadProps(configPropsPath.toFile()); + + if (isProfile) { + configProps.putAll(loadProps(profilePropsPath.toFile())); + } + + Map<String, String> moduleSettingsToSave = configProps.entrySet().stream() + .filter(e -> e.getKey() != null) + .collect(Collectors.toMap(e -> e.getKey().toString(), e -> e.getValue() == null ? null : e.getValue().toString(), (v1, v2) -> v1)); + + ModuleSettings.setConfigSettings(IngestJobSettings.getModuleSettingsResource(settingsName), moduleSettingsToSave); + + FileUtils.copyDirectory(moduleSettingsFolder, IngestJobSettings.getSavedModuleSettingsFolder(settingsName).toFile()); + } catch (IOException ex) { + logger.log(Level.WARNING, "There was an error upgrading settings for: " + settingsName, ex); } - - } } }