diff --git a/src/main/java/io/jenkins/plugins/reporter/charts/ItemSeriesBuilder.java b/src/main/java/io/jenkins/plugins/reporter/charts/ItemSeriesBuilder.java index fa29869..7a885fa 100644 --- a/src/main/java/io/jenkins/plugins/reporter/charts/ItemSeriesBuilder.java +++ b/src/main/java/io/jenkins/plugins/reporter/charts/ItemSeriesBuilder.java @@ -5,10 +5,7 @@ import io.jenkins.plugins.reporter.model.Item; import org.apache.commons.collections.ListUtils; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -50,18 +47,21 @@ protected Map computeSeries(ReportAction reportAction) { return items.stream().collect(Collectors.toMap(Item::getId, Item::getTotal)); } - //TODO: fix missing recursion for aggregation - return reportAction.getReport().getResult().aggregate(i -> i.getId().equals(item.getId())); + return reportAction.getReport().getResult().aggregate(items); } private List findItems(String id, List items) { for (Item i: items) { - if (i.getId().equals(id) && i.hasItems()) { - return i.hasItems() ? i.getItems() : findItems(id, i.getItems()); + if (i.getId().equals(id)) { + return i.hasItems() ? i.getItems() : Collections.singletonList(i); + } + + if (i.hasItems()) { + return findItems(id, i.getItems()); } } - return new ArrayList<>(); + return Collections.emptyList(); } } \ No newline at end of file diff --git a/src/main/java/io/jenkins/plugins/reporter/model/Result.java b/src/main/java/io/jenkins/plugins/reporter/model/Result.java index 347cf4e..d28d98d 100644 --- a/src/main/java/io/jenkins/plugins/reporter/model/Result.java +++ b/src/main/java/io/jenkins/plugins/reporter/model/Result.java @@ -67,14 +67,13 @@ public void setColors(Map colors) { /** * Aggregates the results of all items. The values are added together, grouped by key. * - * @param filter - * the filter to evaluate on the result. + * @param items + * the items to aggregate the childs for. * @return the aggregated result. */ - public LinkedHashMap aggregate(Predicate filter) { - return getItems() + public LinkedHashMap aggregate(List items) { + return items .stream() - .filter(filter) .map(Item::getResult) .flatMap(map -> map.entrySet().stream()) .collect(Collectors.groupingBy(Map.Entry::getKey, LinkedHashMap::new, Collectors.summingInt(Map.Entry::getValue))); @@ -86,6 +85,6 @@ public LinkedHashMap aggregate(Predicate filter) * @return the aggregated result. */ public LinkedHashMap aggregate() { - return aggregate(item -> {return true;}); + return aggregate(getItems()); } }