19 package org.sleuthkit.autopsy.casemodule.services;
21 import java.io.Closeable;
22 import java.io.IOException;
23 import java.util.Arrays;
24 import java.util.HashMap;
25 import java.util.HashSet;
26 import java.util.List;
29 import java.util.logging.Level;
30 import org.openide.util.NbBundle;
48 @NbBundle.Messages(
"TagsManager.predefTagNames.bookmark.text=Bookmark")
49 private static final Set<String>
STANDARD_TAG_DISPLAY_NAMES =
new HashSet<>(Arrays.asList(Bundle.TagsManager_predefTagNames_bookmark_text()));
111 Map<String, TagName> tagNames =
new HashMap<>();
112 Set<TagNameDefiniton> customTypes = TagNameDefiniton.getTagNameDefinitions();
113 for (TagNameDefiniton tagType : customTypes) {
114 tagNames.put(tagType.getDisplayName(), null);
117 tagNames.put(tagName.getDisplayName(), tagName);
119 return new HashMap<>(tagNames);
177 if (!STANDARD_TAG_DISPLAY_NAMES.contains(displayName)) {
178 Set<TagNameDefiniton> customTypes = TagNameDefiniton.getTagNameDefinitions();
179 customTypes.add(
new TagNameDefiniton(displayName, description, color));
180 TagNameDefiniton.setTagNameDefinitions(customTypes);
183 }
catch (TskCoreException ex) {
185 for (
TagName tagName : existingTagNames) {
186 if (tagName.getDisplayName().equals(displayName)) {
187 throw new TagNameAlreadyExistsException();
247 tag = caseDb.
addContentTag(content, tagName, comment, beginByteOffset, endByteOffset);
250 }
catch (IllegalStateException ex) {
268 }
catch (IllegalStateException ex) {
380 }
catch (IllegalStateException ex) {
398 }
catch (IllegalStateException ex) {
486 return (content.contains(
"\\")
487 || content.contains(
":")
488 || content.contains(
"*")
489 || content.contains(
"?")
490 || content.contains(
"\"")
491 || content.contains(
"<")
492 || content.contains(
">")
493 || content.contains(
"|")
494 || content.contains(
",")
495 || content.contains(
";"));
502 public static class TagNameAlreadyExistsException
extends Exception {
521 return tagNames.containsKey(tagDisplayName) && (tagNames.get(tagDisplayName) != null);
523 LOGGER.log(Level.SEVERE,
"Error querying case database for tag names", ex);
536 public synchronized void close() throws IOException {
void notifyContentTagDeleted(ContentTag deletedTag)
long getBlackboardArtifactTagsCountByTagName(TagName tagName)
void notifyBlackBoardArtifactTagDeleted(BlackboardArtifactTag deletedTag)
BlackboardArtifactTag getBlackboardArtifactTagByID(long artifactTagID)
List< BlackboardArtifactTag > getBlackboardArtifactTagsByArtifact(BlackboardArtifact artifact)
List< TagName > getTagNamesInUse()
List< ContentTag > getAllContentTags()
ContentTag getContentTagByID(long contentTagID)
BlackboardArtifactTag addBlackboardArtifactTag(BlackboardArtifact artifact, TagName tagName, String comment)
void deleteBlackboardArtifactTag(BlackboardArtifactTag tag)
List< ContentTag > getContentTagsByTagName(TagName tagName)
List< TagName > getAllTagNames()
List< BlackboardArtifactTag > getBlackboardArtifactTagsByTagName(TagName tagName)
void notifyBlackBoardArtifactTagAdded(BlackboardArtifactTag newTag)
List< BlackboardArtifactTag > getAllBlackboardArtifactTags()
void deleteContentTag(ContentTag tag)
long getContentTagsCountByTagName(TagName tagName)
static Case getCurrentCase()
synchronized static Logger getLogger(String name)
List< ContentTag > getContentTagsByContent(Content content)
TagName addTagName(String displayName, String description, TagName.HTML_COLOR color)
void notifyContentTagAdded(ContentTag newTag)
ContentTag addContentTag(Content content, TagName tagName, String comment, long beginByteOffset, long endByteOffset)