From 9b41503fb85dad43075e447b3b2ad3caa9eaa652 Mon Sep 17 00:00:00 2001 From: "Samuel H. Kenyon" Date: Tue, 29 Apr 2014 16:21:04 -0400 Subject: [PATCH] re-enabled swingworker cancel handling in the blackboard writing loop --- .../keywordsearch/KeywordSearchResultFactory.java | 2 +- .../autopsy/keywordsearch/QueryResults.java | 12 +++++++----- .../autopsy/keywordsearch/SearchRunner.java | 1 - 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchResultFactory.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchResultFactory.java index aa7b179a75..5b4df2561a 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchResultFactory.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchResultFactory.java @@ -418,7 +418,7 @@ class KeywordSearchResultFactory extends ChildFactory { }); // Create blackboard artifacts - newArtifacts = hits.writeAllHitsToBlackBoard(query, listName, progress, false); // notifyInbox == false + newArtifacts = hits.writeAllHitsToBlackBoard(query, listName, progress, this, false); // notifyInbox == false } finally { finalizeWorker(); } diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/QueryResults.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/QueryResults.java index 845293dbb8..5524fd7eac 100755 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/QueryResults.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/QueryResults.java @@ -26,6 +26,7 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.logging.Level; +import javax.swing.SwingWorker; import org.netbeans.api.progress.ProgressHandle; import org.openide.util.NbBundle; import org.sleuthkit.autopsy.coreutils.EscapeUtil; @@ -105,7 +106,7 @@ class QueryResults { * @param notifyInbox flag indicating whether or not to call writeInboxMessage() for each hit * @return list of new artifacts */ - public Collection writeAllHitsToBlackBoard(KeywordSearchQuery query, String listName, ProgressHandle progress, boolean notifyInbox) { + public Collection writeAllHitsToBlackBoard(KeywordSearchQuery query, String listName, ProgressHandle progress, SwingWorker worker, boolean notifyInbox) { final Collection newArtifacts = new ArrayList<>(); progress.start(getKeywords().size()); @@ -113,10 +114,11 @@ class QueryResults { for (final Keyword hitTerm : getKeywords()) { progress.progress(hitTerm.toString(), ++processedFiles); - ///@todo we need a way to cancel this loop -// if (this.isCancelled()) { -// break; -// } + if (worker.isCancelled()) { + logger.log(Level.INFO, "Cancel detected, bailing before new keyword processed: {0}", hitTerm.getQuery()); //NON-NLS + break; + } + Map flattened = getUniqueFiles(hitTerm); for (AbstractFile hitFile : flattened.keySet()) { int chunkId = flattened.get(hitFile); diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/SearchRunner.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/SearchRunner.java index 0dc8b2989f..e46970e6bb 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/SearchRunner.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/SearchRunner.java @@ -461,7 +461,6 @@ public final class SearchRunner { // calculate new results by substracting results already obtained in this ingest // this creates a map of each keyword to the list of unique files that have that hit. - // @@@ NOTE THIS IS saving the keywords as Keyword, not String. use the K methods QueryResults newResults = filterResults(queryResult, isRegex); if (!newResults.getKeywords().isEmpty()) {