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 23d16ae92 [refactor] move code from CollectorController to 
CollectorService (#2433)
23d16ae92 is described below

commit 23d16ae92180f5b536fa13b5cdc777e0d2871b3f
Author: Chandrakant Vankayalapati <[email protected]>
AuthorDate: Fri Aug 9 08:42:12 2024 -0700

    [refactor] move code from CollectorController to CollectorService (#2433)
    
    Co-authored-by: ceekay <[email protected]>
    Co-authored-by: Calvin <[email protected]>
---
 .../manager/controller/CollectorController.java    | 46 +++-------------------
 .../manager/service/CollectorService.java          | 31 ++++++++++++---
 .../manager/service/impl/CollectorServiceImpl.java | 45 ++++++++++++++++++++-
 .../manager/service/CollectorServiceTest.java      |  9 ++---
 4 files changed, 78 insertions(+), 53 deletions(-)

diff --git 
a/manager/src/main/java/org/apache/hertzbeat/manager/controller/CollectorController.java
 
b/manager/src/main/java/org/apache/hertzbeat/manager/controller/CollectorController.java
index 349191c25..df31ef9d4 100644
--- 
a/manager/src/main/java/org/apache/hertzbeat/manager/controller/CollectorController.java
+++ 
b/manager/src/main/java/org/apache/hertzbeat/manager/controller/CollectorController.java
@@ -21,21 +21,13 @@ 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.Predicate;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import org.apache.hertzbeat.common.constants.CommonConstants;
 import org.apache.hertzbeat.common.entity.dto.CollectorSummary;
 import org.apache.hertzbeat.common.entity.dto.Message;
-import org.apache.hertzbeat.common.entity.manager.Collector;
-import org.apache.hertzbeat.common.util.IpDomainUtil;
-import org.apache.hertzbeat.manager.scheduler.netty.ManageServer;
 import org.apache.hertzbeat.manager.service.CollectorService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageRequest;
-import org.springframework.data.jpa.domain.Specification;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -56,9 +48,6 @@ public class CollectorController {
 
     @Autowired
     private CollectorService collectorService;
-    
-    @Autowired(required = false)
-    private ManageServer manageServer;
 
     @GetMapping
     @Operation(summary = "Get a list of collectors based on query filter 
items",
@@ -67,21 +56,8 @@ public class CollectorController {
             @Parameter(description = "collector name", example = "tom") 
@RequestParam(required = false) final String name,
             @Parameter(description = "List current page", example = "0") 
@RequestParam(defaultValue = "0") int pageIndex,
             @Parameter(description = "Number of list pagination", example = 
"8") @RequestParam(required = false) Integer pageSize) {
-        if (pageSize == null) {
-            pageSize = Integer.MAX_VALUE;
-        }
-        Specification<Collector> specification = (root, query, 
criteriaBuilder) -> {
-            Predicate predicate = criteriaBuilder.conjunction();
-            if (name != null && !name.isEmpty()) {
-                Predicate predicateName = 
criteriaBuilder.like(root.get("name"), "%" + name + "%");
-                predicate = criteriaBuilder.and(predicateName);
-            }
-            return predicate;
-        };
-        PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
-        Page<CollectorSummary> receivers = 
collectorService.getCollectors(specification, pageRequest);
-        Message<Page<CollectorSummary>> message = Message.success(receivers);
-        return ResponseEntity.ok(message);
+        Page<CollectorSummary> receivers = 
collectorService.getCollectors(name, pageIndex, pageSize);
+        return ResponseEntity.ok(Message.success(receivers));
     }
 
     @PutMapping("/online")
@@ -89,10 +65,7 @@ public class CollectorController {
     public ResponseEntity<Message<Void>> onlineCollector(
             @Parameter(description = "collector name", example = 
"demo-collector")
             @RequestParam(required = false) List<String> collectors) {
-        if (collectors != null) {
-            collectors.forEach(collector ->
-                                       
this.manageServer.getCollectorAndJobScheduler().onlineCollector(collector));
-        }
+        collectorService.makeCollectorsOnline(collectors);
         return ResponseEntity.ok(Message.success("Online success"));
     }
 
@@ -101,9 +74,7 @@ public class CollectorController {
     public ResponseEntity<Message<Void>> offlineCollector(
             @Parameter(description = "collector name", example = 
"demo-collector") 
             @RequestParam(required = false) List<String> collectors) {
-        if (collectors != null) {
-            collectors.forEach(collector -> 
this.manageServer.getCollectorAndJobScheduler().offlineCollector(collector));
-        }
+        collectorService.makeCollectorsOffline(collectors);
         return ResponseEntity.ok(Message.success("Offline success"));
     }
 
@@ -121,14 +92,7 @@ public class CollectorController {
     public ResponseEntity<Message<Map<String, String>>> 
generateCollectorDeployInfo(
             @Parameter(description = "collector name", example = 
"demo-collector")
             @PathVariable() String collector) {
-        if (this.collectorService.hasCollector(collector)) {
-            return ResponseEntity.ok(Message.fail(CommonConstants.FAIL_CODE, 
"There already has same collector name."));
-        }
-        String host = IpDomainUtil.getLocalhostIp();
-        Map<String, String> maps = new HashMap<>(6);
-        maps.put("identity", collector);
-        maps.put("host", host);
-        return ResponseEntity.ok(Message.success(maps));
+        return 
ResponseEntity.ok(Message.success(collectorService.generateCollectorDeployInfo(collector)));
     }
 
 }
diff --git 
a/manager/src/main/java/org/apache/hertzbeat/manager/service/CollectorService.java
 
b/manager/src/main/java/org/apache/hertzbeat/manager/service/CollectorService.java
index 81d995af8..74a7ad3a1 100644
--- 
a/manager/src/main/java/org/apache/hertzbeat/manager/service/CollectorService.java
+++ 
b/manager/src/main/java/org/apache/hertzbeat/manager/service/CollectorService.java
@@ -18,11 +18,9 @@
 package org.apache.hertzbeat.manager.service;
 
 import java.util.List;
+import java.util.Map;
 import org.apache.hertzbeat.common.entity.dto.CollectorSummary;
-import org.apache.hertzbeat.common.entity.manager.Collector;
 import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageRequest;
-import org.springframework.data.jpa.domain.Specification;
 
 /**
  * collector service
@@ -31,11 +29,13 @@ public interface CollectorService {
     
     /**
      * Dynamic conditional query
-     * @param specification Query conditions
-     * @param pageRequest pageIndex pageSize
+     * @param name Collector Name
+     * @param pageIndex current pageIndex
+     * @param pageSize Number of list pagination
+     *
      * @return Search result
      */
-    Page<CollectorSummary> getCollectors(Specification<Collector> 
specification, PageRequest pageRequest);
+    Page<CollectorSummary> getCollectors(String name, int pageIndex, Integer 
pageSize);
     
     /**
      * delete registered collectors
@@ -49,4 +49,23 @@ public interface CollectorService {
      * @return return true if it has
      */
     boolean hasCollector(String collector);
+
+    /**
+     * Generate Collector Deploy Info
+     * @param collector collector name
+     */
+    Map<String, String> generateCollectorDeployInfo(String collector);
+
+    /**
+     * Makes Collectors Offline
+     * @param collectors collector names
+     */
+    void makeCollectorsOffline(List<String> collectors);
+
+    /**
+     * Makes Collectors Online
+     * @param collectors collector names
+     */
+    void makeCollectorsOnline(List<String> collectors);
+
 }
diff --git 
a/manager/src/main/java/org/apache/hertzbeat/manager/service/impl/CollectorServiceImpl.java
 
b/manager/src/main/java/org/apache/hertzbeat/manager/service/impl/CollectorServiceImpl.java
index 003c5f99e..519cec7d5 100644
--- 
a/manager/src/main/java/org/apache/hertzbeat/manager/service/impl/CollectorServiceImpl.java
+++ 
b/manager/src/main/java/org/apache/hertzbeat/manager/service/impl/CollectorServiceImpl.java
@@ -17,12 +17,16 @@
 
 package org.apache.hertzbeat.manager.service.impl;
 
+import jakarta.persistence.criteria.Predicate;
+import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Map;
 import org.apache.hertzbeat.common.entity.dto.CollectorSummary;
 import org.apache.hertzbeat.common.entity.manager.Collector;
 import org.apache.hertzbeat.common.entity.manager.CollectorMonitorBind;
 import org.apache.hertzbeat.common.support.exception.CommonException;
+import org.apache.hertzbeat.common.util.IpDomainUtil;
 import org.apache.hertzbeat.manager.dao.CollectorDao;
 import org.apache.hertzbeat.manager.dao.CollectorMonitorBindDao;
 import org.apache.hertzbeat.manager.scheduler.AssignJobs;
@@ -58,7 +62,19 @@ public class CollectorServiceImpl implements 
CollectorService {
     
     @Override
     @Transactional(readOnly = true)
-    public Page<CollectorSummary> getCollectors(Specification<Collector> 
specification, PageRequest pageRequest) {
+    public Page<CollectorSummary> getCollectors(String name, int pageIndex, 
Integer pageSize) {
+        if (pageSize == null) {
+            pageSize = Integer.MAX_VALUE;
+        }
+        Specification<Collector> specification = (root, query, 
criteriaBuilder) -> {
+            Predicate predicate = criteriaBuilder.conjunction();
+            if (name != null && !name.isEmpty()) {
+                Predicate predicateName = 
criteriaBuilder.like(root.get("name"), "%" + name + "%");
+                predicate = criteriaBuilder.and(predicateName);
+            }
+            return predicate;
+        };
+        PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
         Page<Collector> collectors = collectorDao.findAll(specification, 
pageRequest);
         List<CollectorSummary> collectorSummaryList = new LinkedList<>();
         for (Collector collector : collectors.getContent()) {
@@ -97,4 +113,31 @@ public class CollectorServiceImpl implements 
CollectorService {
     public boolean hasCollector(String collector) {
         return this.collectorDao.findCollectorByName(collector).isPresent();
     }
+
+    @Override
+    public Map<String, String> generateCollectorDeployInfo(String collector) {
+        if (hasCollector(collector)) {
+            throw new CommonException("There already exists a collector with 
same name.");
+        }
+        String host = IpDomainUtil.getLocalhostIp();
+        Map<String, String> maps = new HashMap<>(6);
+        maps.put("identity", collector);
+        maps.put("host", host);
+        return maps;
+    }
+
+    @Override
+    public void makeCollectorsOffline(List<String> collectors) {
+        if (collectors != null) {
+            collectors.forEach(collector -> 
this.manageServer.getCollectorAndJobScheduler().offlineCollector(collector));
+        }
+    }
+
+    @Override
+    public void makeCollectorsOnline(List<String> collectors) {
+        if (collectors != null) {
+            collectors.forEach(collector ->
+                    
this.manageServer.getCollectorAndJobScheduler().onlineCollector(collector));
+        }
+    }
 }
diff --git 
a/manager/src/test/java/org/apache/hertzbeat/manager/service/CollectorServiceTest.java
 
b/manager/src/test/java/org/apache/hertzbeat/manager/service/CollectorServiceTest.java
index 8e011fe03..1277e769c 100644
--- 
a/manager/src/test/java/org/apache/hertzbeat/manager/service/CollectorServiceTest.java
+++ 
b/manager/src/test/java/org/apache/hertzbeat/manager/service/CollectorServiceTest.java
@@ -17,7 +17,6 @@
 
 package org.apache.hertzbeat.manager.service;
 
-import org.apache.hertzbeat.common.entity.manager.Collector;
 import org.apache.hertzbeat.manager.dao.CollectorDao;
 import org.apache.hertzbeat.manager.dao.CollectorMonitorBindDao;
 import org.apache.hertzbeat.manager.scheduler.ConsistentHash;
@@ -37,7 +36,8 @@ import java.util.ArrayList;
 import java.util.List;
 
 import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
-import static org.mockito.Mockito.mock;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.when;
 
 /**
@@ -65,9 +65,8 @@ public class CollectorServiceTest {
 
     @Test
     public void getCollectors() {
-        Specification<Collector> specification = mock(Specification.class);
-        when(collectorDao.findAll(specification, PageRequest.of(1, 
1))).thenReturn(Page.empty());
-        assertDoesNotThrow(() -> collectorService.getCollectors(specification, 
PageRequest.of(1, 1)));
+        when(collectorDao.findAll(any(Specification.class), 
eq(PageRequest.of(1, 1)))).thenReturn(Page.empty());
+        assertDoesNotThrow(() -> collectorService.getCollectors("test", 1, 1));
     }
 
     @Test


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

Reply via email to