From 2b14f2f49bc125e92f0520400a7ab6b0a04b46d8 Mon Sep 17 00:00:00 2001 From: Konstantin Aleev Date: Mon, 28 Aug 2017 12:39:58 +0300 Subject: [PATCH] RunDashboard: simplify grouping rule's collector --- .../dashboard/tree/RunDashboardTreeStructure.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/execution/dashboard/tree/RunDashboardTreeStructure.java b/platform/lang-impl/src/com/intellij/execution/dashboard/tree/RunDashboardTreeStructure.java index 73548150ebf6..82bb1fe4406b 100644 --- a/platform/lang-impl/src/com/intellij/execution/dashboard/tree/RunDashboardTreeStructure.java +++ b/platform/lang-impl/src/com/intellij/execution/dashboard/tree/RunDashboardTreeStructure.java @@ -95,19 +95,16 @@ public class RunDashboardTreeStructure extends AbstractTreeStructureBase { } final List remaining = new ArrayList<>(rules); DashboardGroupingRule rule = remaining.remove(0); - Map> groups = nodes.stream().collect( - HashMap::new, - (map, node) -> map.computeIfAbsent(rule.getGroup(node), key -> new ArrayList<>()).add(node), - (firstMap, secondMap) -> firstMap.forEach((key, value) -> value.addAll(secondMap.get(key))) - ); + Map, List> groups = nodes.stream().collect( + Collectors.groupingBy(node -> Optional.ofNullable(rule.getGroup(node)))); final List result = new ArrayList<>(); final List ungroupedNodes = new ArrayList<>(); groups.forEach((group, groupedNodes) -> { - if (group == null || (!rule.shouldGroupSingleNodes() && groupedNodes.size() == 1)) { + if (!group.isPresent() || (!rule.shouldGroupSingleNodes() && groupedNodes.size() == 1)) { ungroupedNodes.addAll(group(project, parent, remaining, groupedNodes)); } else { - GroupingNode node = new GroupingNode(project, parent.getValue(), group); + GroupingNode node = new GroupingNode(project, parent.getValue(), group.get()); node.addChildren(group(project, node, remaining, groupedNodes)); result.add(node); }