From 14de7eda35ed9f1aba0edc69bf267e5571eb71fb Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Wed, 23 Sep 2020 17:55:30 -0400 Subject: [PATCH] 6865 changes to address feedback and help performance --- .../search/DomainSearchCacheLoader.java | 19 ++++++------------- .../discovery/search/SearchFiltering.java | 7 ++++--- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/discovery/search/DomainSearchCacheLoader.java b/Core/src/org/sleuthkit/autopsy/discovery/search/DomainSearchCacheLoader.java index 5388afc961..cd20b1ff00 100755 --- a/Core/src/org/sleuthkit/autopsy/discovery/search/DomainSearchCacheLoader.java +++ b/Core/src/org/sleuthkit/autopsy/discovery/search/DomainSearchCacheLoader.java @@ -57,30 +57,23 @@ class DomainSearchCacheLoader extends CacheLoader> load(SearchKey key) throws DiscoveryException, SQLException, TskCoreException { - List domainResults = getResultDomainsFromDatabase(key); - //manually add the attributes for filters which use alternate non filters and could be used by grouping or sorting - DiscoveryAttributes.FrequencyAttribute freqAttr = new DiscoveryAttributes.FrequencyAttribute(); - freqAttr.addAttributeToResults(domainResults, key.getSleuthkitCase(), key.getCentralRepository()); - // Apply secondary in memory filters - for (AbstractFilter filter : key.getFilters()) { - if (filter.useAlternateFilter()) { - domainResults = filter.applyAlternateFilter(domainResults, key.getSleuthkitCase(), key.getCentralRepository()); - } - } - // Grouping by CR Frequency, for example, will require further processing // in order to make the correct decision. The attribute types that require // more information implement their logic by overriding `addAttributeToResults`. List searchAttributes = new ArrayList<>(); searchAttributes.add(key.getGroupAttributeType()); searchAttributes.addAll(key.getFileSortingMethod().getRequiredAttributes()); - for (AttributeType attr : searchAttributes) { attr.addAttributeToResults(domainResults, key.getSleuthkitCase(), key.getCentralRepository()); } - + // Apply secondary in memory filters + for (AbstractFilter filter : key.getFilters()) { + if (filter.useAlternateFilter()) { + domainResults = filter.applyAlternateFilter(domainResults, key.getSleuthkitCase(), key.getCentralRepository()); + } + } // Sort the ResultDomains by the requested criteria. final SearchResults searchResults = new SearchResults( key.getGroupSortingType(), diff --git a/Core/src/org/sleuthkit/autopsy/discovery/search/SearchFiltering.java b/Core/src/org/sleuthkit/autopsy/discovery/search/SearchFiltering.java index 4f7e13b570..9505cfa5e2 100644 --- a/Core/src/org/sleuthkit/autopsy/discovery/search/SearchFiltering.java +++ b/Core/src/org/sleuthkit/autopsy/discovery/search/SearchFiltering.java @@ -116,9 +116,6 @@ public class SearchFiltering { resultList.add(new ResultFile(abstractFile)); } - //manually add the attributes for filters which use alternate non filters and could be used by grouping or sorting - DiscoveryAttributes.FrequencyAttribute freqAttr = new DiscoveryAttributes.FrequencyAttribute(); - freqAttr.addAttributeToResults(resultList, caseDb, centralRepoDb); // Now run any non-SQL filters. for (AbstractFilter filter : filters) { if (filter.useAlternateFilter()) { @@ -652,6 +649,10 @@ public class SearchFiltering { @Override public List applyAlternateFilter(List currentResults, SleuthkitCase caseDb, CentralRepository centralRepoDb) throws DiscoveryException { + // Set the frequency for each file + DiscoveryAttributes.FrequencyAttribute freqAttr = new DiscoveryAttributes.FrequencyAttribute(); + freqAttr.addAttributeToResults(currentResults, caseDb, centralRepoDb); + // If the frequency matches the filter, add the file to the results List frequencyResults = new ArrayList<>(); for (Result file : currentResults) {