From 5aff0e07f8a51440025f6edfea448bb2374ffd55 Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Wed, 24 Sep 2014 15:37:43 -0400 Subject: [PATCH 1/4] Make new keyword lists enabled by default in all contexts --- .../KeywordSearchIngestModule.java | 2 +- .../KeywordSearchJobSettings.java | 49 ++++++++++++++----- .../KeywordSearchJobSettingsPanel.java | 7 ++- 3 files changed, 43 insertions(+), 15 deletions(-) diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestModule.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestModule.java index 0b3dce9e1d..a2b74a2946 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestModule.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestModule.java @@ -170,7 +170,7 @@ public final class KeywordSearchIngestModule implements FileIngestModule { List keywordLists = XmlKeywordSearchList.getCurrent().getListsL(); boolean hasKeywordsForSearch = false; for (KeywordList keywordList : keywordLists) { - if (settings.isKeywordListEnabled(keywordList.getName()) && !keywordList.getKeywords().isEmpty()) { + if (settings.keywordListIsEnabled(keywordList.getName()) && !keywordList.getKeywords().isEmpty()) { hasKeywordsForSearch = true; break; } diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchJobSettings.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchJobSettings.java index 1ce3a6b657..63aacf6efa 100755 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchJobSettings.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchJobSettings.java @@ -27,26 +27,51 @@ import org.sleuthkit.autopsy.ingest.IngestModuleIngestJobSettings; * Settings for a keyword search file ingest module instance. */ final class KeywordSearchJobSettings implements IngestModuleIngestJobSettings { - + private static final long serialVersionUID = 1L; - private final HashSet namesOfEnabledKeywordLists = new HashSet<>(); + private HashSet namesOfEnabledKeywordLists; + private HashSet namesOfDisabledKeywordLists; // Added in version 1.1 KeywordSearchJobSettings(List namesOfEnabledKeywordLists) { - this.namesOfEnabledKeywordLists.addAll(namesOfEnabledKeywordLists); + this(namesOfEnabledKeywordLists, new ArrayList()); + } + + KeywordSearchJobSettings(List namesOfEnabledKeywordLists, List namesOfDisabledKeywordLists) { + this.namesOfEnabledKeywordLists = new HashSet<>(namesOfEnabledKeywordLists); + this.namesOfDisabledKeywordLists = new HashSet<>(namesOfDisabledKeywordLists); } @Override public long getVersionNumber() { return serialVersionUID; - } - - boolean isKeywordListEnabled(String keywordListName) { + } + + boolean keywordListIsEnabled(String keywordListName) { + this.upgradeFromOlderVersions(); return namesOfEnabledKeywordLists.contains(keywordListName); } - - List getNamesOfEnabledKeyWordLists() { - return new ArrayList<>(namesOfEnabledKeywordLists); - } -} - + List getNamesOfEnabledKeyWordLists() { + this.upgradeFromOlderVersions(); + return new ArrayList<>(namesOfEnabledKeywordLists); + } + + List getNamesOfDisabledKeyWordLists() { + this.upgradeFromOlderVersions(); + return new ArrayList<>(namesOfDisabledKeywordLists); + } + + /** + * Initialize fields set to null when an instance of a previous, but still + * compatible, version of this class is de-serialized. + */ + private void upgradeFromOlderVersions() { + if (null == this.namesOfEnabledKeywordLists) { + this.namesOfEnabledKeywordLists = new HashSet<>(); + } + if (null == this.namesOfDisabledKeywordLists) { + this.namesOfDisabledKeywordLists = new HashSet<>(); + } + } + +} diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchJobSettingsPanel.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchJobSettingsPanel.java index 99b27ac0a2..b0292cb604 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchJobSettingsPanel.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchJobSettingsPanel.java @@ -55,7 +55,7 @@ public final class KeywordSearchJobSettingsPanel extends IngestModuleIngestJobSe for (KeywordList list : keywordLists) { String listName = list.getName(); keywordListNames.add(listName); - keywordListStates.put(listName, settings.isKeywordListEnabled(listName)); + keywordListStates.put(listName, settings.keywordListIsEnabled(listName)); } } @@ -160,12 +160,15 @@ public final class KeywordSearchJobSettingsPanel extends IngestModuleIngestJobSe @Override public IngestModuleIngestJobSettings getSettings() { List enabledListNames = new ArrayList<>(); + List disabledListNames = new ArrayList<>(); for (String listName : keywordListNames) { if (keywordListStates.get(listName)) { enabledListNames.add(listName); + } else { + disabledListNames.add(listName); } } - return new KeywordSearchJobSettings(enabledListNames); + return new KeywordSearchJobSettings(enabledListNames, disabledListNames); } void reset(KeywordSearchJobSettings newSettings) { From c42e7bcf970785d1c724d9f1a85ea7038e68970e Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Wed, 24 Sep 2014 15:40:53 -0400 Subject: [PATCH 2/4] Remove unneeded code in KeywordSearchJobSettings --- .../autopsy/keywordsearch/KeywordSearchJobSettings.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchJobSettings.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchJobSettings.java index 63aacf6efa..efa542fff4 100755 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchJobSettings.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchJobSettings.java @@ -66,9 +66,6 @@ final class KeywordSearchJobSettings implements IngestModuleIngestJobSettings { * compatible, version of this class is de-serialized. */ private void upgradeFromOlderVersions() { - if (null == this.namesOfEnabledKeywordLists) { - this.namesOfEnabledKeywordLists = new HashSet<>(); - } if (null == this.namesOfDisabledKeywordLists) { this.namesOfDisabledKeywordLists = new HashSet<>(); } From b35cb3229015a3ec76f265b153b79b5440528878 Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Wed, 24 Sep 2014 15:52:46 -0400 Subject: [PATCH 3/4] Add javadocs Comments to KeywordSearchJobSettings.java --- .../KeywordSearchJobSettings.java | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchJobSettings.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchJobSettings.java index efa542fff4..e2e7546184 100755 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchJobSettings.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchJobSettings.java @@ -24,7 +24,7 @@ import java.util.List; import org.sleuthkit.autopsy.ingest.IngestModuleIngestJobSettings; /** - * Settings for a keyword search file ingest module instance. + * Ingest job settings for the keywords search module. */ final class KeywordSearchJobSettings implements IngestModuleIngestJobSettings { @@ -32,30 +32,61 @@ final class KeywordSearchJobSettings implements IngestModuleIngestJobSettings { private HashSet namesOfEnabledKeywordLists; private HashSet namesOfDisabledKeywordLists; // Added in version 1.1 + /** + * Constructs ingest job settings for the keywords search module. + * + * @param namesOfEnabledKeywordLists A list of enabled keywords lists. + */ KeywordSearchJobSettings(List namesOfEnabledKeywordLists) { this(namesOfEnabledKeywordLists, new ArrayList()); } + /** + * Constructs ingest job settings for the keywords search module. + * + * @param namesOfEnabledKeywordLists A list of enabled keywords lists. + * @param namesOfDisabledKeywordLists A list of disabled keywords lists. + */ KeywordSearchJobSettings(List namesOfEnabledKeywordLists, List namesOfDisabledKeywordLists) { this.namesOfEnabledKeywordLists = new HashSet<>(namesOfEnabledKeywordLists); this.namesOfDisabledKeywordLists = new HashSet<>(namesOfDisabledKeywordLists); } + /** + * @inheritDoc + */ @Override public long getVersionNumber() { return serialVersionUID; } + /** + * Checks whether or not a keywords list is enabled. If there is no setting + * for the requested list, it is deemed to be enabled. + * + * @param hashSetName The name of the keywords list to check. + * @return True if the keywords list is enabled, false otherwise. + */ boolean keywordListIsEnabled(String keywordListName) { this.upgradeFromOlderVersions(); return namesOfEnabledKeywordLists.contains(keywordListName); } + /** + * Get the names of all explicitly enabled keywords lists. + * + * @return The list of names. + */ List getNamesOfEnabledKeyWordLists() { this.upgradeFromOlderVersions(); return new ArrayList<>(namesOfEnabledKeywordLists); } + /** + * Get the names of all explicitly disabled keywords lists. + * + * @return The list of names. + */ List getNamesOfDisabledKeyWordLists() { this.upgradeFromOlderVersions(); return new ArrayList<>(namesOfDisabledKeywordLists); From de76c4946e2cea7ee349944c4bda961397c4dd0f Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Wed, 24 Sep 2014 15:57:15 -0400 Subject: [PATCH 4/4] Improve deserialization of older versions of hash lookup and keyword search settings --- .../autopsy/modules/hashdatabase/HashLookupModuleSettings.java | 2 ++ .../autopsy/keywordsearch/KeywordSearchJobSettings.java | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/HashLookupModuleSettings.java b/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/HashLookupModuleSettings.java index 05a1a77e8e..f642b56c0f 100755 --- a/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/HashLookupModuleSettings.java +++ b/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/HashLookupModuleSettings.java @@ -77,6 +77,7 @@ final class HashLookupModuleSettings implements IngestModuleIngestJobSettings { */ @Override public long getVersionNumber() { + this.upgradeFromOlderVersions(); return HashLookupModuleSettings.serialVersionUID; } @@ -87,6 +88,7 @@ final class HashLookupModuleSettings implements IngestModuleIngestJobSettings { * @return True if hashes are to be calculated, false otherwise. */ boolean shouldCalculateHashes() { + this.upgradeFromOlderVersions(); return this.shouldCalculateHashes; } diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchJobSettings.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchJobSettings.java index e2e7546184..fc2cdff534 100755 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchJobSettings.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchJobSettings.java @@ -57,6 +57,7 @@ final class KeywordSearchJobSettings implements IngestModuleIngestJobSettings { */ @Override public long getVersionNumber() { + this.upgradeFromOlderVersions(); return serialVersionUID; } @@ -64,7 +65,7 @@ final class KeywordSearchJobSettings implements IngestModuleIngestJobSettings { * Checks whether or not a keywords list is enabled. If there is no setting * for the requested list, it is deemed to be enabled. * - * @param hashSetName The name of the keywords list to check. + * @param keywordListName The name of the keywords list to check. * @return True if the keywords list is enabled, false otherwise. */ boolean keywordListIsEnabled(String keywordListName) {