This is an automated email from the ASF dual-hosted git repository.

zhengqiwei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hertzbeat.git


The following commit(s) were added to refs/heads/master by this push:
     new c0ef4a436 [refactor] move code from AlertConvergesController to 
AlertConvergeService (#2428)
c0ef4a436 is described below

commit c0ef4a436eeffbf8be1c2080b70bc3e04037c1ba
Author: kangli <[email protected]>
AuthorDate: Sun Aug 4 23:54:43 2024 +0800

    [refactor] move code from AlertConvergesController to AlertConvergeService 
(#2428)
    
    Co-authored-by: Calvin <[email protected]>
---
 .../alert/controller/AlertConvergesController.java | 33 +---------------------
 .../alert/service/AlertConvergeService.java        | 13 +++++----
 .../service/impl/AlertConvergeServiceImpl.java     | 31 +++++++++++++++++++-
 .../controller/AlertConvergesControllerTest.java   | 24 ++++++++--------
 .../alert/service/AlertConvergeServiceTest.java    | 24 ++++++++--------
 5 files changed, 61 insertions(+), 64 deletions(-)

diff --git 
a/alerter/src/main/java/org/apache/hertzbeat/alert/controller/AlertConvergesController.java
 
b/alerter/src/main/java/org/apache/hertzbeat/alert/controller/AlertConvergesController.java
index 3d6fb584e..483347811 100644
--- 
a/alerter/src/main/java/org/apache/hertzbeat/alert/controller/AlertConvergesController.java
+++ 
b/alerter/src/main/java/org/apache/hertzbeat/alert/controller/AlertConvergesController.java
@@ -21,9 +21,6 @@ import static 
org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.persistence.criteria.CriteriaBuilder;
-import jakarta.persistence.criteria.Predicate;
-import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 import org.apache.hertzbeat.alert.service.AlertConvergeService;
@@ -31,11 +28,7 @@ import 
org.apache.hertzbeat.common.entity.alerter.AlertConverge;
 import org.apache.hertzbeat.common.entity.dto.Message;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageRequest;
-import org.springframework.data.domain.Sort;
-import org.springframework.data.jpa.domain.Specification;
 import org.springframework.http.ResponseEntity;
-import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -63,31 +56,7 @@ public class AlertConvergesController {
             @Parameter(description = "Sort mode: asc: ascending, desc: 
descending", example = "desc") @RequestParam(defaultValue = "desc") String 
order,
             @Parameter(description = "List current page", example = "0") 
@RequestParam(defaultValue = "0") int pageIndex,
             @Parameter(description = "Number of list pages", example = "8") 
@RequestParam(defaultValue = "8") int pageSize) {
-
-        Specification<AlertConverge> specification = (root, query, 
criteriaBuilder) -> {
-            List<Predicate> andList = new ArrayList<>();
-            if (ids != null && !ids.isEmpty()) {
-                CriteriaBuilder.In<Long> inPredicate = 
criteriaBuilder.in(root.get("id"));
-                for (long id : ids) {
-                    inPredicate.value(id);
-                }
-                andList.add(inPredicate);
-            }
-            if (StringUtils.hasText(search)) {
-                Predicate predicate = criteriaBuilder.or(
-                        criteriaBuilder.like(
-                                criteriaBuilder.lower(root.get("name")),
-                                "%" + search.toLowerCase() + "%"
-                        )
-                );
-                andList.add(predicate);
-            }
-            Predicate[] predicates = new Predicate[andList.size()];
-            return criteriaBuilder.and(andList.toArray(predicates));
-        };
-        Sort sortExp = Sort.by(new 
Sort.Order(Sort.Direction.fromString(order), sort));
-        PageRequest pageRequest = PageRequest.of(pageIndex, pageSize, sortExp);
-        Page<AlertConverge> alertConvergePage = 
alertConvergeService.getAlertConverges(specification, pageRequest);
+        Page<AlertConverge> alertConvergePage = 
alertConvergeService.getAlertConverges(ids, search, sort, order, pageIndex, 
pageSize);
         return ResponseEntity.ok(Message.success(alertConvergePage));
     }
 
diff --git 
a/alerter/src/main/java/org/apache/hertzbeat/alert/service/AlertConvergeService.java
 
b/alerter/src/main/java/org/apache/hertzbeat/alert/service/AlertConvergeService.java
index b41fdc5ef..4d71a868b 100644
--- 
a/alerter/src/main/java/org/apache/hertzbeat/alert/service/AlertConvergeService.java
+++ 
b/alerter/src/main/java/org/apache/hertzbeat/alert/service/AlertConvergeService.java
@@ -17,11 +17,10 @@
 
 package org.apache.hertzbeat.alert.service;
 
+import java.util.List;
 import java.util.Set;
 import org.apache.hertzbeat.common.entity.alerter.AlertConverge;
 import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageRequest;
-import org.springframework.data.jpa.domain.Specification;
 
 /**
  * management interface service for alert converge
@@ -67,9 +66,13 @@ public interface AlertConvergeService {
 
     /**
      * Dynamic conditional query
-     * @param specification Query conditions
-     * @param pageRequest   Paging parameters
+     * @param convergeIds   Alarm Converge ID List
+     * @param search        Search Name
+     * @param sort          Sort field
+     * @param order         Sort mode: asc: ascending, desc: descending
+     * @param pageIndex     List current page
+     * @param pageSize      Number of list pages
      * @return The query results
      */
-    Page<AlertConverge> getAlertConverges(Specification<AlertConverge> 
specification, PageRequest pageRequest);
+    Page<AlertConverge> getAlertConverges(List<Long> convergeIds, String 
search, String sort, String order, int pageIndex, int pageSize);
 }
diff --git 
a/alerter/src/main/java/org/apache/hertzbeat/alert/service/impl/AlertConvergeServiceImpl.java
 
b/alerter/src/main/java/org/apache/hertzbeat/alert/service/impl/AlertConvergeServiceImpl.java
index a4d05b47e..bbfdf0592 100644
--- 
a/alerter/src/main/java/org/apache/hertzbeat/alert/service/impl/AlertConvergeServiceImpl.java
+++ 
b/alerter/src/main/java/org/apache/hertzbeat/alert/service/impl/AlertConvergeServiceImpl.java
@@ -17,6 +17,10 @@
 
 package org.apache.hertzbeat.alert.service.impl;
 
+import jakarta.persistence.criteria.CriteriaBuilder;
+import jakarta.persistence.criteria.Predicate;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Set;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.hertzbeat.alert.dao.AlertConvergeDao;
@@ -28,9 +32,11 @@ import 
org.apache.hertzbeat.common.entity.alerter.AlertConverge;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Sort;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
 
 /**
  * implement for alert converge service
@@ -72,7 +78,30 @@ public class AlertConvergeServiceImpl implements 
AlertConvergeService {
     }
     
     @Override
-    public Page<AlertConverge> getAlertConverges(Specification<AlertConverge> 
specification, PageRequest pageRequest) {
+    public Page<AlertConverge> getAlertConverges(List<Long> convergeIds, 
String search, String sort, String order, int pageIndex, int pageSize) {
+        Specification<AlertConverge> specification = (root, query, 
criteriaBuilder) -> {
+            List<Predicate> andList = new ArrayList<>();
+            if (convergeIds != null && !convergeIds.isEmpty()) {
+                CriteriaBuilder.In<Long> inPredicate = 
criteriaBuilder.in(root.get("id"));
+                for (long id : convergeIds) {
+                    inPredicate.value(id);
+                }
+                andList.add(inPredicate);
+            }
+            if (StringUtils.hasText(search)) {
+                Predicate predicate = criteriaBuilder.or(
+                        criteriaBuilder.like(
+                                criteriaBuilder.lower(root.get("name")),
+                                "%" + search.toLowerCase() + "%"
+                        )
+                );
+                andList.add(predicate);
+            }
+            Predicate[] predicates = new Predicate[andList.size()];
+            return criteriaBuilder.and(andList.toArray(predicates));
+        };
+        Sort sortExp = Sort.by(new 
Sort.Order(Sort.Direction.fromString(order), sort));
+        PageRequest pageRequest = PageRequest.of(pageIndex, pageSize, sortExp);
         return alertConvergeDao.findAll(specification, pageRequest);
     }
     
diff --git 
a/alerter/src/test/java/org/apache/hertzbeat/alert/controller/AlertConvergesControllerTest.java
 
b/alerter/src/test/java/org/apache/hertzbeat/alert/controller/AlertConvergesControllerTest.java
index 28088f2d4..3eb5eb97e 100644
--- 
a/alerter/src/test/java/org/apache/hertzbeat/alert/controller/AlertConvergesControllerTest.java
+++ 
b/alerter/src/test/java/org/apache/hertzbeat/alert/controller/AlertConvergesControllerTest.java
@@ -17,10 +17,18 @@
 
 package org.apache.hertzbeat.alert.controller;
 
+
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.when;
+import static 
org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
+import static 
org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static 
org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
+import static 
org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+import static 
org.springframework.test.web.servlet.setup.MockMvcBuilders.standaloneSetup;
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
-
 import org.apache.hertzbeat.alert.service.AlertConvergeService;
 import org.apache.hertzbeat.common.constants.CommonConstants;
 import org.apache.hertzbeat.common.entity.alerter.AlertConverge;
@@ -30,23 +38,13 @@ import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;
-import org.springframework.http.MediaType;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageImpl;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Sort;
+import org.springframework.http.MediaType;
 import org.springframework.test.web.servlet.MockMvc;
 
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.when;
-import static 
org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
-import static 
org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
-import static 
org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
-import static 
org.springframework.test.web.servlet.setup.MockMvcBuilders.standaloneSetup;
-
-import static 
org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
 
 /**
  * test case for {@link AlertConvergesController}
@@ -92,7 +90,7 @@ class AlertConvergesControllerTest {
                                alertConvergeList.size()
                );
 
-               when(alertConvergeService.getAlertConverges(any(), 
any(PageRequest.class))).thenReturn(alertConvergePage);
+               when(alertConvergeService.getAlertConverges(null, null, "id", 
"desc", 0, 8)).thenReturn(alertConvergePage);
 
                mockMvc.perform(get("/api/alert/converges")
                                                .param("pageIndex", "0")
diff --git 
a/alerter/src/test/java/org/apache/hertzbeat/alert/service/AlertConvergeServiceTest.java
 
b/alerter/src/test/java/org/apache/hertzbeat/alert/service/AlertConvergeServiceTest.java
index e763a160d..e01b716ab 100644
--- 
a/alerter/src/test/java/org/apache/hertzbeat/alert/service/AlertConvergeServiceTest.java
+++ 
b/alerter/src/test/java/org/apache/hertzbeat/alert/service/AlertConvergeServiceTest.java
@@ -17,10 +17,14 @@
 
 package org.apache.hertzbeat.alert.service;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 import java.util.Collections;
-import java.util.Set;
 import java.util.Optional;
-
+import java.util.Set;
 import org.apache.hertzbeat.alert.dao.AlertConvergeDao;
 import org.apache.hertzbeat.alert.service.impl.AlertConvergeServiceImpl;
 import org.apache.hertzbeat.common.entity.alerter.AlertConverge;
@@ -35,13 +39,6 @@ import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.domain.Specification;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
 /**
  * test case for {@link 
org.apache.hertzbeat.alert.service.impl.AlertConvergeServiceImpl}
  */
@@ -97,17 +94,18 @@ class AlertConvergeServiceTest {
        @Test
        public void testGetAlertConverges() {
 
-               Specification<AlertConverge> specification = 
mock(Specification.class);
-               PageRequest pageRequest = PageRequest.of(0, 10);
                Page<AlertConverge> page = new 
PageImpl<>(Collections.emptyList());
                when(alertConvergeDao.findAll(
                                any(Specification.class),
                                any(Pageable.class))
                ).thenReturn(page);
 
-               Page<AlertConverge> result = 
alertConvergeService.getAlertConverges(specification, pageRequest);
+               Page<AlertConverge> result = 
alertConvergeService.getAlertConverges(null, null, "id", "desc", 1, 10);
 
-               verify(alertConvergeDao, times(1)).findAll(specification, 
pageRequest);
+               verify(alertConvergeDao, times(1)).findAll(
+                               any(Specification.class),
+                               any(PageRequest.class)
+               );
                assertEquals(page, result);
        }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to