From 8aad95663227c4dcdb4bd88f29611d67045e1914 Mon Sep 17 00:00:00 2001 From: Richard Cordovano <rcordovano@basistech.com> Date: Fri, 22 Oct 2021 11:52:31 -0400 Subject: [PATCH] 7673 Add ingest job IDs to artifact posts --- .../org/sleuthkit/datamodel/Blackboard.java | 146 +++++++++--------- 1 file changed, 69 insertions(+), 77 deletions(-) diff --git a/bindings/java/src/org/sleuthkit/datamodel/Blackboard.java b/bindings/java/src/org/sleuthkit/datamodel/Blackboard.java index 115bd1d24..838bf20b8 100755 --- a/bindings/java/src/org/sleuthkit/datamodel/Blackboard.java +++ b/bindings/java/src/org/sleuthkit/datamodel/Blackboard.java @@ -62,8 +62,8 @@ public final class Blackboard { private final Map<String, BlackboardArtifact.Type> typeNameToArtifactTypeMap = new ConcurrentHashMap<>(); private final Map<String, BlackboardAttribute.Type> typeNameToAttributeTypeMap = new ConcurrentHashMap<>(); - static final int MIN_USER_DEFINED_TYPE_ID = 10000; - + static final int MIN_USER_DEFINED_TYPE_ID = 10000; + private final SleuthkitCase caseDb; /** @@ -77,49 +77,47 @@ public final class Blackboard { } /** - * Posts an artifact (data artifact or analysis result) to the blackboard. - * The artifact should be complete (all attributes have been added) before - * it is posted. Posting the artifact triggers the creation of appropriate - * timeline events, if any, and broadcast of a notification that the - * artifact is ready for further analysis. + * Posts an artifact to the blackboard. The artifact should be complete (all + * attributes have been added) before it is posted. Posting the artifact + * triggers the creation of appropriate timeline events, if any, and + * broadcast of a notification that the artifact is ready for further + * analysis. * - * @param artifact The artifact (data artifact or analysis result). + * @param artifact The artifact. * @param moduleName The display name of the module posting the artifact. * * @throws BlackboardException The exception is thrown if there is an issue - * posting the artifact. - * RJCTODO: Deprecate + * posting the artifact. RJCTODO: Deprecate */ public void postArtifact(BlackboardArtifact artifact, String moduleName) throws BlackboardException { postArtifacts(Collections.singleton(artifact), moduleName, null); - } - + } + /** - * Posts a collection of artifacts (data artifacts and/or analysis results) - * to the blackboard. The artifacts should be complete (all attributes have - * been added) before they are posted. Posting the artifacts triggers the - * creation of appropriate timeline events, if any, and broadcast of a - * notification that the artifacts are ready for further analysis. + * Posts a collection of artifacts to the blackboard. The artifacts should + * be complete (all attributes have been added) before they are posted. + * Posting the artifacts triggers the creation of appropriate timeline + * events, if any, and broadcast of a notification that the artifacts are + * ready for further analysis. * - * @param artifacts The artifacts (data artifacts and/or analysis results). + * @param artifacts The artifacts. * @param moduleName The display name of the module posting the artifacts. * * @throws BlackboardException The exception is thrown if there is an issue - * posting the artifact. - * RJCTODO: Deprecate + * posting the artifact. RJCTODO: Deprecate */ public void postArtifacts(Collection<BlackboardArtifact> artifacts, String moduleName) throws BlackboardException { postArtifacts(artifacts, moduleName, null); } /** - * Posts an artifact (data artifact or analysis result) to the blackboard. - * The artifact should be complete (all attributes have been added) before - * it is posted. Posting the artifact triggers the creation of appropriate - * timeline events, if any, and broadcast of a notification that the - * artifact is ready for further analysis. + * Posts an artifact to the blackboard. The artifact should be complete (all + * attributes have been added) before it is posted. Posting the artifact + * triggers the creation of appropriate timeline events, if any, and + * broadcast of a notification that the artifact is ready for further + * analysis. * - * @param artifact The artifact (data artifact or analysis result). + * @param artifact The artifact. * @param moduleName The display name of the module posting the artifact. * @param ingestJobId The numeric identifier of the ingest job within which * the artifact was posted. @@ -129,17 +127,16 @@ public void postArtifacts(Collection<BlackboardArtifact> artifacts, String modul */ public void postArtifact(BlackboardArtifact artifact, String moduleName, Long ingestJobId) throws BlackboardException { postArtifacts(Collections.singleton(artifact), moduleName, ingestJobId); - } - + } + /** - * Posts a collection of artifacts (data artifacts and/or analysis results) - * to the blackboard. The artifacts should be complete (all attributes have - * been added) before they are posted. Posting the artifacts triggers the - * creation of appropriate timeline events, if any, and broadcast of a - * notification that the artifacts are ready for further analysis. - * - * @param artifacts The artifacts (data artifacts and/or analysis - * results). + * Posts a collection of artifacts to the blackboard. The artifacts should + * be complete (all attributes have been added) before they are posted. + * Posting the artifacts triggers the creation of appropriate timeline + * events, if any, and broadcast of a notification that the artifacts are + * ready for further analysis. + * + * @param artifacts The artifacts. * @param moduleName The display name of the module posting the artifacts. * @param ingestJobId The numeric identifier of the ingest job within which * the artifacts were posted. @@ -156,8 +153,8 @@ public void postArtifacts(Collection<BlackboardArtifact> artifacts, String modul } } caseDb.fireTSKEvent(new ArtifactsPostedEvent(artifacts, moduleName, ingestJobId)); - } - + } + /** * Gets an artifact type, creating it if it does not already exist. Use this * method to define custom artifact types. @@ -197,7 +194,7 @@ public BlackboardArtifact.Type getOrAddArtifactType(String typeName, String disp if (typeNameToArtifactTypeMap.containsKey(typeName)) { return typeNameToArtifactTypeMap.get(typeName); } - + Statement s = null; ResultSet rs = null; CaseDbTransaction trans = null; @@ -257,7 +254,7 @@ public BlackboardArtifact.Type getOrAddArtifactType(String typeName, String disp } } } - + /** * Get the attribute type associated with an attribute type name. * @@ -296,8 +293,8 @@ public BlackboardAttribute.Type getAttributeType(String attrTypeName) throws Tsk closeConnection(connection); caseDb.releaseSingleUserCaseReadLock(); } - } - + } + /** * Get the attribute type associated with an attribute type ID. * @@ -336,8 +333,8 @@ BlackboardAttribute.Type getAttributeType(int typeID) throws TskCoreException { closeConnection(connection); caseDb.releaseSingleUserCaseReadLock(); } - } - + } + /** * Get the artifact type associated with an artifact type name. * @@ -377,8 +374,8 @@ public BlackboardArtifact.Type getArtifactType(String artTypeName) throws TskCor closeConnection(connection); caseDb.releaseSingleUserCaseReadLock(); } - } - + } + /** * Get the artifact type associated with an artifact type id. * @@ -421,16 +418,16 @@ public BlackboardArtifact.Type getArtifactType(int artTypeId) throws TskCoreExce closeConnection(connection); caseDb.releaseSingleUserCaseReadLock(); } - } - + } + /** * Get the list of attributes for the given artifact. - * + * * @param artifact The artifact to load attributes for. - * + * * @return The list of attributes. - * - * @throws TskCoreException + * + * @throws TskCoreException */ public ArrayList<BlackboardAttribute> getBlackboardAttributes(final BlackboardArtifact artifact) throws TskCoreException { CaseDbConnection connection = null; @@ -486,7 +483,7 @@ public ArrayList<BlackboardAttribute> getBlackboardAttributes(final BlackboardAr closeConnection(connection); caseDb.releaseSingleUserCaseReadLock(); } - } + } /** * Get the attributes associated with the given file. @@ -553,7 +550,7 @@ ArrayList<Attribute> getFileAttributes(final AbstractFile file) throws TskCoreEx caseDb.releaseSingleUserCaseReadLock(); } } - + /** * Adds the standard artifact types to the blackboard_artifact_types table * and the artifact type caches. @@ -611,8 +608,8 @@ void initBlackboardArtifactTypes(CaseDbConnection connection) throws SQLExceptio } finally { caseDb.releaseSingleUserCaseWriteLock(); } - } - + } + /** * Adds the standard attribute types to the blackboard_attribute_types table * and the attribute type caches. @@ -670,8 +667,8 @@ void initBlackboardAttributeTypes(CaseDbConnection connection) throws SQLExcepti } finally { caseDb.releaseSingleUserCaseWriteLock(); } - } - + } + /** * Adds new analysis result artifact. * @@ -1364,7 +1361,7 @@ public BlackboardAttribute.Type getOrAddAttributeType(String typeName, Blackboar if (typeNameToAttributeTypeMap.containsKey(typeName)) { return typeNameToAttributeTypeMap.get(typeName); } - + CaseDbTransaction trans = null; Statement s = null; ResultSet rs = null; @@ -1422,7 +1419,7 @@ public BlackboardAttribute.Type getOrAddAttributeType(String typeName, Blackboar throw new BlackboardException("Error rolling back transaction", ex); } } - } + } } /** @@ -1918,9 +1915,9 @@ private List<BlackboardArtifact> getArtifactsWhere(BlackboardArtifact.Type artif } /** - * An event published by SleuthkitCase when one or more artifacts (data - * artifacts and/or analysis results) are posted. Posted artifacts should be - * complete (all attributes have been added) and ready for further analysis. + * An event published by SleuthkitCase when one or more artifacts are + * posted. Posted artifacts should be complete (all attributes have been + * added) and ready for further analysis. */ final public class ArtifactsPostedEvent { @@ -1931,12 +1928,10 @@ final public class ArtifactsPostedEvent { /** * Constructs an Event published by SleuthkitCase when one or more - * artifacts (data artifacts and/or analysis results) are posted. Posted - * artifacts should be complete (all attributes have been added) and - * ready for further analysis. + * artifacts are posted. Posted artifacts should be complete (all + * attributes have been added) and ready for further analysis. * - * @param artifacts The artifacts (data artifacts and/or analysis - * results). + * @param artifacts The artifacts. * @param moduleName The display name of the module posting the * artifacts. * @param ingestJobId The numeric identifier of the ingest job within @@ -1961,7 +1956,7 @@ private ArtifactsPostedEvent(Collection<BlackboardArtifact> artifacts, String mo } /** - * Gets the posted artifacts (data artifacts and/or analysis results). + * Gets the posted artifacts. * * @return The artifacts (data artifacts and/or analysis results). */ @@ -1970,12 +1965,11 @@ public Collection<BlackboardArtifact> getArtifacts() { } /** - * Gets the posted artifacts (data artifacts or analysis results) of a - * given type. + * Gets the posted artifacts of a given type. * * @param artifactType The artifact type. * - * @return The artifacts (data artifacts or analysis results), if any. + * @return The artifacts, if any. */ public Collection<BlackboardArtifact> getArtifacts(BlackboardArtifact.Type artifactType) { Set<BlackboardArtifact> tempSet = artifacts.stream() @@ -1985,8 +1979,7 @@ public Collection<BlackboardArtifact> getArtifacts(BlackboardArtifact.Type artif } /** - * Gets the display name of the module that posted the artifacts (data - * artifacts and/or analysis results). + * Gets the display name of the module that posted the artifacts. * * @return The display name. */ @@ -1995,8 +1988,7 @@ public String getModuleName() { } /** - * Gets the types of artifacts (data artifacts and/or analysis results) - * that were posted. + * Gets the types of artifacts that were posted. * * @return The types. */ @@ -2006,7 +1998,7 @@ public Collection<BlackboardArtifact.Type> getArtifactTypes() { /** * Gets the numeric identifier of the ingest job within which the - * artifacts (data artifacts and/or analysis results) were posted. + * artifacts were posted. * * @return The ingest job ID, may be null. */ -- GitLab