19 package org.sleuthkit.autopsy.test;
21 import java.util.ArrayList;
22 import java.util.List;
23 import javax.xml.bind.DatatypeConverter;
24 import org.joda.time.DateTime;
28 import org.
sleuthkit.datamodel.Blackboard.BlackboardException;
38 final class CustomArtifactType {
40 private static final String MODULE_NAME = CustomArtifactsCreatorIngestModuleFactory.getModuleName();
41 private static final String ADDITIONAL_MODULE_NAME =
"Another Module";
42 private static final String ARTIFACT_TYPE_NAME =
"CUSTOM_ARTIFACT";
43 private static final String ARTIFACT_DISPLAY_NAME =
"Custom Artifact";
44 private static final String INT_ATTR_TYPE_NAME =
"CUSTOM_INT_ATTRIBUTE";
45 private static final String INT_ATTR_DISPLAY_NAME =
"Custom Integer";
46 private static final String DOUBLE_ATTR_TYPE_NAME =
"CUSTOM_DOUBLE_ATTRIBUTE";
47 private static final String DOUBLE_ATTR_DISPLAY_NAME =
"Custom Double";
48 private static final String LONG_ATTR_TYPE_NAME =
"CUSTOM_LONG_ATTRIBUTE";
49 private static final String LONG_ATTR_DISPLAY_NAME =
"Custom Long";
50 private static final String DATETIME_ATTR_TYPE_NAME =
"CUSTOM_DATETIME_ATTRIBUTE";
51 private static final String DATETIME_ATTR_DISPLAY_NAME =
"Custom Datetime";
52 private static final String BYTES_ATTR_TYPE_NAME =
"CUSTOM_BYTES_ATTRIBUTE";
53 private static final String BYTES_ATTR_DISPLAY_NAME =
"Custom Bytes";
54 private static final String STRING_ATTR_TYPE_NAME =
"CUSTOM_STRING_ATTRIBUTE";
55 private static final String STRING_ATTR_DISPLAY_NAME =
"Custom String";
56 private static final String JSON_ATTR_TYPE_NAME =
"CUSTOM_JSON_ATTRIBUTE";
57 private static final String JSON_ATTR_DISPLAY_NAME =
"Custom Json";
58 private static BlackboardArtifact.Type artifactType;
59 private static BlackboardAttribute.Type intAttrType;
60 private static BlackboardAttribute.Type doubleAttrType;
61 private static BlackboardAttribute.Type longAttributeType;
62 private static BlackboardAttribute.Type dateTimeAttrType;
63 private static BlackboardAttribute.Type bytesAttrType;
64 private static BlackboardAttribute.Type stringAttrType;
65 private static BlackboardAttribute.Type jsonAttrType;
73 static void addToCaseDatabase() throws Blackboard.BlackboardException {
74 Blackboard blackboard = Case.getCurrentCase().getServices().getArtifactsBlackboard();
75 artifactType = blackboard.getOrAddArtifactType(ARTIFACT_TYPE_NAME, ARTIFACT_DISPLAY_NAME);
76 intAttrType = blackboard.getOrAddAttributeType(INT_ATTR_TYPE_NAME, BlackboardAttribute.TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE.INTEGER, INT_ATTR_DISPLAY_NAME);
77 doubleAttrType = blackboard.getOrAddAttributeType(DOUBLE_ATTR_TYPE_NAME, BlackboardAttribute.TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE.DOUBLE, DOUBLE_ATTR_DISPLAY_NAME);
78 longAttributeType = blackboard.getOrAddAttributeType(LONG_ATTR_TYPE_NAME, BlackboardAttribute.TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE.LONG, LONG_ATTR_DISPLAY_NAME);
79 dateTimeAttrType = blackboard.getOrAddAttributeType(DATETIME_ATTR_TYPE_NAME, BlackboardAttribute.TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE.DATETIME, DATETIME_ATTR_DISPLAY_NAME);
80 bytesAttrType = blackboard.getOrAddAttributeType(BYTES_ATTR_TYPE_NAME, BlackboardAttribute.TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE.BYTE, BYTES_ATTR_DISPLAY_NAME);
81 stringAttrType = blackboard.getOrAddAttributeType(STRING_ATTR_TYPE_NAME, BlackboardAttribute.TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE.STRING, STRING_ATTR_DISPLAY_NAME);
82 jsonAttrType = blackboard.getOrAddAttributeType(JSON_ATTR_TYPE_NAME, BlackboardAttribute.TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE.JSON, JSON_ATTR_DISPLAY_NAME);
98 static BlackboardArtifact createAndPostInstance(Content source)
throws TskCoreException, Blackboard.BlackboardException {
99 List<BlackboardAttribute> attributes =
new ArrayList<>();
100 attributes.add(
new BlackboardAttribute(intAttrType, MODULE_NAME, 0));
101 attributes.add(
new BlackboardAttribute(doubleAttrType, MODULE_NAME, 0.0));
102 attributes.add(
new BlackboardAttribute(longAttributeType, MODULE_NAME, 0L));
103 attributes.add(
new BlackboardAttribute(dateTimeAttrType, MODULE_NAME, DateTime.now().getMillis()/1000));
104 attributes.add(
new BlackboardAttribute(bytesAttrType, MODULE_NAME, DatatypeConverter.parseHexBinary(
"ABCD")));
105 attributes.add(
new BlackboardAttribute(stringAttrType, MODULE_NAME,
"Zero"));
106 attributes.add(
new BlackboardAttribute(jsonAttrType, MODULE_NAME,
"{\"fruit\": \"Apple\",\"size\": \"Large\",\"color\": \"Red\"}"));
112 for (BlackboardAttribute attr : attributes) {
113 attr.addSource(ADDITIONAL_MODULE_NAME);
114 attr.addSource(ADDITIONAL_MODULE_NAME);
117 BlackboardArtifact artifact;
118 switch (artifactType.getCategory()) {
120 artifact = source.newDataArtifact(artifactType, attributes);
123 case ANALYSIS_RESULT:
124 artifact = source.newAnalysisResult(artifactType, Score.SCORE_UNKNOWN, null, null, null, attributes)
125 .getAnalysisResult();
129 throw new TskCoreException(String.format(
"Artifact type: %s has no known category: %s",
130 artifactType.getDisplayName(), artifactType.getCategory().getDisplayName()));
133 Blackboard blackboard = Case.getCurrentCase().getServices().getArtifactsBlackboard();
134 blackboard.postArtifact(artifact, MODULE_NAME);
142 private CustomArtifactType() {