diff --git a/Core/src/org/sleuthkit/autopsy/filequery/PageWorker.java b/Core/src/org/sleuthkit/autopsy/filequery/PageWorker.java index 08a68cf953..d50722275d 100644 --- a/Core/src/org/sleuthkit/autopsy/filequery/PageWorker.java +++ b/Core/src/org/sleuthkit/autopsy/filequery/PageWorker.java @@ -19,6 +19,7 @@ package org.sleuthkit.autopsy.filequery; import java.util.List; +import java.util.ArrayList; import java.util.logging.Level; import javax.swing.SwingWorker; import org.sleuthkit.autopsy.casemodule.Case; @@ -40,6 +41,7 @@ final class PageWorker extends SwingWorker { private final int pageSize; private final FileSearchData.FileType resultType; private final EamDb centralRepo; + private final List results = new ArrayList<>(); /** * Construct a new PageWorker. @@ -75,16 +77,24 @@ final class PageWorker extends SwingWorker { try { // Run the search - List results = FileSearch.getFilesInGroup(searchfilters, + results.addAll(FileSearch.getFilesInGroup(searchfilters, groupingAttribute, groupSort, fileSortMethod, groupName, startingEntry, pageSize, - Case.getCurrentCase().getSleuthkitCase(), centralRepo); - int currentPage = startingEntry / pageSize; //integer division should round down to get page number correctly - DiscoveryEvents.getDiscoveryEventBus().post(new DiscoveryEvents.PageRetrievedEvent(resultType, currentPage, results)); + Case.getCurrentCase().getSleuthkitCase(), centralRepo)); } catch (FileSearchException ex) { logger.log(Level.SEVERE, "Error running file search test", ex); + cancel(true); } return null; } + + @Override + protected void done() { + if (!isCancelled()) { + int currentPage = startingEntry / pageSize; //integer division should round down to get page number correctly + DiscoveryEvents.getDiscoveryEventBus().post(new DiscoveryEvents.PageRetrievedEvent(resultType, currentPage, results)); + } + } + } diff --git a/Core/src/org/sleuthkit/autopsy/filequery/SearchWorker.java b/Core/src/org/sleuthkit/autopsy/filequery/SearchWorker.java index 8d62c073e4..3d53e1f31b 100644 --- a/Core/src/org/sleuthkit/autopsy/filequery/SearchWorker.java +++ b/Core/src/org/sleuthkit/autopsy/filequery/SearchWorker.java @@ -37,7 +37,7 @@ final class SearchWorker extends SwingWorker { private final FileSorter.SortingMethod fileSort; private final FileGroup.GroupSortingAlgorithm groupSortAlgorithm; private final EamDb centralRepoDb; - private boolean searchCompleted = false; + private final LinkedHashMap results = new LinkedHashMap<>(); /** * Create a SwingWorker which performs a search @@ -60,23 +60,25 @@ final class SearchWorker extends SwingWorker { protected Void doInBackground() throws Exception { try { // Run the search - LinkedHashMap results = FileSearch.getGroupSizes(filters, + results.putAll(FileSearch.getGroupSizes(filters, groupingAttr, groupSortAlgorithm, fileSort, - Case.getCurrentCase().getSleuthkitCase(), centralRepoDb); - DiscoveryEvents.getDiscoveryEventBus().post(new DiscoveryEvents.SearchCompleteEvent(results, filters, groupingAttr, groupSortAlgorithm, fileSort)); - searchCompleted = true; + Case.getCurrentCase().getSleuthkitCase(), centralRepoDb)); } catch (FileSearchException ex) { logger.log(Level.SEVERE, "Error running file search test", ex); + cancel(true); } return null; } @Override protected void done() { - if (!searchCompleted) { + if (isCancelled()) { DiscoveryEvents.getDiscoveryEventBus().post(new DiscoveryEvents.SearchCancelledEvent()); } + else { + DiscoveryEvents.getDiscoveryEventBus().post(new DiscoveryEvents.SearchCompleteEvent(results, filters, groupingAttr, groupSortAlgorithm, fileSort)); + } } }