From c3709ee83fc89eff4a64cc7bf75d319ec386cd0a Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Thu, 31 Mar 2022 20:02:12 -0400 Subject: [PATCH] fix in root factory --- .../autopsy/mainui/nodes/RootFactory.java | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/mainui/nodes/RootFactory.java b/Core/src/org/sleuthkit/autopsy/mainui/nodes/RootFactory.java index 832bdab2fe..6bacc95dfd 100644 --- a/Core/src/org/sleuthkit/autopsy/mainui/nodes/RootFactory.java +++ b/Core/src/org/sleuthkit/autopsy/mainui/nodes/RootFactory.java @@ -18,8 +18,6 @@ */ package org.sleuthkit.autopsy.mainui.nodes; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; @@ -29,11 +27,9 @@ import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.logging.Level; import java.util.stream.Collectors; -import org.openide.nodes.ChildFactory; import org.openide.nodes.Children; import org.openide.nodes.Node; import org.openide.util.NbBundle.Messages; -import org.openide.util.WeakListeners; import org.openide.util.lookup.Lookups; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.CasePreferences; @@ -107,11 +103,13 @@ public class RootFactory { } } + @SuppressWarnings("unchecked") private TreeNode downCastNode(TreeNode orig) { return (TreeNode) orig; } @Override + @SuppressWarnings("unchecked") protected TreeNode createNewNode(TreeItemDTO rowData) { if (rowData.getSearchParams() instanceof HostSearchParams) { return downCastNode(HostNode.getPersonHostViewNode((TreeItemDTO) rowData)); @@ -124,8 +122,19 @@ public class RootFactory { } } - private TreeItemDTO downCastTreeItem(TreeItemDTO orig) { - return (TreeItemDTO) orig; + /** + * This creates a modified tree item dto where the id has a prefix (to differentiate switches between person and host). + * @param orig The original tree item. + * @return The modified tree item + */ + private TreeItemDTO getModifiedIdTreeItem(TreeItemDTO orig) { + return new TreeItemDTO( + orig.getTypeId(), + orig.getSearchParams(), + orig.getTypeId() + "_" + orig.getId(), + orig.getDisplayName(), + orig.getDisplayCount() + ); } @Override @@ -135,11 +144,11 @@ public class RootFactory { TreeResultsDTO persons = MainDAO.getInstance().getHostPersonDAO().getAllPersons(); if (persons.getItems().isEmpty() || (persons.getItems().size() == 1 && persons.getItems().get(0).getSearchParams().getPerson() == null)) { toReturn.addAll(MainDAO.getInstance().getHostPersonDAO().getAllHosts().getItems().stream() - .map(this::downCastTreeItem) + .map(this::getModifiedIdTreeItem) .collect(Collectors.toList())); } else { toReturn.addAll(persons.getItems().stream() - .map(this::downCastTreeItem) + .map(this::getModifiedIdTreeItem) .collect(Collectors.toList())); } } catch (ExecutionException | IllegalArgumentException ex) {