18package org.sleuthkit.autopsy.datamodel;
20import java.beans.PropertyChangeEvent;
21import java.beans.PropertyChangeListener;
22import java.util.ArrayList;
23import java.util.Arrays;
24import java.util.Collections;
25import java.util.EnumSet;
27import java.util.Objects;
29import java.util.logging.Level;
30import java.util.stream.Collectors;
31import org.apache.commons.collections.CollectionUtils;
32import org.openide.nodes.ChildFactory;
33import org.openide.nodes.Node;
34import org.openide.util.WeakListeners;
35import org.sleuthkit.autopsy.casemodule.Case;
36import org.sleuthkit.autopsy.casemodule.CasePreferences;
37import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException;
38import org.sleuthkit.autopsy.coreutils.Logger;
39import org.sleuthkit.datamodel.Person;
40import org.sleuthkit.datamodel.PersonManager;
41import org.sleuthkit.datamodel.SleuthkitCase;
42import org.sleuthkit.datamodel.SleuthkitVisitableItem;
43import org.sleuthkit.datamodel.TskCoreException;
63 .map(evt -> evt.name())
64 .collect(Collectors.toSet());
75 private final PropertyChangeListener
pcl =
new PropertyChangeListener() {
77 public void propertyChange(PropertyChangeEvent evt) {
78 String eventType = evt.getPropertyName();
86 private final PropertyChangeListener
weakPcl = WeakListeners.propertyChange(
pcl,
null);
116 List<Object> nodes = Collections.emptyList();
124 PersonManager personManager = tskCase.getPersonManager();
125 List<Person>
persons = personManager.getPersons();
127 if (!CollectionUtils.isEmpty(
persons)) {
129 .map(PersonGrouping::new)
131 .collect(Collectors.toList());
133 if (CollectionUtils.isNotEmpty(personManager.getHostsWithoutPersons())) {
138 nodes = tskCase.getHostManager().getAllHosts().stream()
139 .map(HostGrouping::new)
141 .collect(Collectors.toList());
149 List<Object> nodeList =
new ArrayList<>(Arrays.asList(
165 logger.log(Level.SEVERE,
"Failed to create tree because there is no current case", ex);
166 }
catch (TskCoreException ex) {
167 logger.log(Level.SEVERE,
"Failed to create tree because of an error querying the case database", ex);
187 if (key instanceof SleuthkitVisitableItem) {
192 logger.log(Level.SEVERE,
"Unknown key type: ", key.getClass().getName());
static void removeEventTypeSubscriber(Set< Events > eventTypes, PropertyChangeListener subscriber)
SleuthkitCase getSleuthkitCase()
static Case getCurrentCaseThrows()
static void addEventTypeSubscriber(Set< Events > eventTypes, PropertyChangeListener subscriber)
static Boolean getGroupItemsInTreeByDataSource()
synchronized static Logger getLogger(String name)
static final Set< Case.Events > EVENTS_OF_INTEREST
static final Set< String > EVENTS_OF_INTEREST_NAMES
Node createNodeForKey(Object key)
boolean createKeys(List< Object > list)
static final Logger logger
final PropertyChangeListener pcl
final PropertyChangeListener weakPcl
static boolean isCyberTriageDatabase(SleuthkitCase skCase)
HOSTS_REMOVED_FROM_PERSON