19 package org.sleuthkit.autopsy.timeline.ui.detailview.tree;
21 import java.util.Comparator;
23 import java.util.concurrent.ConcurrentHashMap;
24 import javafx.application.Platform;
25 import javafx.collections.FXCollections;
26 import javafx.scene.control.TreeItem;
29 class EventTypeTreeItem
extends NavTreeItem {
32 private final Map<String, EventDescriptionTreeItem> childMap =
new ConcurrentHashMap<>();
34 private final Comparator<TreeItem<NavTreeNode>> comparator = TreeComparator.Description;
36 EventTypeTreeItem(AggregateEvent g) {
37 setValue(
new NavTreeNode(g.getType().getBaseType(), g.getType().getBaseType().getDisplayName(), 0));
41 public int getCount() {
42 return getValue().getCount();
52 public void insert(AggregateEvent g) {
54 EventDescriptionTreeItem treeItem = childMap.get(g.getDescription());
55 if (treeItem == null) {
56 final EventDescriptionTreeItem newTreeItem =
new EventDescriptionTreeItem(g);
57 newTreeItem.setExpanded(
true);
58 childMap.put(g.getDescription(), newTreeItem);
60 Platform.runLater(() -> {
61 synchronized (getChildren()) {
62 getChildren().add(newTreeItem);
63 FXCollections.sort(getChildren(), comparator);
69 Platform.runLater(() -> {
70 NavTreeNode value1 = getValue();
71 setValue(
new NavTreeNode(value1.getType().getBaseType(), value1.getType().getBaseType().getDisplayName(), childMap.values().stream().mapToInt(EventDescriptionTreeItem::getCount).sum()));
77 public TreeItem<NavTreeNode> findTreeItemForEvent(AggregateEvent t) {
78 if (t.getType().getBaseType() == getValue().getType().getBaseType()) {
80 for (TreeItem<NavTreeNode> child : getChildren()) {
81 final TreeItem<NavTreeNode> findTreeItemForEvent = ((NavTreeItem) child).findTreeItemForEvent(t);
82 if (findTreeItemForEvent != null) {
83 return findTreeItemForEvent;
91 public void resort(Comparator<TreeItem<NavTreeNode>> comp) {
92 FXCollections.sort(getChildren(), comp);