diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/navpanel/GroupCellFactory.java b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/navpanel/GroupCellFactory.java index 31dbfe3286..c5497d31af 100644 --- a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/navpanel/GroupCellFactory.java +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/navpanel/GroupCellFactory.java @@ -189,7 +189,7 @@ class GroupCellFactory { @Override public String getGroupName() { return Optional.ofNullable(getItem()) - .map(treeNode -> StringUtils.defaultIfBlank(treeNode.getPath(), DrawableGroup.getBlankGroupName())) + .map(treeNode -> StringUtils.defaultIfBlank(treeNode.getDisplayName(), DrawableGroup.getBlankGroupName())) .orElse(""); } diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/navpanel/GroupTree.java b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/navpanel/GroupTree.java index 42fbfbec0b..b51124e391 100644 --- a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/navpanel/GroupTree.java +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/navpanel/GroupTree.java @@ -158,6 +158,11 @@ final public class GroupTree extends NavPanel> { String path = g.getGroupByValueDislpayName(); if (g.getGroupByAttribute() == DrawableAttribute.PATH) { String[] cleanPathTokens = StringUtils.stripStart(path, "/").split("/"); + + // Append obj id to the top level data source name to allow for duplicate data source names + if (g.getGroupKey().getDataSourceObjId() > 0) { + cleanPathTokens[0] = cleanPathTokens[0].concat(String.format("(Id: %d)", g.getGroupKey().getDataSourceObjId())); + } return Arrays.asList(cleanPathTokens); } else { String stripStart = StringUtils.strip(path, "/"); diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/navpanel/GroupTreeNode.java b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/navpanel/GroupTreeNode.java index 8cb32336c2..9101d89147 100644 --- a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/navpanel/GroupTreeNode.java +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/navpanel/GroupTreeNode.java @@ -27,6 +27,7 @@ class GroupTreeNode { private final String path; private DrawableGroup group; + private final String dispName; public String getPath() { return path; @@ -36,9 +37,20 @@ class GroupTreeNode { return group; } - GroupTreeNode(String path, DrawableGroup group) { + public String getDisplayName() { + return dispName; + } + + GroupTreeNode(String path, DrawableGroup group) { this.path = path; this.group = group; + + // If the path has a obj id, strip it for display purpose. + if (path.toLowerCase().contains(("(Id: ").toLowerCase())) { + dispName = path.substring(0, path.indexOf("(Id: ")); + } else { + dispName = path; + } } void setGroup(DrawableGroup g) {