From b7439abfaae378fb6c993dbd57ab06fc3541d9c1 Mon Sep 17 00:00:00 2001 From: millmanorama Date: Thu, 16 Feb 2017 17:13:56 +0100 Subject: [PATCH] fix highlighting of accounts in ad-hoc searches and when they have spaces or - in them --- .../autopsy/keywordsearch/AccountsText.java | 5 ++++ .../keywordsearch/ExtractedContentPanel.java | 30 +++---------------- .../keywordsearch/HighlightedText.java | 15 +++++----- .../autopsy/keywordsearch/RegexQuery.java | 2 ++ 4 files changed, 18 insertions(+), 34 deletions(-) diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AccountsText.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AccountsText.java index 6332a841e2..9d1a950e1e 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AccountsText.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AccountsText.java @@ -66,6 +66,7 @@ class AccountsText implements IndexedText { private static final BlackboardAttribute.Type TSK_KEYWORD_SEARCH_DOCUMENT_ID = new BlackboardAttribute.Type(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_KEYWORD_SEARCH_DOCUMENT_ID); private static final BlackboardAttribute.Type TSK_KEYWORD_HIT_DOCUMENT_IDS = new BlackboardAttribute.Type(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_KEYWORD_HIT_DOCUMENT_IDS); private static final BlackboardAttribute.Type TSK_CARD_NUMBER = new BlackboardAttribute.Type(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_CARD_NUMBER); + private static final BlackboardAttribute.Type TSK_KEYWORD = new BlackboardAttribute.Type(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_KEYWORD); private static final String FIELD = Server.Schema.CONTENT_STR.toString(); @@ -233,6 +234,10 @@ class AccountsText implements IndexedText { } accountNumbers.add(artifact.getAttribute(TSK_CARD_NUMBER).getValueString()); + final BlackboardAttribute keywordAttribute = artifact.getAttribute(TSK_KEYWORD); + if (keywordAttribute != null) { + accountNumbers.add(keywordAttribute.getValueString()); + } final BlackboardAttribute docIDs = artifact.getAttribute(TSK_KEYWORD_HIT_DOCUMENT_IDS); List rawDocIDs = new ArrayList<>(); if (docIDs != null) { diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractedContentPanel.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractedContentPanel.java index 443c25aa5e..a923872535 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractedContentPanel.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractedContentPanel.java @@ -590,19 +590,9 @@ class ExtractedContentPanel extends javax.swing.JPanel { enableNextPageControl(false); enablePrevPageControl(false); } else { - if (source.hasNextPage()) { - enableNextPageControl(true); - } else { - enableNextPageControl(false); - } - - if (source.hasPreviousPage()) { - enablePrevPageControl(true); - } else { - enablePrevPageControl(false); - } + enableNextPageControl(source.hasNextPage()); + enablePrevPageControl(source.hasPreviousPage()); } - } /** @@ -613,22 +603,10 @@ class ExtractedContentPanel extends javax.swing.JPanel { void updateSearchControls(IndexedText source) { //setup search controls if (source != null && source.isSearchable()) { - updateCurrentMatchDisplay(source.currentItem()); updateTotaMatcheslDisplay(source.getNumberHits()); - - if (source.hasNextItem() || source.hasNextPage()) { - enableNextMatchControl(true); - } else { - enableNextMatchControl(false); - } - - if (source.hasPreviousItem() || source.hasPreviousPage()) { - enablePrevMatchControl(true); - } else { - enablePrevMatchControl(false); - } - + enableNextMatchControl(source.hasNextItem() || source.hasNextPage()); + enablePrevMatchControl(source.hasPreviousItem() || source.hasPreviousPage()); } else { enableNextMatchControl(false); enablePrevMatchControl(false); diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/HighlightedText.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/HighlightedText.java index 4491e49d8d..57166f604b 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/HighlightedText.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/HighlightedText.java @@ -364,19 +364,18 @@ class HighlightedText implements IndexedText { @Override public String getText() { - String contentIdStr = Long.toString(this.objectId); - if (hasChunks) { - final String chunkID = Integer.toString(this.currentPage); - contentIdStr += "0".equals(chunkID) ? "" : "_" + chunkID; - } - final String filterQuery = Server.Schema.ID.toString() + ":" + KeywordSearchUtil.escapeLuceneQuery(contentIdStr); try { loadPageInfo(); //inits once - SolrQuery q = new SolrQuery(); q.setShowDebugInfo(DEBUG); //debug + String contentIdStr = Long.toString(this.objectId); + if (hasChunks) { + final String chunkID = Integer.toString(this.currentPage); + contentIdStr += "0".equals(chunkID) ? "" : "_" + chunkID; + } + final String filterQuery = Server.Schema.ID.toString() + ":" + KeywordSearchUtil.escapeLuceneQuery(contentIdStr); if (isLiteral) { final String highlightQuery = keywords.stream() .map(HighlightedText::constructEscapedSolrQuery) @@ -435,7 +434,7 @@ class HighlightedText implements IndexedText { return "
" + highlightedContent + "
"; //NON-NLS } catch (Exception ex) { - logger.log(Level.WARNING, "Error getting highlighted text for " + contentIdStr, ex); //NON-NLS + logger.log(Level.WARNING, "Error getting highlighted text for " + objectId, ex); //NON-NLS return NbBundle.getMessage(this.getClass(), "HighlightedMatchesSource.getMarkup.queryFailedMsg"); } } diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/RegexQuery.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/RegexQuery.java index b494e1fbcb..b34ece9ee5 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/RegexQuery.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/RegexQuery.java @@ -552,6 +552,8 @@ final class RegexQuery implements KeywordSearchQuery { attributeMap.computeIfAbsent(type, (BlackboardAttribute.Type t) -> { String value = matcher.group(groupName); if (attrType.equals(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_CARD_NUMBER)) { + attributeMap.put(new BlackboardAttribute.Type(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_KEYWORD), + new BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_KEYWORD, MODULE_NAME, value)); value = CharMatcher.anyOf(" -").removeFrom(value); } if (StringUtils.isNotBlank(value)) {