diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Accounts.java b/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Accounts.java index 223ddc7698..64c60e542d 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Accounts.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Accounts.java @@ -18,8 +18,6 @@ */ package org.sleuthkit.autopsy.datamodel.accounts; -import org.sleuthkit.autopsy.datamodel.AutopsyItemVisitor; -import org.sleuthkit.autopsy.datamodel.AutopsyVisitableItem; import com.google.common.collect.Range; import com.google.common.collect.RangeMap; import com.google.common.collect.TreeRangeMap; @@ -59,6 +57,8 @@ import org.openide.util.Utilities; import org.openide.util.lookup.Lookups; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.corecomponents.DataResultTopComponent; +import org.sleuthkit.autopsy.datamodel.AutopsyItemVisitor; +import org.sleuthkit.autopsy.datamodel.AutopsyVisitableItem; import org.sleuthkit.autopsy.datamodel.BlackboardArtifactNode; import org.sleuthkit.autopsy.datamodel.CreditCards; import org.sleuthkit.autopsy.datamodel.DataModelActionsFactory; @@ -168,6 +168,9 @@ final public class Accounts implements AutopsyVisitableItem { @Subscribe abstract void handleReviewStatusChange(ReviewStatusChangeEvent event); + @Subscribe + abstract void handleDataAdded(ModuleDataEvent event); + @Override protected void removeNotify() { super.removeNotify(); @@ -220,7 +223,7 @@ final public class Accounts implements AutopsyVisitableItem { ModuleDataEvent eventData = (ModuleDataEvent) evt.getOldValue(); if (null != eventData && eventData.getBlackboardArtifactType().getTypeID() == ARTIFACT_TYPE.TSK_ACCOUNT.getTypeID()) { - refreshKeys(); + reviewStatusBus.post(eventData); } } catch (IllegalStateException notUsed) { // Case is closed, do nothing. @@ -251,7 +254,13 @@ final public class Accounts implements AutopsyVisitableItem { @Subscribe @Override - public void handleReviewStatusChange(ReviewStatusChangeEvent event) { + void handleReviewStatusChange(ReviewStatusChangeEvent event) { + refreshKeys(); + } + + @Subscribe + @Override + void handleDataAdded(ModuleDataEvent event) { refreshKeys(); } @@ -373,10 +382,17 @@ final public class Accounts implements AutopsyVisitableItem { } } + @Subscribe @Override void handleReviewStatusChange(ReviewStatusChangeEvent event) { refreshKeys(); } + + @Subscribe + @Override + void handleDataAdded(ModuleDataEvent event) { + refreshKeys(); + } } private DefaultAccountTypeNode(String accountTypeName) { @@ -417,10 +433,12 @@ final public class Accounts implements AutopsyVisitableItem { */ final private class ViewModeFactory extends ObservingChildren { - @Subscribe @Override - public void handleReviewStatusChange(ReviewStatusChangeEvent event) { - refreshKeys(); + void handleReviewStatusChange(ReviewStatusChangeEvent event) { + } + + @Override + void handleDataAdded(ModuleDataEvent event) { } /** @@ -476,7 +494,13 @@ final public class Accounts implements AutopsyVisitableItem { @Subscribe @Override - public void handleReviewStatusChange(ReviewStatusChangeEvent event) { + void handleReviewStatusChange(ReviewStatusChangeEvent event) { + refreshKeys(); + } + + @Subscribe + @Override + void handleDataAdded(ModuleDataEvent event) { refreshKeys(); } @@ -589,7 +613,12 @@ final public class Accounts implements AutopsyVisitableItem { } @Subscribe - public void handleReviewStatusChange(ReviewStatusChangeEvent event) { + void handleReviewStatusChange(ReviewStatusChangeEvent event) { + updateDisplayName(); + } + + @Subscribe + void handleDataAdded(ModuleDataEvent event) { updateDisplayName(); } } @@ -607,7 +636,13 @@ final public class Accounts implements AutopsyVisitableItem { @Subscribe @Override - public void handleReviewStatusChange(ReviewStatusChangeEvent event) { + void handleReviewStatusChange(ReviewStatusChangeEvent event) { + refreshKeys(); + } + + @Subscribe + @Override + void handleDataAdded(ModuleDataEvent event) { refreshKeys(); } @@ -703,7 +738,12 @@ final public class Accounts implements AutopsyVisitableItem { } @Subscribe - public void handleReviewStatusChange(ReviewStatusChangeEvent event) { + void handleReviewStatusChange(ReviewStatusChangeEvent event) { + updateDisplayName(); + } + + @Subscribe + void handleDataAdded(ModuleDataEvent event) { updateDisplayName(); } } @@ -940,15 +980,18 @@ final public class Accounts implements AutopsyVisitableItem { @Subscribe @Override - public void handleReviewStatusChange(ReviewStatusChangeEvent event) { + void handleReviewStatusChange(ReviewStatusChangeEvent event) { refreshKeys(); - //make sure to refresh the nodes for artifacts that changed statuses. + //make sure to refresh the nodes for artifacts that changed statuses. event.artifacts.stream().map(BlackboardArtifact::getArtifactID).forEach(this::refreshKey); } - /** - * - */ + @Subscribe + @Override + void handleDataAdded(ModuleDataEvent event) { + refreshKeys(); + } + @Override protected List createKeys() { List list = new ArrayList<>(); @@ -990,7 +1033,6 @@ final public class Accounts implements AutopsyVisitableItem { } } private final BinResult bin; -// private final CreditCardNumberFactory accountFactory; private BINNode(BinResult bin) { super(Children.LEAF); @@ -1003,7 +1045,12 @@ final public class Accounts implements AutopsyVisitableItem { } @Subscribe - public void handleReviewStatusChange(ReviewStatusChangeEvent event) { + void handleReviewStatusChange(ReviewStatusChangeEvent event) { + updateDisplayName(); + } + + @Subscribe + void handleDataAdded(ModuleDataEvent event) { updateDisplayName(); } @@ -1367,7 +1414,7 @@ final public class Accounts implements AutopsyVisitableItem { } } - class ReviewStatusChangeEvent { + private class ReviewStatusChangeEvent { Collection artifacts; BlackboardArtifact.ReviewStatus newReviewStatus; diff --git a/Core/src/org/sleuthkit/autopsy/report/TableReportGenerator.java b/Core/src/org/sleuthkit/autopsy/report/TableReportGenerator.java index c6e0f8d0b1..f4afd1bd1e 100755 --- a/Core/src/org/sleuthkit/autopsy/report/TableReportGenerator.java +++ b/Core/src/org/sleuthkit/autopsy/report/TableReportGenerator.java @@ -1495,6 +1495,9 @@ class TableReportGenerator { } else if (artifactTypeId == BlackboardArtifact.ARTIFACT_TYPE.TSK_ACCOUNT.getTypeID()) { columns.add(new StatusColumn()); attributeTypeSet.remove(new Type(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_ACCOUNT_TYPE)); + attributeTypeSet.remove(new Type(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_ASSOCIATED_ARTIFACT)); + attributeTypeSet.remove(new Type(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_SET_NAME)); + attributeTypeSet.remove(new Type(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_KEYWORD_SEARCH_DOCUMENT_ID)); } else { // This is the case that it is a custom type. The reason an else is // necessary is to make sure that the source file column is added diff --git a/CoreLibs/ivy.xml b/CoreLibs/ivy.xml index 098bca5b26..26859599e2 100644 --- a/CoreLibs/ivy.xml +++ b/CoreLibs/ivy.xml @@ -16,7 +16,7 @@ - + diff --git a/CoreLibs/nbproject/project.properties b/CoreLibs/nbproject/project.properties index a3306356a1..3f1452877a 100644 --- a/CoreLibs/nbproject/project.properties +++ b/CoreLibs/nbproject/project.properties @@ -22,7 +22,7 @@ file.reference.dom4j-1.6.1.jar=release/modules/ext/dom4j-1.6.1.jar file.reference.geronimo-jms_1.1_spec-1.0.jar=release/modules/ext/geronimo-jms_1.1_spec-1.0.jar file.reference.gson-1.4.jar=release/modules/ext/gson-1.4.jar file.reference.gstreamer-java-1.5.jar=release/modules/ext/gstreamer-java-1.5.jar -file.reference.guava-18.0.jar=release/modules/ext/guava-18.0.jar +file.reference.guava-19.0.jar=release/modules/ext/guava-19.0.jar file.reference.imageio-bmp-3.2.jar=release/modules/ext/imageio-bmp-3.2.jar file.reference.imageio-core-3.2.jar=release/modules/ext/imageio-core-3.2.jar file.reference.imageio-icns-3.2.jar=release/modules/ext/imageio-icns-3.2.jar @@ -75,7 +75,7 @@ javac.compilerargs=-Xlint -Xlint:-serial javadoc.reference.commons-csv-1.4.jar=release/modules/ext/commons-csv-1.4-javadoc.jar javadoc.reference.compiler-0.9.1.jar=release/modules/ext/compiler-0.9.1-javadoc.jar javadoc.reference.controlsfx-8.40.11.jar=release/modules/ext/controlsfx-8.40.11-javadoc.jar -javadoc.reference.guava-18.0.jar=release/modules/ext/guava-18.0-javadoc.jar +javadoc.reference.guava-19.0.jar=release/modules/ext/guava-19.0-javadoc.jar javadoc.reference.jfxtras-common-8.0-r4.jar=release/modules/ext/jfxtras-common-8.0-r4-javadoc.jar javadoc.reference.jfxtras-controls-8.0-r4.jar=release/modules/ext/jfxtras-controls-8.0-r4-javadoc.jar javadoc.reference.jfxtras-fxml-8.0-r4.jar=release/modules/ext/jfxtras-fxml-8.0-r4-javadoc.jar @@ -83,7 +83,7 @@ nbm.needs.restart=true source.reference.commons-csv-1.4.jar=release/modules/ext/commons-csv-1.4-sources.jar source.reference.compiler-0.9.1.jar=release/modules/ext/compiler-0.9.1-sources.jar source.reference.controlsfx-8.40.11.jar=release/modules/ext/controlsfx-8.40.11-sources.jar -source.reference.guava-18.0.jar=release/modules/ext/guava-18.0-sources.jar +source.reference.guava-19.0.jar=release/modules/ext/guava-19.0-sources.jar source.reference.jfxtras-common-8.0-r4.jar=release/modules/ext/jfxtras-common-8.0-r4-sources.jar source.reference.jfxtras-controls-8.0-r4.jar=release/modules/ext/jfxtras-controls-8.0-r4-sources.jar source.reference.jfxtras-fxml-8.0-r4.jar=release/modules/ext/jfxtras-fxml-8.0-r4-sources.jar diff --git a/CoreLibs/nbproject/project.xml b/CoreLibs/nbproject/project.xml index 25b062dcd9..358637d979 100644 --- a/CoreLibs/nbproject/project.xml +++ b/CoreLibs/nbproject/project.xml @@ -743,10 +743,6 @@ ext/mail-1.4.3.jar release/modules/ext/mail-1.4.3.jar - - ext/guava-18.0.jar - release/modules/ext/guava-18.0.jar - ext/imageio-tga-3.2.jar release/modules/ext/imageio-tga-3.2.jar @@ -851,6 +847,10 @@ ext/slf4j-simple-1.6.1.jar release/modules/ext/slf4j-simple-1.6.1.jar + + ext/guava-19.0.jar + release/modules/ext/guava-19.0.jar + ext/imageio-bmp-3.2.jar release/modules/ext/imageio-bmp-3.2.jar diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/QueryResults.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/QueryResults.java index 8c48b51f41..d3e9bfb912 100755 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/QueryResults.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/QueryResults.java @@ -250,11 +250,12 @@ class QueryResults { //list attr = written.getAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_SET_NAME.getTypeID()); - detailsSb.append(""); //NON-NLS - detailsSb.append(NbBundle.getMessage(this.getClass(), "KeywordSearchIngestModule.listThLbl")); - detailsSb.append("").append(attr.getValueString()).append(""); //NON-NLS - detailsSb.append(""); //NON-NLS - + if (attr != null) { + detailsSb.append(""); //NON-NLS + detailsSb.append(NbBundle.getMessage(this.getClass(), "KeywordSearchIngestModule.listThLbl")); + detailsSb.append("").append(attr.getValueString()).append(""); //NON-NLS + detailsSb.append(""); //NON-NLS + } //regex if (!keywordSearchQuery.isLiteral()) { attr = written.getAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_KEYWORD_REGEXP.getTypeID()); diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TermsComponentQuery.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TermsComponentQuery.java index 9bd8bd9e17..37ef675ff8 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TermsComponentQuery.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TermsComponentQuery.java @@ -209,7 +209,11 @@ final class TermsComponentQuery implements KeywordSearchQuery { //if we couldn't parse the CCN abort this artifact final BlackboardAttribute ccnAttribute = parsedTrackAttributeMap.get(new BlackboardAttribute.Type(ATTRIBUTE_TYPE.TSK_CARD_NUMBER)); if (ccnAttribute == null || StringUtils.isBlank(ccnAttribute.getValueString())) { - LOGGER.log(Level.SEVERE, "Failed to parse CCN from hit: " + hit.getSnippet()); + if (hit.isArtifactHit()) { + LOGGER.log(Level.SEVERE, String.format("Failed to parse credit card account number for artifact keyword hit: term = %s, snippet = '%s', artifact id = %d", termHit, hit.getSnippet(), hit.getArtifact().getArtifactID())); + } else { + LOGGER.log(Level.SEVERE, String.format("Failed to parse credit card account number for content keyword hit: term = %s, snippet = '%s', object id = %d", termHit, hit.getSnippet(), hit.getContent().getId())); + } return null; }