Autopsy  4.1
Graphical digital forensics platform for The Sleuth Kit and other tools.
TagsManager.java
Go to the documentation of this file.
1 /*
2  * Autopsy Forensic Browser
3  *
4  * Copyright 2011-2016 Basis Technology Corp.
5  * Contact: carrier <at> sleuthkit <dot> org
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19 package org.sleuthkit.autopsy.casemodule.services;
20 
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;
27 import java.util.Map;
28 import java.util.Set;
29 import java.util.logging.Level;
30 import org.openide.util.NbBundle;
40 
45 public class TagsManager implements Closeable {
46 
47  private static final Logger LOGGER = Logger.getLogger(TagsManager.class.getName());
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()));
50  private final SleuthkitCase caseDb;
51 
58  TagsManager(SleuthkitCase caseDb) {
59  this.caseDb = caseDb;
60  }
61 
69  public List<TagName> getAllTagNames() throws TskCoreException {
70  return caseDb.getAllTagNames();
71  }
72 
81  public List<TagName> getTagNamesInUse() throws TskCoreException {
82  return caseDb.getTagNamesInUse();
83  }
84 
98  public synchronized Map<String, TagName> getDisplayNamesToTagNamesMap() throws TskCoreException {
111  Map<String, TagName> tagNames = new HashMap<>();
112  Set<TagNameDefiniton> customTypes = TagNameDefiniton.getTagNameDefinitions();
113  for (TagNameDefiniton tagType : customTypes) {
114  tagNames.put(tagType.getDisplayName(), null);
115  }
116  for (TagName tagName : caseDb.getAllTagNames()) {
117  tagNames.put(tagName.getDisplayName(), tagName);
118  }
119  return new HashMap<>(tagNames);
120  }
121 
136  public synchronized TagName addTagName(String displayName) throws TagNameAlreadyExistsException, TskCoreException {
137  return addTagName(displayName, "", TagName.HTML_COLOR.NONE);
138  }
139 
155  public synchronized TagName addTagName(String displayName, String description) throws TagNameAlreadyExistsException, TskCoreException {
156  return addTagName(displayName, description, TagName.HTML_COLOR.NONE);
157  }
158 
174  public synchronized TagName addTagName(String displayName, String description, TagName.HTML_COLOR color) throws TagNameAlreadyExistsException, TskCoreException {
175  try {
176  TagName tagName = caseDb.addTagName(displayName, description, color);
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);
181  }
182  return tagName;
183  } catch (TskCoreException ex) {
184  List<TagName> existingTagNames = caseDb.getAllTagNames();
185  for (TagName tagName : existingTagNames) {
186  if (tagName.getDisplayName().equals(displayName)) {
187  throw new TagNameAlreadyExistsException();
188  }
189  }
190  throw ex;
191  }
192  }
193 
207  public ContentTag addContentTag(Content content, TagName tagName) throws TskCoreException {
208  return addContentTag(content, tagName, "", -1, -1);
209  }
210 
225  public ContentTag addContentTag(Content content, TagName tagName, String comment) throws TskCoreException {
226  return addContentTag(content, tagName, comment, -1, -1);
227  }
228 
245  public ContentTag addContentTag(Content content, TagName tagName, String comment, long beginByteOffset, long endByteOffset) throws TskCoreException {
246  ContentTag tag;
247  tag = caseDb.addContentTag(content, tagName, comment, beginByteOffset, endByteOffset);
248  try {
250  } catch (IllegalStateException ex) {
251  throw new TskCoreException("Added a tag to a closed case", ex);
252  }
253  return tag;
254  }
255 
264  public void deleteContentTag(ContentTag tag) throws TskCoreException {
265  caseDb.deleteContentTag(tag);
266  try {
268  } catch (IllegalStateException ex) {
269  throw new TskCoreException("Deleted a tag from a closed case", ex);
270  }
271  }
272 
281  public synchronized List<ContentTag> getAllContentTags() throws TskCoreException {
282  return caseDb.getAllContentTags();
283  }
284 
297  public synchronized long getContentTagsCountByTagName(TagName tagName) throws TskCoreException {
298  return caseDb.getContentTagsCountByTagName(tagName);
299  }
300 
311  public synchronized ContentTag getContentTagByTagID(long tagId) throws TskCoreException {
312  return caseDb.getContentTagByID(tagId);
313  }
314 
326  public synchronized List<ContentTag> getContentTagsByTagName(TagName tagName) throws TskCoreException {
327  return caseDb.getContentTagsByTagName(tagName);
328  }
329 
341  public synchronized List<ContentTag> getContentTagsByContent(Content content) throws TskCoreException {
342  return caseDb.getContentTagsByContent(content);
343  }
344 
359  return addBlackboardArtifactTag(artifact, tagName, "");
360  }
361 
376  public synchronized BlackboardArtifactTag addBlackboardArtifactTag(BlackboardArtifact artifact, TagName tagName, String comment) throws TskCoreException {
377  BlackboardArtifactTag tag = caseDb.addBlackboardArtifactTag(artifact, tagName, comment);
378  try {
380  } catch (IllegalStateException ex) {
381  throw new TskCoreException("Added a tag to a closed case", ex);
382  }
383  return tag;
384  }
385 
395  caseDb.deleteBlackboardArtifactTag(tag);
396  try {
398  } catch (IllegalStateException ex) {
399  throw new TskCoreException("Deleted a tag from a closed case", ex);
400  }
401  }
402 
411  public synchronized List<BlackboardArtifactTag> getAllBlackboardArtifactTags() throws TskCoreException {
412  return caseDb.getAllBlackboardArtifactTags();
413  }
414 
427  public synchronized long getBlackboardArtifactTagsCountByTagName(TagName tagName) throws TskCoreException {
428  return caseDb.getBlackboardArtifactTagsCountByTagName(tagName);
429  }
430 
442  return caseDb.getBlackboardArtifactTagByID(tagId);
443  }
444 
458  public synchronized List<BlackboardArtifactTag> getBlackboardArtifactTagsByTagName(TagName tagName) throws TskCoreException {
459  return caseDb.getBlackboardArtifactTagsByTagName(tagName);
460  }
461 
473  public synchronized List<BlackboardArtifactTag> getBlackboardArtifactTagsByArtifact(BlackboardArtifact artifact) throws TskCoreException {
474  return caseDb.getBlackboardArtifactTagsByArtifact(artifact);
475  }
476 
485  public static boolean containsIllegalCharacters(String content) {
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(";"));
496 
497  }
498 
502  public static class TagNameAlreadyExistsException extends Exception {
503 
504  private static final long serialVersionUID = 1L;
505  }
506 
517  @Deprecated
518  public synchronized boolean tagNameExists(String tagDisplayName) {
519  try {
520  Map<String, TagName> tagNames = getDisplayNamesToTagNamesMap();
521  return tagNames.containsKey(tagDisplayName) && (tagNames.get(tagDisplayName) != null);
522  } catch (TskCoreException ex) {
523  LOGGER.log(Level.SEVERE, "Error querying case database for tag names", ex);
524  return false;
525  }
526  }
527 
534  @Override
535  @Deprecated
536  public synchronized void close() throws IOException {
537  }
538 }
void notifyContentTagDeleted(ContentTag deletedTag)
Definition: Case.java:1429
synchronized BlackboardArtifactTag getBlackboardArtifactTagByTagID(long tagId)
long getBlackboardArtifactTagsCountByTagName(TagName tagName)
void notifyBlackBoardArtifactTagDeleted(BlackboardArtifactTag deletedTag)
Definition: Case.java:1451
synchronized TagName addTagName(String displayName)
BlackboardArtifactTag getBlackboardArtifactTagByID(long artifactTagID)
List< BlackboardArtifactTag > getBlackboardArtifactTagsByArtifact(BlackboardArtifact artifact)
synchronized BlackboardArtifactTag addBlackboardArtifactTag(BlackboardArtifact artifact, TagName tagName, String comment)
synchronized List< ContentTag > getContentTagsByTagName(TagName tagName)
static boolean containsIllegalCharacters(String content)
synchronized void deleteBlackboardArtifactTag(BlackboardArtifactTag tag)
synchronized List< BlackboardArtifactTag > getAllBlackboardArtifactTags()
ContentTag getContentTagByID(long contentTagID)
synchronized TagName addTagName(String displayName, String description, TagName.HTML_COLOR color)
synchronized List< BlackboardArtifactTag > getBlackboardArtifactTagsByArtifact(BlackboardArtifact artifact)
synchronized List< BlackboardArtifactTag > getBlackboardArtifactTagsByTagName(TagName tagName)
ContentTag addContentTag(Content content, TagName tagName)
synchronized boolean tagNameExists(String tagDisplayName)
BlackboardArtifactTag addBlackboardArtifactTag(BlackboardArtifact artifact, TagName tagName, String comment)
ContentTag addContentTag(Content content, TagName tagName, String comment, long beginByteOffset, long endByteOffset)
synchronized TagName addTagName(String displayName, String description)
void deleteBlackboardArtifactTag(BlackboardArtifactTag tag)
List< ContentTag > getContentTagsByTagName(TagName tagName)
synchronized Map< String, TagName > getDisplayNamesToTagNamesMap()
synchronized long getBlackboardArtifactTagsCountByTagName(TagName tagName)
List< BlackboardArtifactTag > getBlackboardArtifactTagsByTagName(TagName tagName)
synchronized BlackboardArtifactTag addBlackboardArtifactTag(BlackboardArtifact artifact, TagName tagName)
void notifyBlackBoardArtifactTagAdded(BlackboardArtifactTag newTag)
Definition: Case.java:1440
List< BlackboardArtifactTag > getAllBlackboardArtifactTags()
long getContentTagsCountByTagName(TagName tagName)
synchronized static Logger getLogger(String name)
Definition: Logger.java:161
List< ContentTag > getContentTagsByContent(Content content)
TagName addTagName(String displayName, String description, TagName.HTML_COLOR color)
void notifyContentTagAdded(ContentTag newTag)
Definition: Case.java:1418
ContentTag addContentTag(Content content, TagName tagName, String comment, long beginByteOffset, long endByteOffset)
synchronized long getContentTagsCountByTagName(TagName tagName)
synchronized ContentTag getContentTagByTagID(long tagId)
synchronized List< ContentTag > getContentTagsByContent(Content content)
synchronized List< ContentTag > getAllContentTags()
ContentTag addContentTag(Content content, TagName tagName, String comment)

Copyright © 2012-2016 Basis Technology. Generated on: Mon Apr 24 2017
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.