From 7a084fd8c53bf704cacc7dfd24a85a43f2c70e0f Mon Sep 17 00:00:00 2001 From: gouzhonglin Date: Thu, 7 Mar 2024 14:43:39 +0800 Subject: [PATCH] update search of rpm/epkg package --- .../gatewayimpl/EPKGPackageGatewayImpl.java | 4 ++ .../converter/EPKGPackageConverter.java | 15 ++-- .../gatewayimpl/RPMPackageGatewayImpl.java | 4 ++ .../converter/RPMPackageConverter.java | 15 ++-- .../query/DomainPackageQueryAdapterTest.java | 72 +++++++++++++++++++ 5 files changed, 98 insertions(+), 12 deletions(-) create mode 100644 src/test/java/com/easysoftware/adapter/query/DomainPackageQueryAdapterTest.java 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 7c9ea88..154abbd 100644 --- a/src/main/java/com/easysoftware/infrastructure/epkgpackage/gatewayimpl/EPKGPackageGatewayImpl.java +++ b/src/main/java/com/easysoftware/infrastructure/epkgpackage/gatewayimpl/EPKGPackageGatewayImpl.java @@ -133,10 +133,14 @@ public class EPKGPackageGatewayImpl implements EPKGPackageGateway{ @Override public List queryColumn(String column) { + column = "category".equals(column) ? "epkg_category" : column; QueryWrapper wrapper = new QueryWrapper<>(); wrapper.select("distinct " + column); List rpmColumn = ePKGPkgMapper.selectList(wrapper); + + column = StringUtil.underlineToCamel(column); List res = EPKGPackageConverter.toColumn(rpmColumn, column); + return res; } } diff --git a/src/main/java/com/easysoftware/infrastructure/epkgpackage/gatewayimpl/converter/EPKGPackageConverter.java b/src/main/java/com/easysoftware/infrastructure/epkgpackage/gatewayimpl/converter/EPKGPackageConverter.java index 7de4590..7b0ce0b 100644 --- a/src/main/java/com/easysoftware/infrastructure/epkgpackage/gatewayimpl/converter/EPKGPackageConverter.java +++ b/src/main/java/com/easysoftware/infrastructure/epkgpackage/gatewayimpl/converter/EPKGPackageConverter.java @@ -42,12 +42,15 @@ public class EPKGPackageConverter { Field field = EPKGPackageDO.class.getDeclaredField(column); field.setAccessible(true); for (EPKGPackageDO epkgDO : epkgDOs) { - Object obj = field.get(epkgDO); - if (! (obj instanceof String)) { - continue; - } - String value = (String) field.get(epkgDO); - res.add(value); + if (epkgDO == null) { + continue; + } + Object obj = field.get(epkgDO); + if (! (obj instanceof String)) { + continue; + } + String value = (String) field.get(epkgDO); + res.add(value); } } catch (Exception e) { logger.error(MessageCode.EC00011.getMsgEn(), e); 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 98ad206..de941e4 100644 --- a/src/main/java/com/easysoftware/infrastructure/rpmpackage/gatewayimpl/RPMPackageGatewayImpl.java +++ b/src/main/java/com/easysoftware/infrastructure/rpmpackage/gatewayimpl/RPMPackageGatewayImpl.java @@ -133,10 +133,14 @@ public class RPMPackageGatewayImpl implements RPMPackageGateway { @Override public List queryColumn(String column) { + column = "category".equals(column) ? "rpm_category" : column; QueryWrapper wrapper = new QueryWrapper<>(); wrapper.select("distinct " + column); List rpmColumn = rPMPkgMapper.selectList(wrapper); + + column = StringUtil.underlineToCamel(column); List res = RPMPackageConverter.toColumn(rpmColumn, column); + return res; } } diff --git a/src/main/java/com/easysoftware/infrastructure/rpmpackage/gatewayimpl/converter/RPMPackageConverter.java b/src/main/java/com/easysoftware/infrastructure/rpmpackage/gatewayimpl/converter/RPMPackageConverter.java index 0cc8a07..d743829 100644 --- a/src/main/java/com/easysoftware/infrastructure/rpmpackage/gatewayimpl/converter/RPMPackageConverter.java +++ b/src/main/java/com/easysoftware/infrastructure/rpmpackage/gatewayimpl/converter/RPMPackageConverter.java @@ -40,12 +40,15 @@ public class RPMPackageConverter { Field field = RPMPackageDO.class.getDeclaredField(column); field.setAccessible(true); for (RPMPackageDO rPMPkgDO : rPMPkgDOs) { - Object obj = field.get(rPMPkgDO); - if (! (obj instanceof String)) { - continue; - } - String value = (String) field.get(rPMPkgDO); - res.add(value); + if (rPMPkgDO == null) { + continue; + } + Object obj = field.get(rPMPkgDO); + if (! (obj instanceof String)) { + continue; + } + String value = (String) field.get(rPMPkgDO); + res.add(value); } } catch (Exception e) { logger.error(MessageCode.EC00011.getMsgEn(), e); diff --git a/src/test/java/com/easysoftware/adapter/query/DomainPackageQueryAdapterTest.java b/src/test/java/com/easysoftware/adapter/query/DomainPackageQueryAdapterTest.java new file mode 100644 index 0000000..c398db4 --- /dev/null +++ b/src/test/java/com/easysoftware/adapter/query/DomainPackageQueryAdapterTest.java @@ -0,0 +1,72 @@ +package com.easysoftware.adapter.query; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.nio.charset.Charset; +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; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.MediaType; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; +import org.springframework.test.web.servlet.result.MockMvcResultHandlers; +import org.springframework.test.web.servlet.result.MockMvcResultMatchers; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import jakarta.validation.constraints.AssertTrue; +import lombok.extern.slf4j.Slf4j; + + +@SpringBootTest +@AutoConfigureMockMvc +@Slf4j +public class DomainPackageQueryAdapterTest { + + @Autowired + private WebApplicationContext webApplicationContext; + private MockMvc mockMvc; + + @Autowired + private ObjectMapper objectMapper; + + @BeforeEach + public void setUp() throws Exception { + mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); + } + + @Test + void test_domain_column() throws Exception { + List names = List.of("rpmpkg", "epkgpkg"); + List columns = List.of("arch", "version", "os", "category"); + + for (String name : names) { + for (String column : columns) { + MvcResult result = mockMvc.perform(MockMvcRequestBuilders.get("/domain/column") + .param("name", name) + .param("column", column) + .accept(MediaType.APPLICATION_JSON)) + .andReturn(); + + String content = result.getResponse().getContentAsString(Charset.defaultCharset()); + Map res = objectMapper.readValue(content, Map.class); + int code = (int) res.get("code"); + assertEquals(code, 200); + + log.debug("name: {}, column: {}, data: {}", name, column, res); + } + } + + + } +} -- Gitee