diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/AddImageAction.java b/Core/src/org/sleuthkit/autopsy/casemodule/AddImageAction.java index 8b4ef96f1d..cdfb561ae0 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/AddImageAction.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/AddImageAction.java @@ -109,7 +109,7 @@ public final class AddImageAction extends CallableSystemAction implements Presen Logger.noteAction(AddImageAction.class); final IngestConfigurator ingestConfig = Lookup.getDefault().lookup(IngestConfigurator.class); - if (ingestConfig.isIngestRunning()) { + if (null != ingestConfig && ingestConfig.isIngestRunning()) { final String msg = "Ingest is ongoing on another data source. Adding a new source now might slow down the current ingest.
Do you want to proceed and add a new data source now?"; if (JOptionPane.showConfirmDialog(null, msg, "Ingest in progress", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.NO_OPTION) { return; @@ -128,7 +128,6 @@ public final class AddImageAction extends CallableSystemAction implements Presen dialog.setVisible(true); dialog.toFront(); - // Do any cleanup that needs to happen (potentially: stopping the //add-image process, reverting an image) runCleanupTasks(); diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/GeneralIngestConfigurator.java b/Core/src/org/sleuthkit/autopsy/casemodule/GeneralIngestConfigurator.java index a3496c1765..bfb6088978 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/GeneralIngestConfigurator.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/GeneralIngestConfigurator.java @@ -22,6 +22,7 @@ package org.sleuthkit.autopsy.casemodule; import java.util.ArrayList; import java.util.List; import javax.swing.JPanel; +import org.openide.util.lookup.ServiceProvider; import org.sleuthkit.autopsy.coreutils.ModuleSettings; import org.sleuthkit.autopsy.ingest.IngestDialogPanel; import static org.sleuthkit.autopsy.ingest.IngestDialogPanel.DISABLED_MOD; @@ -30,23 +31,31 @@ import org.sleuthkit.autopsy.ingest.IngestManager; import org.sleuthkit.autopsy.ingest.IngestModuleAbstract; import org.sleuthkit.datamodel.Content; -/** - * - */ -public class GeneralIngestConfigurator implements IngestConfigurator { - +@ServiceProvider(service = IngestConfigurator.class) +public class GeneralIngestConfigurator implements IngestConfigurator { + private static final String DEFAULT_MODULE_CONTEXT = IngestManager.MODULE_PROPERTIES; private List contentToIngest; private IngestManager manager; private IngestDialogPanel ingestDialogPanel; private String moduleContext; - - public GeneralIngestConfigurator(String moduleContext) { - this.moduleContext = moduleContext; + + public GeneralIngestConfigurator() { + this.moduleContext = DEFAULT_MODULE_CONTEXT; ingestDialogPanel = new IngestDialogPanel(); manager = IngestManager.getDefault(); - reload(); + loadSettings(); } + @Override + public String getDefaultModuleContext() { + return DEFAULT_MODULE_CONTEXT; + } + + @Override + public void setModuleContext(String moduleContext) { + this.moduleContext = moduleContext; + } + @Override public JPanel getIngestConfigPanel() { return ingestDialogPanel; @@ -59,13 +68,13 @@ public class GeneralIngestConfigurator implements IngestConfigurator { @Override public void start() { - - //pick the modules + // Get the list of ingest modules selected by the user. List modulesToStart = ingestDialogPanel.getModulesToStart(); - //update ingest proc. unalloc space + // Get the user's selection of whether or not to process unallocated space. manager.setProcessUnallocSpace(ingestDialogPanel.processUnallocSpaceEnabled()); + // Start the ingest. if (!modulesToStart.isEmpty()) { manager.execute(modulesToStart, contentToIngest); } @@ -73,27 +82,34 @@ public class GeneralIngestConfigurator implements IngestConfigurator { @Override public void save() { - - // Save the current module + // Save the user's configuration of the currently selected module. IngestModuleAbstract currentModule = ingestDialogPanel.getCurrentIngestModule(); if (currentModule != null && currentModule.hasSimpleConfiguration()) { currentModule.saveSimpleConfiguration(); } - // create a list of disabled modules + // Create a list of the modules the user wants to be disabled. List disabledModules = IngestManager.getDefault().enumerateAllModules(); - disabledModules.removeAll(ingestDialogPanel.getModulesToStart()); - - // create a csv list + disabledModules.removeAll(ingestDialogPanel.getModulesToStart()); String disabledModulesCsv = moduleListToCsv(disabledModules); + // Save the user's general ingest configuration. ModuleSettings.setConfigSetting(moduleContext, DISABLED_MOD, disabledModulesCsv); String processUnalloc = Boolean.toString(ingestDialogPanel.processUnallocSpaceEnabled()); ModuleSettings.setConfigSetting(moduleContext, PARSE_UNALLOC, processUnalloc); } - - public static String moduleListToCsv(List lst) { + + @Override + public void reload() { + loadSettings(); + } + + @Override + public boolean isIngestRunning() { + return manager.isIngestRunning(); + } + private static String moduleListToCsv(List lst) { if (lst == null || lst.isEmpty()) { return ""; } @@ -109,7 +125,7 @@ public class GeneralIngestConfigurator implements IngestConfigurator { return sb.toString(); } - public static List csvToModuleList(String csv) { + private static List csvToModuleList(String csv) { List modules = new ArrayList<>(); if (csv == null || csv.isEmpty()) { @@ -130,24 +146,17 @@ public class GeneralIngestConfigurator implements IngestConfigurator { return modules; } - @Override - public void reload() { - + private void loadSettings() { // get the csv list of disabled modules String disabledModulesCsv = ModuleSettings.getConfigSetting(moduleContext, DISABLED_MOD); // create a list of modules from it List disabledModules = csvToModuleList(disabledModulesCsv); - // tell th ingestDialogPanel to unselect these modules + // tell the ingestDialogPanel to unselect these modules ingestDialogPanel.setDisabledModules(disabledModules); boolean processUnalloc = Boolean.parseBoolean(ModuleSettings.getConfigSetting(moduleContext, PARSE_UNALLOC)); - ingestDialogPanel.setProcessUnallocSpaceEnabled(processUnalloc); - } - - @Override - public boolean isIngestRunning() { - return manager.isIngestRunning(); + ingestDialogPanel.setProcessUnallocSpaceEnabled(processUnalloc); } } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/IngestConfigurator.java b/Core/src/org/sleuthkit/autopsy/casemodule/IngestConfigurator.java index cca3e2d064..9cfb31a98a 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/IngestConfigurator.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/IngestConfigurator.java @@ -26,6 +26,18 @@ import org.sleuthkit.datamodel.Content; * Lookup interface for ingest configuration dialog */ public interface IngestConfigurator { + /** + * Get the default context for running the ingest modules. + * @return The default context. + */ + String getDefaultModuleContext(); + + /** + * Set the context for running the ingest modules. + * @param moduleContext + */ + void setModuleContext(String moduleContext); + /** * get JPanel container with the configurator * @return diff --git a/Core/src/org/sleuthkit/autopsy/ingest/IngestDialog.java b/Core/src/org/sleuthkit/autopsy/ingest/IngestDialog.java index 970cd249dc..598d768e38 100644 --- a/Core/src/org/sleuthkit/autopsy/ingest/IngestDialog.java +++ b/Core/src/org/sleuthkit/autopsy/ingest/IngestDialog.java @@ -31,8 +31,8 @@ import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JPanel; +import org.openide.util.Lookup; import org.sleuthkit.datamodel.Content; -import org.sleuthkit.autopsy.casemodule.GeneralIngestConfigurator; import org.sleuthkit.autopsy.casemodule.IngestConfigurator; /** @@ -40,14 +40,13 @@ import org.sleuthkit.autopsy.casemodule.IngestConfigurator; */ public class IngestDialog extends JDialog { - private static final String MODULE_CONTEXT = "MainIngest"; private static final String TITLE = "Ingest Modules"; private static Dimension DIMENSIONS = new Dimension(500, 300); private IngestConfigurator ingestConfigurator; public IngestDialog(JFrame frame, String title, boolean modal) { super(frame, title, modal); - ingestConfigurator = new GeneralIngestConfigurator(MODULE_CONTEXT); + ingestConfigurator = Lookup.getDefault().lookup(IngestConfigurator.class); ingestConfigurator.reload(); }