diff --git a/src/main/java/com/easysoftware/common/utils/QueryWrapperUtil.java b/src/main/java/com/easysoftware/common/utils/QueryWrapperUtil.java index 0ecd3a43f3a2acb363d6c06a0c88e90fb4a88d02..83ef9ec96e5a352756afa9c3d2767db9d1096946 100644 --- a/src/main/java/com/easysoftware/common/utils/QueryWrapperUtil.java +++ b/src/main/java/com/easysoftware/common/utils/QueryWrapperUtil.java @@ -22,12 +22,7 @@ import org.slf4j.LoggerFactory; import java.lang.reflect.Field; import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - public final class QueryWrapperUtil { @@ -151,35 +146,5 @@ public final class QueryWrapperUtil { } return res; } - - /** - * Sorts the list of strings representing operating systems in ascending order. - * - * @param colList The list of strings representing operating systems to be sorted - * @return A sorted list of strings representing operating systems in ascending order - */ - public static List sortOsColumn(Collection colList) { - Map> partMap = colList.stream() - .collect(Collectors.partitioningBy(e -> !e.contains("preview"))); - List con = partMap.get(true); - List don = partMap.get(false); - Collections.sort(con, Collections.reverseOrder()); - con.addAll(don); - return con; - } - - /** - * Sorts the list of strings representing category in ascending order. - * - * @param colList The list of strings representing category to be sorted - * @return A sorted list of strings representing category in ascending order - */ - public static List sortCategoryColumn(List colList) { - if (colList.contains("其他")) { - colList.remove("其他"); - colList.add("其他"); - } - return colList; - } } diff --git a/src/main/java/com/easysoftware/common/utils/SortUtil.java b/src/main/java/com/easysoftware/common/utils/SortUtil.java index 93b73fc6f32cb8779de62d33f7cf0329fef98b1e..05d6d93d24026a3c9f58be2a7f21b7a52e4f66a1 100644 --- a/src/main/java/com/easysoftware/common/utils/SortUtil.java +++ b/src/main/java/com/easysoftware/common/utils/SortUtil.java @@ -85,4 +85,76 @@ public final class SortUtil { noPreview.addAll(preview); return noPreview; } + + /** + * sort the list. + * @param column column. + * @param coll list. + * @return sorted list. + */ + public static List sortColumn(String column, Collection coll) { + if (column == null || coll == null || coll.isEmpty()) { + return Collections.emptyList(); + } + + if ("os".equals(column)) { + return SortUtil.sortOsColumn(coll); + } else if ("category".equals(column)) { + return SortUtil.sortCategoryColumn(coll); + } else if ("arch".equals(column)) { + return SortUtil.sortArch(coll); + } else { + return Collections.emptyList(); + } + } + + /** + * Sorts the list of strings representing operating systems in ascending order. + * + * @param colList The list of strings representing operating systems to be sorted + * @return A sorted list of strings representing operating systems in ascending order + */ + public static List sortOsColumn(Collection colList) { + if (colList == null || colList.isEmpty()) { + return Collections.emptyList(); + } + + Map> partMap = colList.stream() + .collect(Collectors.partitioningBy(e -> !e.contains("preview"))); + List con = partMap.get(true); + List don = partMap.get(false); + Collections.sort(con, Collections.reverseOrder()); + con.addAll(don); + return con; + } + + /** + * Sorts the list of strings representing category in ascending order. + * + * @param colList The list of strings representing category to be sorted + * @return A sorted list of strings representing category in ascending order + */ + public static List sortCategoryColumn(Collection colList) { + if (colList == null || colList.isEmpty()) { + return Collections.emptyList(); + } + List list = colList.stream().sorted().collect(Collectors.toList()); + if (list.contains("其他")) { + list.remove("其他"); + list.add("其他"); + } + return list; + } + + /** + * sort arch. + * @param list origin list. + * @return sorted list. + */ + public static List sortArch(Collection list) { + if (list == null || list.isEmpty()) { + return Collections.emptyList(); + } + return list.stream().sorted().collect(Collectors.toList()); + } } diff --git a/src/main/java/com/easysoftware/infrastructure/applicationpackage/gatewayimpl/ApplicationPackageGatewayImpl.java b/src/main/java/com/easysoftware/infrastructure/applicationpackage/gatewayimpl/ApplicationPackageGatewayImpl.java index d97a0bffb7b006f2e71541e5a388199a6eac0e38..07dc7231a86978e3cda38644c7949fc8fbf7f149 100644 --- a/src/main/java/com/easysoftware/infrastructure/applicationpackage/gatewayimpl/ApplicationPackageGatewayImpl.java +++ b/src/main/java/com/easysoftware/infrastructure/applicationpackage/gatewayimpl/ApplicationPackageGatewayImpl.java @@ -24,6 +24,7 @@ import com.easysoftware.application.applicationpackage.vo.ApplicationPackageTags import com.easysoftware.common.exception.ParamErrorException; import com.easysoftware.common.utils.ClassField; import com.easysoftware.common.utils.QueryWrapperUtil; +import com.easysoftware.common.utils.SortUtil; import com.easysoftware.domain.applicationpackage.gateway.ApplicationPackageGateway; import com.easysoftware.infrastructure.applicationpackage.gatewayimpl.converter.ApplicationPackageConverter; import com.easysoftware.infrastructure.applicationpackage.gatewayimpl.dataobject.ApplicationPackageDO; @@ -198,12 +199,7 @@ public class ApplicationPackageGatewayImpl implements ApplicationPackageGateway Map> res = new HashMap<>(); for (String column : columns) { List colList = queryColumn(column); - if ("os".equals(column)) { - colList = QueryWrapperUtil.sortOsColumn(colList); - } - if ("category".equals(column)) { - colList = QueryWrapperUtil.sortCategoryColumn(colList); - } + colList = SortUtil.sortColumn(column, colList); res.put(column, colList); } return res; diff --git a/src/main/java/com/easysoftware/infrastructure/applicationversion/gatewayimpl/ApplicationVersionGatewayImpl.java b/src/main/java/com/easysoftware/infrastructure/applicationversion/gatewayimpl/ApplicationVersionGatewayImpl.java index 02df5fee3bfba3630646185a5310a7400b740beb..2525f2a8e8504993fdb5a4245d5d8ca070c04be9 100644 --- a/src/main/java/com/easysoftware/infrastructure/applicationversion/gatewayimpl/ApplicationVersionGatewayImpl.java +++ b/src/main/java/com/easysoftware/infrastructure/applicationversion/gatewayimpl/ApplicationVersionGatewayImpl.java @@ -16,6 +16,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.easysoftware.application.applicationversion.dto.ApplicationVersionSearchCondition; import com.easysoftware.common.exception.ParamErrorException; import com.easysoftware.common.utils.QueryWrapperUtil; +import com.easysoftware.common.utils.SortUtil; import com.easysoftware.domain.applicationversion.ApplicationVersion; import com.easysoftware.domain.applicationversion.gateway.ApplicationVersionGateway; import com.easysoftware.infrastructure.applicationversion.gatewayimpl.converter.ApplicationVersionConvertor; @@ -108,7 +109,7 @@ public class ApplicationVersionGatewayImpl implements ApplicationVersionGateway for (String column : columns) { List colList = queryColumn(column); if ("eulerOsVersion".equals(column)) { - colList = QueryWrapperUtil.sortOsColumn(colList); + colList = SortUtil.sortOsColumn(colList); } res.put(column, colList); } 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 dfdac6e5ef182a35716cfddafa8614629a59e23e..737307019a1008ac3f624bc5b235940e769140bb 100644 --- a/src/main/java/com/easysoftware/infrastructure/archnum/converter/ArchNumConverter.java +++ b/src/main/java/com/easysoftware/infrastructure/archnum/converter/ArchNumConverter.java @@ -19,7 +19,6 @@ import java.util.stream.Collectors; import org.springframework.stereotype.Component; -import com.easysoftware.common.utils.QueryWrapperUtil; import com.easysoftware.common.utils.SortUtil; import com.easysoftware.infrastructure.archnum.dataobject.ArchNumDO; @@ -36,7 +35,7 @@ public class ArchNumConverter { } Map> osMap = list.stream().collect(Collectors.groupingBy(ArchNumDO::getOs)); - List orderedOses = QueryWrapperUtil.sortOsColumn(osMap.keySet()); + List orderedOses = SortUtil.sortOsColumn(osMap.keySet()); Map>> res = new LinkedHashMap<>(); for (String orderedOs: orderedOses) { List aList = osMap.get(orderedOs); diff --git a/src/main/java/com/easysoftware/infrastructure/epkgpackage/gatewayimpl/EPKGPackageGatewayImpl.java b/src/main/java/com/easysoftware/infrastructure/epkgpackage/gatewayimpl/EPKGPackageGatewayImpl.java index f9c23405cab5255e7d5f3d6ea9ca5b4d21d38cab..bc8f530de3cad213151cd1974bd591dae27e8c4f 100644 --- a/src/main/java/com/easysoftware/infrastructure/epkgpackage/gatewayimpl/EPKGPackageGatewayImpl.java +++ b/src/main/java/com/easysoftware/infrastructure/epkgpackage/gatewayimpl/EPKGPackageGatewayImpl.java @@ -24,6 +24,7 @@ import com.easysoftware.common.exception.NoneResException; import com.easysoftware.common.exception.ParamErrorException; import com.easysoftware.common.utils.ClassField; import com.easysoftware.common.utils.QueryWrapperUtil; +import com.easysoftware.common.utils.SortUtil; import com.easysoftware.domain.epkgpackage.gateway.EPKGPackageGateway; import com.easysoftware.infrastructure.epkgpackage.gatewayimpl.converter.EPKGPackageConverter; import com.easysoftware.infrastructure.epkgpackage.gatewayimpl.dataobject.EPKGPackageDO; @@ -125,12 +126,7 @@ public class EPKGPackageGatewayImpl implements EPKGPackageGateway { Map> res = new HashMap<>(); for (String column : columns) { List colList = queryColumn(column); - if ("os".equals(column)) { - colList = QueryWrapperUtil.sortOsColumn(colList); - } - if ("category".equals(column)) { - colList = QueryWrapperUtil.sortCategoryColumn(colList); - } + colList = SortUtil.sortColumn(column, colList); res.put(column, colList); } return res; diff --git a/src/main/java/com/easysoftware/infrastructure/fieldapplication/gatewayimpl/FieldApplicationGatewayImpl.java b/src/main/java/com/easysoftware/infrastructure/fieldapplication/gatewayimpl/FieldApplicationGatewayImpl.java index 4b959531d4342bd020115fd24d295bbfe54888e4..e1884940176ce5388da9f36d4e515cd8b8c5b2c4 100644 --- a/src/main/java/com/easysoftware/infrastructure/fieldapplication/gatewayimpl/FieldApplicationGatewayImpl.java +++ b/src/main/java/com/easysoftware/infrastructure/fieldapplication/gatewayimpl/FieldApplicationGatewayImpl.java @@ -18,6 +18,7 @@ import com.easysoftware.application.filedapplication.dto.FiledApplicationSerachC import com.easysoftware.application.filedapplication.vo.FiledApplicationVo; import com.easysoftware.common.exception.ParamErrorException; import com.easysoftware.common.utils.QueryWrapperUtil; +import com.easysoftware.common.utils.SortUtil; import com.easysoftware.domain.fieldapplication.gateway.FieldapplicationGateway; import com.easysoftware.infrastructure.fieldapplication.gatewayimpl.converter.FieldApplicationConverter; import com.easysoftware.infrastructure.fieldapplication.gatewayimpl.dataobject.FieldApplicationDO; @@ -89,12 +90,7 @@ public class FieldApplicationGatewayImpl implements FieldapplicationGateway { Map> res = new HashMap<>(); for (String column : columns) { List colList = queryColumn(column); - if ("os".equals(column)) { - colList = QueryWrapperUtil.sortOsColumn(colList); - } - if ("category".equals(column)) { - colList = QueryWrapperUtil.sortCategoryColumn(colList); - } + colList = SortUtil.sortColumn(column, colList); res.put(column, colList); } return res; diff --git a/src/main/java/com/easysoftware/infrastructure/fieldpkg/FieldPkgGatewayImpl.java b/src/main/java/com/easysoftware/infrastructure/fieldpkg/FieldPkgGatewayImpl.java index 71dc6dd848809e0fdb350676438d29b7ca2b5e26..33d1c3374d3144411a255713d2f466fd69d8bfe3 100644 --- a/src/main/java/com/easysoftware/infrastructure/fieldpkg/FieldPkgGatewayImpl.java +++ b/src/main/java/com/easysoftware/infrastructure/fieldpkg/FieldPkgGatewayImpl.java @@ -20,6 +20,7 @@ import com.easysoftware.application.fieldpkg.vo.FieldPkgVo; import com.easysoftware.common.exception.ParamErrorException; import com.easysoftware.common.utils.ClassField; import com.easysoftware.common.utils.QueryWrapperUtil; +import com.easysoftware.common.utils.SortUtil; import com.easysoftware.domain.fieldpkg.gateway.FieldPkgGateway; import com.easysoftware.infrastructure.fieldpkg.converter.FieldPkgConverter; import com.easysoftware.infrastructure.fieldpkg.dataobject.FieldPkgDO; @@ -92,12 +93,7 @@ public class FieldPkgGatewayImpl implements FieldPkgGateway { Map> res = new HashMap<>(); for (String column : columns) { List colList = queryColumn(column); - if ("os".equals(column)) { - colList = QueryWrapperUtil.sortOsColumn(colList); - } - if ("category".equals(column)) { - colList = QueryWrapperUtil.sortCategoryColumn(colList); - } + colList = SortUtil.sortColumn(column, colList); res.put(column, colList); } return res; diff --git a/src/main/java/com/easysoftware/infrastructure/oepkg/gatewalmpl/OEPackageGatewayImpl.java b/src/main/java/com/easysoftware/infrastructure/oepkg/gatewalmpl/OEPackageGatewayImpl.java index 78023b06d0c835f1d22ac2da76b67a0e2da5c76b..66ef9dbbde777ebd195a398c68844e185ec4d5d5 100644 --- a/src/main/java/com/easysoftware/infrastructure/oepkg/gatewalmpl/OEPackageGatewayImpl.java +++ b/src/main/java/com/easysoftware/infrastructure/oepkg/gatewalmpl/OEPackageGatewayImpl.java @@ -26,6 +26,7 @@ import com.easysoftware.application.rpmpackage.vo.RPMPackgeVersionVo; import com.easysoftware.common.exception.ParamErrorException; import com.easysoftware.common.utils.ClassField; import com.easysoftware.common.utils.QueryWrapperUtil; +import com.easysoftware.common.utils.SortUtil; import com.easysoftware.domain.oepackage.gateway.OEPackageGateway; import com.easysoftware.infrastructure.mapper.OEPackageDOMapper; import com.easysoftware.infrastructure.oepkg.gatewalmpl.coverter.OEPackageConverter; @@ -126,12 +127,7 @@ public class OEPackageGatewayImpl implements OEPackageGateway { Map> res = new HashMap<>(); for (String column : columns) { List colList = queryColumn(column); - if ("os".equals(column)) { - colList = QueryWrapperUtil.sortOsColumn(colList); - } - if ("category".equals(column)) { - colList = QueryWrapperUtil.sortCategoryColumn(colList); - } + colList = SortUtil.sortColumn(column, colList); res.put(column, colList); } return res; diff --git a/src/main/java/com/easysoftware/infrastructure/rpmpackage/gatewayimpl/RPMPackageGatewayImpl.java b/src/main/java/com/easysoftware/infrastructure/rpmpackage/gatewayimpl/RPMPackageGatewayImpl.java index d8af56c685b38d0ea0044a247b78a2efb5893fe2..b27ee7ed5c5326c56f44e5d9b39fd2c619959252 100644 --- a/src/main/java/com/easysoftware/infrastructure/rpmpackage/gatewayimpl/RPMPackageGatewayImpl.java +++ b/src/main/java/com/easysoftware/infrastructure/rpmpackage/gatewayimpl/RPMPackageGatewayImpl.java @@ -26,6 +26,7 @@ import com.easysoftware.application.rpmpackage.vo.RPMPackgeVersionVo; import com.easysoftware.common.exception.ParamErrorException; import com.easysoftware.common.utils.ClassField; import com.easysoftware.common.utils.QueryWrapperUtil; +import com.easysoftware.common.utils.SortUtil; import com.easysoftware.domain.rpmpackage.gateway.RPMPackageGateway; import com.easysoftware.infrastructure.mapper.RPMPackageDOMapper; import com.easysoftware.infrastructure.rpmpackage.gatewayimpl.converter.RPMPackageConverter; @@ -128,12 +129,7 @@ public class RPMPackageGatewayImpl implements RPMPackageGateway { Map> res = new HashMap<>(); for (String column : columns) { List colList = queryColumn(column); - if ("os".equals(column)) { - colList = QueryWrapperUtil.sortOsColumn(colList); - } - if ("category".equals(column)) { - colList = QueryWrapperUtil.sortCategoryColumn(colList); - } + colList = SortUtil.sortColumn(column, colList); res.put(column, colList); } return res; diff --git a/src/test/java/com/easysoftware/adapter/query/FieldPackageQueryAdapterTest.java b/src/test/java/com/easysoftware/adapter/query/FieldPackageQueryAdapterTest.java index 278aa00a1ccd6d564ed952088ff80104e4427577..55179cea6af27680b44569a30b93b7332fb7b4cc 100644 --- a/src/test/java/com/easysoftware/adapter/query/FieldPackageQueryAdapterTest.java +++ b/src/test/java/com/easysoftware/adapter/query/FieldPackageQueryAdapterTest.java @@ -1,5 +1,10 @@ package com.easysoftware.adapter.query; +import static org.junit.Assert.assertTrue; + +import java.util.List; +import java.util.Map; + import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -14,8 +19,6 @@ import org.springframework.web.context.WebApplicationContext; import com.easysoftware.common.entity.ResultVo; import com.easysoftware.common.utils.CommonUtil; -import com.easysoftware.domain.oepackage.gateway.OEPackageGateway; - @SpringBootTest @AutoConfigureMockMvc public class FieldPackageQueryAdapterTest { @@ -23,9 +26,6 @@ public class FieldPackageQueryAdapterTest { private WebApplicationContext webApplicationContext; private MockMvc mockMvc; - @MockBean - private OEPackageGateway gateway; - @BeforeEach public void setUp() throws Exception { mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); @@ -39,4 +39,48 @@ public class FieldPackageQueryAdapterTest { System.out.println(res); CommonUtil.assertOk(res); } + + @Test + void test_column() throws Exception { + List names = List.of("rpmpkg", "epkgpkg", "apppkg", "domain", "oepkg"); + // List names = List.of("oepkg"); + for (String name : names) { + MultiValueMap paramMap = new LinkedMultiValueMap<>(); + paramMap.put("name", List.of(name)); + paramMap.put("column", List.of("arch", "category", "os")); + assertColumn(paramMap); + } + } + + void assertColumn(MultiValueMap paramMap) throws Exception { + ResultVo res = CommonUtil.executeGet(mockMvc, "/field/column", paramMap); + CommonUtil.assertOk(res); + Map data = (Map) res.getData(); + List os = (List) data.get("os"); + List arch = (List) data.get("arch"); + List category = (List) data.get("category"); + + List expectedOs = List.of("openEuler-24.03-LTS", "openEuler-23.09", "openEuler-23.03", + "openEuler-22.09", "openEuler-22.03-LTS-SP4", "openEuler-22.03-LTS-SP3", "openEuler-22.03-LTS-SP2", + "openEuler-22.03-LTS-SP1", "openEuler-22.03-LTS", "openEuler-21.09", "openEuler-21.03", "openEuler-20.09", + "openEuler-20.03-LTS-SP4", "openEuler-20.03-LTS-SP3", "openEuler-20.03-LTS-SP2", + "openEuler-20.03-LTS-SP1", "openEuler-20.03-LTS", "openEuler-preview"); + asertListOrder(os, expectedOs); + + List expectedArch = List.of("aarch64", "i686", "loongarch64", "noarch", "riscv64","s390x", "sw_64","x86_64"); + asertListOrder(arch, expectedArch); + List expectedCategory = List.of("AI", "HPC", "云服务", "分布式存储", "大数据", "数据库", + "其他"); + asertListOrder(category, expectedCategory); + } + + void asertListOrder(List actualList, List expectedList) { + int[] orders = new int[actualList.size()]; + for (int i = 0; i < actualList.size(); i++) { + orders[i] = expectedList.indexOf(actualList.get(i)); + } + for (int i = 1; i < orders.length; i++) { + assertTrue(orders[i] > orders[i - 1]); + } + } }