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;
33 import org.sleuthkit.datamodel.BlackboardArtifact;
34 import org.sleuthkit.datamodel.BlackboardArtifactTag;
35 import org.sleuthkit.datamodel.Content;
36 import org.sleuthkit.datamodel.ContentTag;
37 import org.sleuthkit.datamodel.SleuthkitCase;
38 import org.sleuthkit.datamodel.TagName;
39 import org.sleuthkit.datamodel.TskCoreException;
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 
358  public synchronized BlackboardArtifactTag addBlackboardArtifactTag(BlackboardArtifact artifact, TagName tagName) throws TskCoreException {
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 
394  public synchronized void deleteBlackboardArtifactTag(BlackboardArtifactTag tag) throws TskCoreException {
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 
441  public synchronized BlackboardArtifactTag getBlackboardArtifactTagByTagID(long tagId) throws TskCoreException {
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:731
synchronized BlackboardArtifactTag getBlackboardArtifactTagByTagID(long tagId)
void notifyBlackBoardArtifactTagDeleted(BlackboardArtifactTag deletedTag)
Definition: Case.java:753
synchronized TagName addTagName(String displayName)
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()
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)
ContentTag addContentTag(Content content, TagName tagName, String comment, long beginByteOffset, long endByteOffset)
synchronized TagName addTagName(String displayName, String description)
synchronized Map< String, TagName > getDisplayNamesToTagNamesMap()
synchronized long getBlackboardArtifactTagsCountByTagName(TagName tagName)
synchronized BlackboardArtifactTag addBlackboardArtifactTag(BlackboardArtifact artifact, TagName tagName)
void notifyBlackBoardArtifactTagAdded(BlackboardArtifactTag newTag)
Definition: Case.java:742
synchronized static Logger getLogger(String name)
Definition: Logger.java:161
void notifyContentTagAdded(ContentTag newTag)
Definition: Case.java:720
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 Jan 2 2017
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.