mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-19 11:07:43 +00:00
codacy and code review updates
This commit is contained in:
parent
dbaaa7efae
commit
ca23c913e1
@ -20,8 +20,10 @@ package org.sleuthkit.autopsy.casemodule.services;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.LinkedHashSet;
|
import java.util.LinkedHashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -58,31 +60,27 @@ final class TagNameDefinition implements Comparable<TagNameDefinition> {
|
|||||||
|
|
||||||
private static final String TAGS_SETTINGS_NAME = "Tags"; //NON-NLS
|
private static final String TAGS_SETTINGS_NAME = "Tags"; //NON-NLS
|
||||||
private static final String TAG_NAMES_SETTING_KEY = "TagNames"; //NON-NLS
|
private static final String TAG_NAMES_SETTING_KEY = "TagNames"; //NON-NLS
|
||||||
private static final String TAG_NAMES_SETTING_VERSION_KEY = "CustomTagNameVersion";
|
private static final String TAG_SETTING_VERSION_KEY = "CustomTagNameVersion";
|
||||||
private static final String TAG_SETTINGS_NAME_VERSION = "1";
|
private static final String TAG_SETTINGS_VERSION = "1";
|
||||||
|
|
||||||
private final String displayName;
|
private final String displayName;
|
||||||
private final String description;
|
private final String description;
|
||||||
private final TagName.HTML_COLOR color;
|
private final TagName.HTML_COLOR color;
|
||||||
private final TskData.FileKnown knownStatus;
|
private final TskData.FileKnown knownStatus;
|
||||||
|
|
||||||
static final Map<String, TagNameDefinition> STANDARD_TAGS = new HashMap<>();
|
private static final Map<String, TagNameDefinition> STANDARD_TAGS_DEFINITIONS = new HashMap<>();
|
||||||
static final Map<String, TagNameDefinition> PROJECT_VIC_DEFAULT_TAGS = new HashMap<>();
|
private static final Map<String, TagNameDefinition> PROJECT_VIC_TAG_DEFINITIONS = new HashMap<>();
|
||||||
private static final List<String> STANDARD_TAG_NAMES = new ArrayList<>();
|
|
||||||
|
|
||||||
static {
|
static {
|
||||||
STANDARD_TAGS.put(Bundle.TagNameDefinition_predefTagNames_bookmark_text(), new TagNameDefinition(Bundle.TagNameDefinition_predefTagNames_bookmark_text(), "", TagName.HTML_COLOR.NONE, TskData.FileKnown.UNKNOWN));
|
STANDARD_TAGS_DEFINITIONS.put(Bundle.TagNameDefinition_predefTagNames_bookmark_text(), new TagNameDefinition(Bundle.TagNameDefinition_predefTagNames_bookmark_text(), "", TagName.HTML_COLOR.NONE, TskData.FileKnown.UNKNOWN));
|
||||||
STANDARD_TAGS.put(Bundle.TagNameDefinition_predefTagNames_followUp_text(), new TagNameDefinition(Bundle.TagNameDefinition_predefTagNames_followUp_text(), "", TagName.HTML_COLOR.NONE, TskData.FileKnown.UNKNOWN));
|
STANDARD_TAGS_DEFINITIONS.put(Bundle.TagNameDefinition_predefTagNames_followUp_text(), new TagNameDefinition(Bundle.TagNameDefinition_predefTagNames_followUp_text(), "", TagName.HTML_COLOR.NONE, TskData.FileKnown.UNKNOWN));
|
||||||
STANDARD_TAGS.put(Bundle.TagNameDefinition_predefTagNames_notableItem_text(), new TagNameDefinition(Bundle.TagNameDefinition_predefTagNames_notableItem_text(), "", TagName.HTML_COLOR.NONE, TskData.FileKnown.BAD));
|
STANDARD_TAGS_DEFINITIONS.put(Bundle.TagNameDefinition_predefTagNames_notableItem_text(), new TagNameDefinition(Bundle.TagNameDefinition_predefTagNames_notableItem_text(), "", TagName.HTML_COLOR.NONE, TskData.FileKnown.BAD));
|
||||||
|
|
||||||
PROJECT_VIC_DEFAULT_TAGS.put(Bundle.Category_one(), new TagNameDefinition(Bundle.Category_one(), "", TagName.HTML_COLOR.RED, TskData.FileKnown.BAD));
|
PROJECT_VIC_TAG_DEFINITIONS.put(Bundle.Category_one(), new TagNameDefinition(Bundle.Category_one(), "", TagName.HTML_COLOR.RED, TskData.FileKnown.BAD));
|
||||||
PROJECT_VIC_DEFAULT_TAGS.put(Bundle.Category_two(), new TagNameDefinition(Bundle.Category_two(), "", TagName.HTML_COLOR.LIME, TskData.FileKnown.BAD));
|
PROJECT_VIC_TAG_DEFINITIONS.put(Bundle.Category_two(), new TagNameDefinition(Bundle.Category_two(), "", TagName.HTML_COLOR.LIME, TskData.FileKnown.BAD));
|
||||||
PROJECT_VIC_DEFAULT_TAGS.put(Bundle.Category_three(), new TagNameDefinition(Bundle.Category_three(), "", TagName.HTML_COLOR.YELLOW, TskData.FileKnown.BAD));
|
PROJECT_VIC_TAG_DEFINITIONS.put(Bundle.Category_three(), new TagNameDefinition(Bundle.Category_three(), "", TagName.HTML_COLOR.YELLOW, TskData.FileKnown.BAD));
|
||||||
PROJECT_VIC_DEFAULT_TAGS.put(Bundle.Category_four(), new TagNameDefinition(Bundle.Category_four(), "", TagName.HTML_COLOR.PURPLE, TskData.FileKnown.UNKNOWN));
|
PROJECT_VIC_TAG_DEFINITIONS.put(Bundle.Category_four(), new TagNameDefinition(Bundle.Category_four(), "", TagName.HTML_COLOR.PURPLE, TskData.FileKnown.UNKNOWN));
|
||||||
PROJECT_VIC_DEFAULT_TAGS.put(Bundle.Category_five(), new TagNameDefinition(Bundle.Category_five(), "", TagName.HTML_COLOR.SILVER, TskData.FileKnown.UNKNOWN));
|
PROJECT_VIC_TAG_DEFINITIONS.put(Bundle.Category_five(), new TagNameDefinition(Bundle.Category_five(), "", TagName.HTML_COLOR.SILVER, TskData.FileKnown.UNKNOWN));
|
||||||
|
|
||||||
STANDARD_TAG_NAMES.addAll(STANDARD_TAGS.keySet());
|
|
||||||
STANDARD_TAG_NAMES.addAll(PROJECT_VIC_DEFAULT_TAGS.keySet());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -100,9 +98,21 @@ final class TagNameDefinition implements Comparable<TagNameDefinition> {
|
|||||||
this.color = color;
|
this.color = color;
|
||||||
this.knownStatus = status;
|
this.knownStatus = status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Collection<TagNameDefinition> getStandardTagNameDefinitions() {
|
||||||
|
return STANDARD_TAGS_DEFINITIONS.values();
|
||||||
|
}
|
||||||
|
|
||||||
|
static Collection<TagNameDefinition> getProjectVICDefaultDefinitions() {
|
||||||
|
return PROJECT_VIC_TAG_DEFINITIONS.values();
|
||||||
|
}
|
||||||
|
|
||||||
static List<String> getStandardTagNames() {
|
static List<String> getStandardTagNames() {
|
||||||
return Collections.unmodifiableList(STANDARD_TAG_NAMES);
|
List<String> strList = new ArrayList<>();
|
||||||
|
strList.addAll(STANDARD_TAGS_DEFINITIONS.keySet());
|
||||||
|
strList.addAll(PROJECT_VIC_TAG_DEFINITIONS.keySet());
|
||||||
|
|
||||||
|
return strList;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -218,90 +228,102 @@ final class TagNameDefinition implements Comparable<TagNameDefinition> {
|
|||||||
/**
|
/**
|
||||||
* Gets tag name definitions from the tag settings file as well as the
|
* Gets tag name definitions from the tag settings file as well as the
|
||||||
* default tag name definitions.
|
* default tag name definitions.
|
||||||
|
*
|
||||||
|
* The currently custom tags properties are stored in one string property value
|
||||||
|
* separated by ;. The properties of an individual tag are comma separated
|
||||||
|
* in the format of:
|
||||||
|
* tag_name,tag_description,tag_color,known_status
|
||||||
|
*
|
||||||
|
* In prior versions of autopsy the known_status was stored in the central repository,
|
||||||
|
* therefore the properties file only had three values.
|
||||||
*
|
*
|
||||||
* @return A set of tag name definition objects.
|
* @return A set of tag name definition objects.
|
||||||
*/
|
*/
|
||||||
static synchronized Set<TagNameDefinition> getTagNameDefinitions() {
|
static synchronized Set<TagNameDefinition> getTagNameDefinitions() {
|
||||||
Set<TagNameDefinition> tagNames = new LinkedHashSet<>();
|
Set<TagNameDefinition> tagNames = new LinkedHashSet<>();
|
||||||
//modifiable copy of default tags list for us to keep track of which default tags have already been created
|
String customTagsList = ModuleSettings.getConfigSetting(TAGS_SETTINGS_NAME, TAG_NAMES_SETTING_KEY);
|
||||||
String setting = ModuleSettings.getConfigSetting(TAGS_SETTINGS_NAME, TAG_NAMES_SETTING_KEY);
|
if (null != customTagsList && !customTagsList.isEmpty()) {
|
||||||
if (null != setting && !setting.isEmpty()) {
|
List<String> customTagDefinitions = Arrays.asList(customTagsList.split(";"));
|
||||||
List<String> tagNameTuples = Arrays.asList(setting.split(";"));
|
|
||||||
int numberOfAttributes = 0;
|
int numberOfAttributes = 0;
|
||||||
if (tagNameTuples.size() > 0) {
|
List<TagNameDefinition> tagDefinitions = new ArrayList<>();
|
||||||
// Determine if Tags.properties file needs to be upgraded
|
if (!customTagDefinitions.isEmpty()) {
|
||||||
numberOfAttributes = tagNameTuples.get(0).split(",").length;
|
// Use the first entry in the list to figure out if there are 3
|
||||||
|
// or four tag attributes in the file.
|
||||||
|
numberOfAttributes = customTagDefinitions.get(0).split(",").length;
|
||||||
}
|
}
|
||||||
if (numberOfAttributes == 3) {
|
if (numberOfAttributes == 3) {
|
||||||
// Upgrade Tags.Properties with the settings in Central Repository Settings if necessary
|
// Get the known status from the Central Repository
|
||||||
tagNames.addAll(upgradeTagPropertiesFile(tagNameTuples));
|
String crTagKnownProp = ModuleSettings.getConfigSetting("CentralRepository", "db.badTags"); // NON-NLS
|
||||||
|
List<String> knownTagNameList = new ArrayList<>();
|
||||||
|
if(crTagKnownProp != null && !crTagKnownProp.isEmpty()) {
|
||||||
|
knownTagNameList.addAll(Arrays.asList(crTagKnownProp.split(",")));
|
||||||
|
}
|
||||||
|
|
||||||
|
tagDefinitions = buildTagNameDefinitions(customTagDefinitions, knownTagNameList);
|
||||||
} else if (numberOfAttributes == 4) {
|
} else if (numberOfAttributes == 4) {
|
||||||
// if the Tags.Properties file is up to date parse it
|
tagDefinitions = buildTagNameDefinitions(customTagDefinitions);
|
||||||
Set<TagNameDefinition> tagNameDefinitions = readCurrentTagPropertiesFile(tagNameTuples);
|
|
||||||
tagNames.addAll(tagNameDefinitions);
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return tagNames;
|
// Remove the standard and project vic tags.
|
||||||
|
List<String> standardTagNames = getStandardTagNames();
|
||||||
}
|
for(TagNameDefinition def: tagDefinitions) {
|
||||||
|
if(!standardTagNames.contains(def.getDisplayName())) {
|
||||||
/**
|
tagNames.add(def);
|
||||||
* Read the central repository properties file to get any knownStatus
|
|
||||||
* related tag settings that may exist in it.
|
|
||||||
*
|
|
||||||
* @param tagProperties the list of comma seperated tags in the
|
|
||||||
* Tags.properties file
|
|
||||||
* @param standardTagsToBeCreated the list of standard tags which have yet
|
|
||||||
* to be created
|
|
||||||
*
|
|
||||||
* @return tagNames a list of TagNameDefinitions
|
|
||||||
*/
|
|
||||||
private static Set<TagNameDefinition> upgradeTagPropertiesFile(List<String> tagProperties) {
|
|
||||||
Set<TagNameDefinition> tagNames = new LinkedHashSet<>();
|
|
||||||
List<String> legacyNotableTags = new ArrayList<>();
|
|
||||||
String badTagsStr = ModuleSettings.getConfigSetting("CentralRepository", "db.badTags"); // NON-NLS
|
|
||||||
if (badTagsStr != null && !badTagsStr.isEmpty()) {
|
|
||||||
legacyNotableTags.addAll(Arrays.asList(badTagsStr.split(",")));
|
|
||||||
}
|
|
||||||
|
|
||||||
for (String tagNameTuple : tagProperties) {
|
|
||||||
String[] tagNameAttributes = tagNameTuple.split(","); //get the attributes
|
|
||||||
if (!(STANDARD_TAGS.containsKey(tagNameAttributes[0]) || PROJECT_VIC_DEFAULT_TAGS.containsKey(tagNameAttributes[0]))) {
|
|
||||||
if (legacyNotableTags.contains(tagNameAttributes[0])) { //if tag should be notable mark create it as such
|
|
||||||
tagNames.add(new TagNameDefinition(tagNameAttributes[0], tagNameAttributes[1],
|
|
||||||
TagName.HTML_COLOR.valueOf(tagNameAttributes[2]), TskData.FileKnown.BAD));
|
|
||||||
} else { //otherwise create it as unknown
|
|
||||||
tagNames.add(new TagNameDefinition(tagNameAttributes[0], tagNameAttributes[1],
|
|
||||||
TagName.HTML_COLOR.valueOf(tagNameAttributes[2]), TskData.FileKnown.UNKNOWN)); //add the default value for that tag
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return tagNames;
|
return tagNames;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a list of TagNameDefinitons created by merging the tag data
|
||||||
|
* from the properties file and the known status information from the central
|
||||||
|
* repository.
|
||||||
|
*
|
||||||
|
* @param tagProperties List of description strings.
|
||||||
|
* @param centralRepoNotableTags List of known tag names.
|
||||||
|
*
|
||||||
|
* @return A list of TagNameDefinitions.
|
||||||
|
*/
|
||||||
|
private static List<TagNameDefinition> buildTagNameDefinitions(List<String> tagProperties, List<String> centralRepoNotableTags) {
|
||||||
|
List<TagNameDefinition> tagNameDefinitions = new ArrayList<>();
|
||||||
|
|
||||||
|
for (String propertyString : tagProperties) {
|
||||||
|
// Split the property into attributes
|
||||||
|
String[] attributes = propertyString.split(","); //get the attributes
|
||||||
|
String tagName = attributes[0];
|
||||||
|
TskData.FileKnown knownStatus = TskData.FileKnown.UNKNOWN;
|
||||||
|
|
||||||
|
if(centralRepoNotableTags.contains(tagName)) {
|
||||||
|
knownStatus = TskData.FileKnown.BAD;
|
||||||
|
}
|
||||||
|
|
||||||
|
tagNameDefinitions.add(new TagNameDefinition(tagName, attributes[1],
|
||||||
|
TagName.HTML_COLOR.valueOf(attributes[2]), knownStatus));
|
||||||
|
}
|
||||||
|
|
||||||
|
return tagNameDefinitions;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Read the Tags.properties file to get the TagNameDefinitions that are
|
* Read the Tags.properties file to get the TagNameDefinitions that are
|
||||||
* preserved across cases.
|
* preserved across cases.
|
||||||
*
|
*
|
||||||
* @param tagProperties the list of comma separated tags in the
|
* @param tagProperties List of description strings.
|
||||||
* Tags.properties file
|
*
|
||||||
* @param standardTagsToBeCreated the list of standard tags which have yet
|
* @param standardTagsToBeCreated the list of standard tags which have yet
|
||||||
* to be created
|
* to be created
|
||||||
*
|
*
|
||||||
* @return tagNames a list of TagNameDefinitions
|
* @return tagNames a list of TagNameDefinitions
|
||||||
*/
|
*/
|
||||||
private static Set<TagNameDefinition> readCurrentTagPropertiesFile(List<String> tagProperties) {
|
private static List<TagNameDefinition> buildTagNameDefinitions(List<String> tagProperties) {
|
||||||
Set<TagNameDefinition> tagNames = new LinkedHashSet<>();
|
List<TagNameDefinition> tagNameDefinitions = new ArrayList<>();
|
||||||
String version = ModuleSettings.getConfigSetting(TAGS_SETTINGS_NAME, TAG_SETTINGS_NAME_VERSION);
|
|
||||||
for (String tagNameTuple : tagProperties) {
|
for (String tagNameTuple : tagProperties) {
|
||||||
String[] tagNameAttributes = tagNameTuple.split(","); //get the attributes
|
String[] tagNameAttributes = tagNameTuple.split(","); //get the attributes
|
||||||
// Remove the standard and project vic tags from this list.
|
tagNameDefinitions.add(new TagNameDefinition(tagNameAttributes[0], tagNameAttributes[1],
|
||||||
if (version != null || !(STANDARD_TAGS.containsKey(tagNameAttributes[0]) || PROJECT_VIC_DEFAULT_TAGS.containsKey(tagNameAttributes[0]))) {
|
TagName.HTML_COLOR.valueOf(tagNameAttributes[2]), TskData.FileKnown.valueOf(tagNameAttributes[3])));
|
||||||
tagNames.add(new TagNameDefinition(tagNameAttributes[0], tagNameAttributes[1],
|
|
||||||
TagName.HTML_COLOR.valueOf(tagNameAttributes[2]), TskData.FileKnown.valueOf(tagNameAttributes[3])));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return tagNames;
|
return tagNameDefinitions;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -324,7 +346,7 @@ final class TagNameDefinition implements Comparable<TagNameDefinition> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ModuleSettings.setConfigSetting(TAGS_SETTINGS_NAME, TAG_NAMES_SETTING_VERSION_KEY, TAG_SETTINGS_NAME_VERSION);
|
ModuleSettings.setConfigSetting(TAGS_SETTINGS_NAME, TAG_SETTING_VERSION_KEY, TAG_SETTINGS_VERSION);
|
||||||
ModuleSettings.setConfigSetting(TAGS_SETTINGS_NAME, TAG_NAMES_SETTING_KEY, setting.toString());
|
ModuleSettings.setConfigSetting(TAGS_SETTINGS_NAME, TAG_NAMES_SETTING_KEY, setting.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,19 +173,19 @@ public class TagsManager implements Closeable {
|
|||||||
this.caseDb = caseDb;
|
this.caseDb = caseDb;
|
||||||
|
|
||||||
// Add standard tags and the Project VIC default tag set and tags.
|
// Add standard tags and the Project VIC default tag set and tags.
|
||||||
TaggingManager taggingMgr = caseDb.getTagsManager();
|
TaggingManager taggingMgr = caseDb.getTaggingManager();
|
||||||
try {
|
try {
|
||||||
List<TagSet> setList = taggingMgr.getTagSets();
|
List<TagSet> setList = taggingMgr.getTagSets();
|
||||||
if (setList.isEmpty()) {
|
if (setList.isEmpty()) {
|
||||||
//Assume new case and add Project VIC tags.
|
//Assume new case and add Project VIC tags.
|
||||||
TagSet set = taggingMgr.addTagSet("Project VIC (United States)");
|
TagSet set = taggingMgr.addTagSet("Project VIC (United States)");
|
||||||
|
|
||||||
for (TagNameDefinition def : TagNameDefinition.PROJECT_VIC_DEFAULT_TAGS.values()) {
|
for (TagNameDefinition def : TagNameDefinition.getProjectVICDefaultDefinitions()) {
|
||||||
TagName tagName = caseDb.addOrUpdateTagName(def.getDisplayName(), def.getDescription(), def.getColor(), def.getKnownStatus());
|
TagName tagName = caseDb.addOrUpdateTagName(def.getDisplayName(), def.getDescription(), def.getColor(), def.getKnownStatus());
|
||||||
taggingMgr.addTagNameToTagSet(set, tagName);
|
taggingMgr.addTagNameToTagSet(set, tagName);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (TagNameDefinition def : TagNameDefinition.STANDARD_TAGS.values()) {
|
for (TagNameDefinition def : TagNameDefinition.getStandardTagNameDefinitions()) {
|
||||||
caseDb.addOrUpdateTagName(def.getDisplayName(), def.getDescription(), def.getColor(), def.getKnownStatus());
|
caseDb.addOrUpdateTagName(def.getDisplayName(), def.getDescription(), def.getColor(), def.getKnownStatus());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -475,7 +475,7 @@ public class TagsManager implements Closeable {
|
|||||||
* database.
|
* database.
|
||||||
*/
|
*/
|
||||||
public ContentTag addContentTag(Content content, TagName tagName, String comment, long beginByteOffset, long endByteOffset) throws TskCoreException {
|
public ContentTag addContentTag(Content content, TagName tagName, String comment, long beginByteOffset, long endByteOffset) throws TskCoreException {
|
||||||
TaggingManager.ContentTagChange tagChange = caseDb.getTagsManager().addContentTag(content, tagName, comment, beginByteOffset, endByteOffset);
|
TaggingManager.ContentTagChange tagChange = caseDb.getTaggingManager().addContentTag(content, tagName, comment, beginByteOffset, endByteOffset);
|
||||||
try {
|
try {
|
||||||
Case currentCase = Case.getCurrentCaseThrows();
|
Case currentCase = Case.getCurrentCaseThrows();
|
||||||
|
|
||||||
@ -699,7 +699,7 @@ public class TagsManager implements Closeable {
|
|||||||
* database.
|
* database.
|
||||||
*/
|
*/
|
||||||
public BlackboardArtifactTag addBlackboardArtifactTag(BlackboardArtifact artifact, TagName tagName, String comment) throws TskCoreException {
|
public BlackboardArtifactTag addBlackboardArtifactTag(BlackboardArtifact artifact, TagName tagName, String comment) throws TskCoreException {
|
||||||
TaggingManager.BlackboardArtifactTagChange tagChange = caseDb.getTagsManager().addArtifactTag(artifact, tagName, comment);
|
TaggingManager.BlackboardArtifactTagChange tagChange = caseDb.getTaggingManager().addArtifactTag(artifact, tagName, comment);
|
||||||
try {
|
try {
|
||||||
Case currentCase = Case.getCurrentCaseThrows();
|
Case currentCase = Case.getCurrentCaseThrows();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user