From 9bce2c6694f3f1d174053b53d9c6f62e5f9e8c73 Mon Sep 17 00:00:00 2001 From: gi1tee Date: Mon, 8 Jul 2024 10:53:16 +0800 Subject: [PATCH] update archnum with order --- .../easysoftware/common/utils/SortUtil.java | 2 +- .../archnum/converter/ArchNumConverter.java | 45 +++++++++++++++---- 2 files changed, 38 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/easysoftware/common/utils/SortUtil.java b/src/main/java/com/easysoftware/common/utils/SortUtil.java index d414dba..1c19cdc 100644 --- a/src/main/java/com/easysoftware/common/utils/SortUtil.java +++ b/src/main/java/com/easysoftware/common/utils/SortUtil.java @@ -31,7 +31,7 @@ public final class SortUtil { /** * The order of tags. */ - private static final List ORDERS = List.of("RPM", "IMAGE", "EPKG"); + private static final List ORDERS = List.of("FIELD", "RPM", "IMAGE", "EPKG", "OEPKG"); /** * sort the tags. diff --git a/src/main/java/com/easysoftware/infrastructure/archnum/converter/ArchNumConverter.java b/src/main/java/com/easysoftware/infrastructure/archnum/converter/ArchNumConverter.java index 6118414..f865d53 100644 --- a/src/main/java/com/easysoftware/infrastructure/archnum/converter/ArchNumConverter.java +++ b/src/main/java/com/easysoftware/infrastructure/archnum/converter/ArchNumConverter.java @@ -11,12 +11,15 @@ package com.easysoftware.infrastructure.archnum.converter; +import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import org.springframework.stereotype.Component; +import com.easysoftware.common.utils.SortUtil; import com.easysoftware.infrastructure.archnum.dataobject.ArchNumDO; @Component @@ -27,13 +30,39 @@ public class ArchNumConverter { * @return map. */ public Map>> toMap(List list) { - return list.stream().collect( - Collectors.groupingBy( - ArchNumDO::getOs, Collectors.groupingBy( - ArchNumDO::getType, Collectors.toMap( - ArchNumDO::getArchName, ArchNumDO::getCount) - ) - ) - ); + if (list == null || list.isEmpty()) { + return Collections.emptyMap(); + } + + Map> osMap = list.stream().collect(Collectors.groupingBy(ArchNumDO::getOs)); + Map>> res = new HashMap<>(); + for (Map.Entry> entry : osMap.entrySet()) { + Map> typeMap = toMapPerOs(entry.getValue()); + res.put(entry.getKey(), typeMap); + } + return res; + } + + /** + * convert list of ArchNumDO to map for each os. + * @param list list of ArchNumDO. + * @return map. + */ + public Map> toMapPerOs(List list) { + if (list == null || list.isEmpty()) { + return Collections.emptyMap(); + } + + Map> typeMap = list.stream().collect(Collectors.groupingBy(ArchNumDO::getType)); + List orderedTypes = SortUtil.sortTags(typeMap.keySet()); + Map> res = new HashMap<>(); + for (String orderedType : orderedTypes) { + List aList = typeMap.get(orderedType); + Map aMap = aList.stream().collect( + Collectors.toMap(ArchNumDO::getArchName, ArchNumDO::getCount) + ); + res.put(orderedType, aMap); + } + return res; } } -- Gitee