Make IngestJobSettings a public class

This commit is contained in:
Richard Cordovano 2018-03-13 18:57:23 -04:00
parent 2a61c68633
commit 44e58f327e
4 changed files with 91 additions and 38 deletions

View File

@ -339,7 +339,7 @@ final class DataSourceIngestJob {
* @return True or false. * @return True or false.
*/ */
FilesSet getFileIngestFilter() { FilesSet getFileIngestFilter() {
return this.settings.getFileIngestFilter(); return this.settings.getFileFilter();
} }
/** /**

View File

@ -47,7 +47,7 @@ import org.sleuthkit.autopsy.modules.interestingitems.FilesSetsManager;
/** /**
* The settings for an ingest job. * The settings for an ingest job.
*/ */
public class IngestJobSettings { public final class IngestJobSettings {
private static final String ENABLED_MODULES_PROPERTY = "Enabled_Ingest_Modules"; //NON-NLS private static final String ENABLED_MODULES_PROPERTY = "Enabled_Ingest_Modules"; //NON-NLS
private static final String DISABLED_MODULES_PROPERTY = "Disabled_Ingest_Modules"; //NON-NLS private static final String DISABLED_MODULES_PROPERTY = "Disabled_Ingest_Modules"; //NON-NLS
@ -58,10 +58,10 @@ public class IngestJobSettings {
private static final CharSequence PYTHON_CLASS_PROXY_PREFIX = "org.python.proxies.".subSequence(0, "org.python.proxies.".length() - 1); //NON-NLS private static final CharSequence PYTHON_CLASS_PROXY_PREFIX = "org.python.proxies.".subSequence(0, "org.python.proxies.".length() - 1); //NON-NLS
private static final Logger logger = Logger.getLogger(IngestJobSettings.class.getName()); private static final Logger logger = Logger.getLogger(IngestJobSettings.class.getName());
private final IngestType ingestType; private final IngestType ingestType;
private final List<IngestModuleTemplate> moduleTemplates; private final List<IngestModuleTemplate> moduleTemplates = new ArrayList<>();
private final List<String> warnings; private final List<String> warnings = new ArrayList<>();
private String executionContext; private String executionContext;
private FilesSet fileIngestFilter; private FilesSet fileFilter;
private String moduleSettingsFolderPath; private String moduleSettingsFolderPath;
/** /**
@ -72,7 +72,7 @@ public class IngestJobSettings {
* the Run Ingest Modules dialog, and auto ingest. Different execution * the Run Ingest Modules dialog, and auto ingest. Different execution
* contexts may have different ingest job settings. * contexts may have different ingest job settings.
* *
* @return The execution context identifier. * @param The execution context identifier.
* *
* @return The path to the module settings folder * @return The path to the module settings folder
*/ */
@ -111,8 +111,6 @@ public class IngestJobSettings {
*/ */
public IngestJobSettings(String executionContext, IngestType ingestType) { public IngestJobSettings(String executionContext, IngestType ingestType) {
this.ingestType = ingestType; this.ingestType = ingestType;
this.moduleTemplates = new ArrayList<>();
this.warnings = new ArrayList<>();
if (this.ingestType.equals(IngestType.ALL_MODULES)) { if (this.ingestType.equals(IngestType.ALL_MODULES)) {
this.executionContext = executionContext; this.executionContext = executionContext;
} else { } else {
@ -122,6 +120,48 @@ public class IngestJobSettings {
this.load(); this.load();
} }
/**
* Creates entirely new ingest job settings for a given context without
* saving them.
*
* @param executionContext The execution context identifier.
* @param ingestType Whether to run all ingest modules, data source
* level ingest modules only, or file level ingest
* modules only.
* @param moduleTemplates A collection of ingest module templates for
* creating fully configured ingest modules; each
* template combines an ingest module factory with
* ingest module job settings and an enabled flag.
*/
public IngestJobSettings(String executionContext, IngestType ingestType, Collection<IngestModuleTemplate> moduleTemplates) {
this.ingestType = ingestType;
if (this.ingestType.equals(IngestType.ALL_MODULES)) {
this.executionContext = executionContext;
} else {
this.executionContext = executionContext + "." + this.ingestType.name();
}
this.moduleTemplates.addAll(moduleTemplates);
}
/**
* Creates entirely new ingest job settings for a given context without
* saving them.
*
* @param executionContext The execution context identifier.
* @param ingestType Whether to run all ingest modules, data source
* level ingest modules only, or file level ingest
* modules only.
* @param moduleTemplates A collection of ingest module templates for
* creating fully configured ingest modules; each
* template combines an ingest module factory with
* ingest module job settings and an enabled flag.
* @param fileFilter A file filter in the form of a files set.
*/
public IngestJobSettings(String executionContext, IngestType ingestType, Collection<IngestModuleTemplate> moduleTemplates, FilesSet fileFilter) {
this(executionContext, ingestType, moduleTemplates);
this.setFileFilter(fileFilter);
}
/** /**
* Gets the path to the module settings folder for these ingest job * Gets the path to the module settings folder for these ingest job
* settings. * settings.
@ -136,6 +176,7 @@ public class IngestJobSettings {
* Saves these ingest job settings. * Saves these ingest job settings.
*/ */
public void save() { public void save() {
this.createSavedModuleSettingsFolder();
this.store(); this.store();
} }
@ -148,7 +189,7 @@ public class IngestJobSettings {
* *
* @param executionContext The new execution context. * @param executionContext The new execution context.
*/ */
void saveAs(String executionContext) { public void saveAs(String executionContext) {
this.executionContext = executionContext; this.executionContext = executionContext;
this.createSavedModuleSettingsFolder(); this.createSavedModuleSettingsFolder();
this.store(); this.store();
@ -175,29 +216,29 @@ public class IngestJobSettings {
* *
* @return The execution context identifier. * @return The execution context identifier.
*/ */
String getExecutionContext() { public String getExecutionContext() {
return this.executionContext; return this.executionContext;
} }
/** /**
* Gets the file ingest filter for the ingest job. * Gets the file filter for the ingest job.
* *
* @return FilesSet The filter as a files set. * @return FilesSet The filter as a files set.
*/ */
FilesSet getFileIngestFilter() { public FilesSet getFileFilter() {
if (fileIngestFilter == null) { if (fileFilter == null) {
fileIngestFilter = FilesSetsManager.getDefaultFilter(); fileFilter = FilesSetsManager.getDefaultFilter();
} }
return fileIngestFilter; return fileFilter;
} }
/** /**
* Sets the file ingest filter for the ingest job. * Sets the file filter for the ingest job.
* *
* @param fileIngestFilter The filter as a files set. * @param fileIngestFilter The filter as a files set.
*/ */
void setFileIngestFilter(FilesSet fileIngestFilter) { public void setFileFilter(FilesSet fileIngestFilter) {
this.fileIngestFilter = fileIngestFilter; this.fileFilter = fileIngestFilter;
} }
/** /**
@ -205,7 +246,7 @@ public class IngestJobSettings {
* *
* @return The list of ingest module templates. * @return The list of ingest module templates.
*/ */
List<IngestModuleTemplate> getIngestModuleTemplates() { public List<IngestModuleTemplate> getIngestModuleTemplates() {
return Collections.unmodifiableList(this.moduleTemplates); return Collections.unmodifiableList(this.moduleTemplates);
} }
@ -214,7 +255,7 @@ public class IngestJobSettings {
* *
* @param moduleTemplates The ingest module templates. * @param moduleTemplates The ingest module templates.
*/ */
void setIngestModuleTemplates(List<IngestModuleTemplate> moduleTemplates) { public void setIngestModuleTemplates(List<IngestModuleTemplate> moduleTemplates) {
this.moduleTemplates.clear(); this.moduleTemplates.clear();
this.moduleTemplates.addAll(moduleTemplates); this.moduleTemplates.addAll(moduleTemplates);
} }
@ -224,7 +265,7 @@ public class IngestJobSettings {
* *
* @return The list of enabled ingest module templates. * @return The list of enabled ingest module templates.
*/ */
List<IngestModuleTemplate> getEnabledIngestModuleTemplates() { public List<IngestModuleTemplate> getEnabledIngestModuleTemplates() {
List<IngestModuleTemplate> enabledModuleTemplates = new ArrayList<>(); List<IngestModuleTemplate> enabledModuleTemplates = new ArrayList<>();
for (IngestModuleTemplate moduleTemplate : this.moduleTemplates) { for (IngestModuleTemplate moduleTemplate : this.moduleTemplates) {
if (moduleTemplate.isEnabled()) { if (moduleTemplate.isEnabled()) {
@ -240,16 +281,17 @@ public class IngestJobSettings {
* @return True or false. * @return True or false.
* *
*/ */
boolean getProcessUnallocatedSpace() { public boolean getProcessUnallocatedSpace() {
boolean processUnallocated = true; boolean processUnallocated = true;
if (!Objects.isNull(this.fileIngestFilter)) { if (!Objects.isNull(this.fileFilter)) {
processUnallocated = (this.fileIngestFilter.ingoresUnallocatedSpace() == false); processUnallocated = (this.fileFilter.ingoresUnallocatedSpace() == false);
} }
return processUnallocated; return processUnallocated;
} }
/** /**
* Creates the module folder for these ingest job settings. * Creates the module folder for these ingest job settings, if it does not
* already exist.
*/ */
private void createSavedModuleSettingsFolder() { private void createSavedModuleSettingsFolder() {
try { try {
@ -359,10 +401,10 @@ public class IngestJobSettings {
for (FilesSet fSet : FilesSetsManager.getStandardFileIngestFilters()) { for (FilesSet fSet : FilesSetsManager.getStandardFileIngestFilters()) {
fileIngestFilters.put(fSet.getName(), fSet); fileIngestFilters.put(fSet.getName(), fSet);
} }
this.fileIngestFilter = fileIngestFilters.get(ModuleSettings.getConfigSetting(this.executionContext, IngestJobSettings.LAST_FILE_INGEST_FILTER_PROPERTY)); this.fileFilter = fileIngestFilters.get(ModuleSettings.getConfigSetting(this.executionContext, IngestJobSettings.LAST_FILE_INGEST_FILTER_PROPERTY));
} catch (FilesSetsManager.FilesSetsManagerException ex) { } catch (FilesSetsManager.FilesSetsManagerException ex) {
this.fileIngestFilter = FilesSetsManager.getDefaultFilter(); this.fileFilter = FilesSetsManager.getDefaultFilter();
logger.log(Level.SEVERE, "Failed to get file ingest filter from .properties file, default filter being used", ex); //NON-NLS logger.log(Level.SEVERE, "Failed to get file filter from .properties file, default filter being used", ex); //NON-NLS
} }
} }
@ -513,7 +555,7 @@ public class IngestJobSettings {
/** /**
* Save the last used File Ingest Filter setting for this context. * Save the last used File Ingest Filter setting for this context.
*/ */
ModuleSettings.setConfigSetting(this.executionContext, LAST_FILE_INGEST_FILTER_PROPERTY, fileIngestFilter.getName()); ModuleSettings.setConfigSetting(this.executionContext, LAST_FILE_INGEST_FILTER_PROPERTY, fileFilter.getName());
} }
/** /**
@ -542,7 +584,18 @@ public class IngestJobSettings {
* comma-separated values. * comma-separated values.
*/ */
private static String makeCsvList(Collection<String> collection) { private static String makeCsvList(Collection<String> collection) {
return collection.stream().collect(Collectors.joining(",")); if (collection == null || collection.isEmpty()) {
return "";
}
ArrayList<String> list = new ArrayList<>();
list.addAll(collection);
StringBuilder csvList = new StringBuilder();
for (int i = 0; i < list.size() - 1; ++i) {
csvList.append(list.get(i)).append(", ");
}
csvList.append(list.get(list.size() - 1));
return csvList.toString();
} }
/** /**

View File

@ -84,7 +84,7 @@ public final class IngestJobSettingsPanel extends javax.swing.JPanel {
} }
initComponents(); initComponents();
customizeComponents(); customizeComponents();
fileIngestFilterComboBox.setSelectedItem(settings.getFileIngestFilter().getName()); fileIngestFilterComboBox.setSelectedItem(settings.getFileFilter().getName());
} }
/** /**
@ -110,7 +110,7 @@ public final class IngestJobSettingsPanel extends javax.swing.JPanel {
} }
initComponents(); initComponents();
customizeComponents(); customizeComponents();
fileIngestFilterComboBox.setSelectedItem(settings.getFileIngestFilter().getName()); fileIngestFilterComboBox.setSelectedItem(settings.getFileFilter().getName());
} }
/** /**
@ -426,19 +426,19 @@ public final class IngestJobSettingsPanel extends javax.swing.JPanel {
for (FilesSet filter : newFilterList) { //getting one of the recently created filters for (FilesSet filter : newFilterList) { //getting one of the recently created filters
if (!oldFilterList.contains(filter.getName())) { if (!oldFilterList.contains(filter.getName())) {
//set newly created filter to selected filter //set newly created filter to selected filter
settings.setFileIngestFilter(filter); settings.setFileFilter(filter);
break; break;
} }
} }
fileIngestFilterComboBox.setModel(new DefaultComboBoxModel<>(getComboBoxContents())); fileIngestFilterComboBox.setModel(new DefaultComboBoxModel<>(getComboBoxContents()));
//set the selected filter after the comboBox Contents were updated to include it //set the selected filter after the comboBox Contents were updated to include it
fileIngestFilterComboBox.setSelectedItem(settings.getFileIngestFilter().getName()); fileIngestFilterComboBox.setSelectedItem(settings.getFileFilter().getName());
dialog.close(); dialog.close();
} }
); );
dialog.display(fileIngestFilterPanel); dialog.display(fileIngestFilterPanel);
//return to saved selection in case they cancel out of filter creation //return to saved selection in case they cancel out of filter creation
fileIngestFilterComboBox.setSelectedItem(settings.getFileIngestFilter().getName()); fileIngestFilterComboBox.setSelectedItem(settings.getFileFilter().getName());
} else if (evt.getActionCommand().equals("comboBoxChanged")) { } else if (evt.getActionCommand().equals("comboBoxChanged")) {
try { try {
Map<String, FilesSet> fileIngestFilters = FilesSetsManager.getInstance() Map<String, FilesSet> fileIngestFilters = FilesSetsManager.getInstance()
@ -446,10 +446,10 @@ public final class IngestJobSettingsPanel extends javax.swing.JPanel {
for (FilesSet fSet : FilesSetsManager.getStandardFileIngestFilters()) { for (FilesSet fSet : FilesSetsManager.getStandardFileIngestFilters()) {
fileIngestFilters.put(fSet.getName(), fSet); fileIngestFilters.put(fSet.getName(), fSet);
} }
settings.setFileIngestFilter(fileIngestFilters settings.setFileFilter(fileIngestFilters
.get(fileIngestFilterComboBox.getSelectedItem().toString())); .get(fileIngestFilterComboBox.getSelectedItem().toString()));
} catch (FilesSetsManager.FilesSetsManagerException ex) { } catch (FilesSetsManager.FilesSetsManagerException ex) {
settings.setFileIngestFilter(FilesSetsManager.getDefaultFilter()); settings.setFileFilter(FilesSetsManager.getDefaultFilter());
logger.log(Level.SEVERE, "Failed to get file ingest filter from combobox selection, default filter being used", ex); //NON-NLS logger.log(Level.SEVERE, "Failed to get file ingest filter from combobox selection, default filter being used", ex); //NON-NLS
} }
} }

View File

@ -222,7 +222,7 @@ class ProfilePanel extends IngestModuleGlobalSettingsPanel {
} else if (!profile.getName().equals(getProfileName())) { } else if (!profile.getName().equals(getProfileName())) {
IngestProfile.renameProfile(profile.getName(), getProfileName()); IngestProfile.renameProfile(profile.getName(), getProfileName());
} }
profile = new IngestProfile(getProfileName(), profileDescArea.getText(), ingestSettingsPanel.getSettings().getFileIngestFilter().getName()); profile = new IngestProfile(getProfileName(), profileDescArea.getText(), ingestSettingsPanel.getSettings().getFileFilter().getName());
IngestProfile.saveProfile(profile); IngestProfile.saveProfile(profile);
ingestSettingsPanel.getSettings().saveAs(getProfileName()); ingestSettingsPanel.getSettings().saveAs(getProfileName());
} }