19 package org.sleuthkit.autopsy.datamodel;
21 import java.beans.PropertyChangeEvent;
22 import java.beans.PropertyChangeListener;
23 import java.util.Collections;
24 import java.util.Comparator;
25 import java.util.EnumSet;
26 import java.util.List;
27 import java.util.Observable;
28 import java.util.Observer;
30 import java.util.logging.Level;
31 import org.openide.nodes.ChildFactory;
32 import org.openide.nodes.Children;
33 import org.openide.nodes.Node;
34 import org.openide.nodes.Sheet;
35 import org.openide.util.NbBundle;
36 import org.openide.util.lookup.Lookups;
59 private final static String
DISPLAY_NAME = NbBundle.getMessage(
RootNode.class,
"TagsNode.displayName.text");
63 private final String
ICON_PATH =
"org/sleuthkit/autopsy/images/tag-folder-blue-icon-16.png";
72 this.filteringDSObjId = dsObjId;
84 long filteringDataSourceObjId() {
89 public <T> T accept(AutopsyItemVisitor<T> visitor) {
90 return visitor.visit(
this);
115 super(Children.create(
new TagNameNodeFactory(objId),
true), Lookups.singleton(DISPLAY_NAME));
116 super.setName(DISPLAY_NAME);
117 super.setDisplayName(DISPLAY_NAME);
118 this.setIconBaseWithExtension(ICON_PATH);
128 return visitor.
visit(
this);
133 Sheet propertySheet = super.createSheet();
134 Sheet.Set properties = propertySheet.get(Sheet.PROPERTIES);
135 if (properties == null) {
136 properties = Sheet.createPropertiesSet();
137 propertySheet.put(properties);
139 properties.put(
new NodeProperty<>(NbBundle.getMessage(
this.getClass(),
"TagsNode.createSheet.name.name"),
140 NbBundle.getMessage(
this.getClass(),
"TagsNode.createSheet.name.displayName"),
"", getName()));
141 return propertySheet;
146 return getClass().getName();
168 private final PropertyChangeListener
pcl =
new PropertyChangeListener() {
170 public void propertyChange(PropertyChangeEvent evt) {
171 String eventType = evt.getPropertyName();
210 if (evt.getNewValue() == null) {
223 this.filteringDSObjId = objId;
232 tagResults.addObserver(
this);
239 tagResults.deleteObserver(
this);
245 List<TagName> tagNamesInUse;
247 String userName = System.getProperty(USER_NAME_PROPERTY);
248 tagNamesInUse = (filteringDSObjId > 0)
252 tagNamesInUse = (filteringDSObjId > 0)
256 Collections.sort(tagNamesInUse,
new Comparator<TagName>() {
258 public int compare(TagName o1, TagName o2) {
262 keys.addAll(tagNamesInUse);
275 public void update(Observable o, Object arg) {
287 private final String ICON_PATH =
"org/sleuthkit/autopsy/images/tag-folder-blue-icon-16.png";
292 super(Children.create(
new TagTypeNodeFactory(tagName),
true), Lookups.singleton(NbBundle.getMessage(
TagNameNode.class,
"TagNameNode.namePlusTags.text", tagName.getDisplayName())));
297 setIconBaseWithExtension(BOOKMARK_TAG_ICON_PATH);
299 setIconBaseWithExtension(ICON_PATH);
301 tagResults.addObserver(
this);
309 String userName = System.getProperty(USER_NAME_PROPERTY);
310 if (filteringDSObjId > 0) {
318 if (filteringDSObjId > 0) {
327 Logger.
getLogger(
TagNameNode.class.getName()).log(Level.SEVERE,
"Failed to get tags count for " + tagName.getDisplayName() +
" tag name", ex);
334 Sheet propertySheet = super.createSheet();
335 Sheet.Set properties = propertySheet.get(Sheet.PROPERTIES);
336 if (properties == null) {
337 properties = Sheet.createPropertiesSet();
338 propertySheet.put(properties);
340 properties.put(
new NodeProperty<>(NbBundle.getMessage(
this.getClass(),
"TagNameNode.createSheet.name.name"),
341 NbBundle.getMessage(
this.getClass(),
"TagNameNode.createSheet.name.displayName"), tagName.getDescription(), getName()));
342 return propertySheet;
349 return visitor.
visit(
this);
358 public void update(Observable o, Object arg) {
364 return getClass().getName();
385 keys.add(CONTENT_TAG_TYPE_NODE_KEY);
386 keys.add(BLACKBOARD_ARTIFACT_TAG_TYPE_NODE_KEY);
392 if (CONTENT_TAG_TYPE_NODE_KEY.equals(key)) {
394 }
else if (BLACKBOARD_ARTIFACT_TAG_TYPE_NODE_KEY.equals(key)) {
413 private final String ICON_PATH =
"org/sleuthkit/autopsy/images/tag-folder-blue-icon-16.png";
419 super.setName(CONTENT_DISPLAY_NAME);
421 this.setIconBaseWithExtension(ICON_PATH);
422 tagResults.addObserver(
this);
430 String userName = System.getProperty(USER_NAME_PROPERTY);
431 tagsCount = (filteringDSObjId > 0)
435 tagsCount = (filteringDSObjId > 0)
442 super.setDisplayName(CONTENT_DISPLAY_NAME +
" (" + tagsCount +
")");
447 Sheet propertySheet = super.createSheet();
448 Sheet.Set properties = propertySheet.get(Sheet.PROPERTIES);
449 if (properties == null) {
450 properties = Sheet.createPropertiesSet();
451 propertySheet.put(properties);
453 properties.put(
new NodeProperty<>(NbBundle.getMessage(
this.getClass(),
"ContentTagTypeNode.createSheet.name.name"),
454 NbBundle.getMessage(
this.getClass(),
"ContentTagTypeNode.createSheet.name.displayName"),
"", getName()));
455 return propertySheet;
460 return visitor.
visit(
this);
469 public void update(Observable o, Object arg) {
475 return getClass().getName();
486 tagResults.addObserver(
this);
493 List<ContentTag> contentTags = (filteringDSObjId > 0)
497 String userName = System.getProperty(USER_NAME_PROPERTY);
498 for (ContentTag tag : contentTags) {
499 if (userName.equals(tag.getUserName())) {
504 keys.addAll(contentTags);
515 return new ContentTagNode(key);
519 public void update(Observable o, Object arg) {
535 private final String ICON_PATH =
"org/sleuthkit/autopsy/images/tag-folder-blue-icon-16.png";
540 super.setName(ARTIFACT_DISPLAY_NAME);
541 this.setIconBaseWithExtension(ICON_PATH);
543 tagResults.addObserver(
this);
550 String userName = System.getProperty(USER_NAME_PROPERTY);
551 tagsCount = (filteringDSObjId > 0)
555 tagsCount = (filteringDSObjId > 0)
562 super.setDisplayName(ARTIFACT_DISPLAY_NAME +
" (" + tagsCount +
")");
567 Sheet propertySheet = super.createSheet();
568 Sheet.Set properties = propertySheet.get(Sheet.PROPERTIES);
569 if (properties == null) {
570 properties = Sheet.createPropertiesSet();
571 propertySheet.put(properties);
573 properties.put(
new NodeProperty<>(NbBundle.getMessage(
this.getClass(),
"BlackboardArtifactTagTypeNode.createSheet.name.name"),
574 NbBundle.getMessage(
this.getClass(),
"BlackboardArtifactTagTypeNode.createSheet.name.displayName"),
"", getName()));
575 return propertySheet;
580 return visitor.
visit(
this);
589 public void update(Observable o, Object arg) {
595 return getClass().getName();
606 tagResults.addObserver(
this);
610 protected boolean createKeys(List<BlackboardArtifactTag> keys) {
613 List<BlackboardArtifactTag> artifactTags = (filteringDSObjId > 0)
617 String userName = System.getProperty(USER_NAME_PROPERTY);
618 for (BlackboardArtifactTag tag : artifactTags) {
619 if (userName.equals(tag.getUserName())) {
624 keys.addAll(artifactTags);
639 public void update(Observable o, Object arg) {
void update(Observable o, Object arg)
static synchronized IngestManager getInstance()
Node createNodeForKey(ContentTag key)
ContentTagTypeNode(TagName tagName)
void update(Observable o, Object arg)
T visit(DataSourcesNode in)
void removeIngestJobEventListener(final PropertyChangeListener listener)
boolean createKeys(List< ContentTag > keys)
static boolean showOnlyCurrentUserTags()
TagsManager getTagsManager()
void addIngestJobEventListener(final PropertyChangeListener listener)
BLACKBOARD_ARTIFACT_TAG_ADDED
synchronized static Logger getLogger(String name)
static Case getCurrentCaseThrows()
static void addEventTypeSubscriber(Set< Events > eventTypes, PropertyChangeListener subscriber)
static void removeEventTypeSubscriber(Set< Events > eventTypes, PropertyChangeListener subscriber)
BLACKBOARD_ARTIFACT_TAG_DELETED