You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by ki...@apache.org on 2021/01/22 14:10:12 UTC

[incubator-dolphinscheduler] branch dev updated: [Improvement][API] ProjectService queryAllProjectList API optimization (#4539)

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

kirs pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-dolphinscheduler.git


The following commit(s) were added to refs/heads/dev by this push:
     new 046940b  [Improvement][API] ProjectService queryAllProjectList API optimization (#4539)
046940b is described below

commit 046940b1a008c63d6cad44b3f7aff954f6f9af83
Author: 张旺 <hu...@163.com>
AuthorDate: Fri Jan 22 22:10:05 2021 +0800

    [Improvement][API] ProjectService queryAllProjectList API optimization (#4539)
    
    * [Improvement][API] ProjectService queryAllProjectList API optimization
    
    * :pencil2: checkStyle typo
---
 .../api/service/impl/ProjectServiceImpl.java        | 21 +++++++--------------
 .../api/service/ProjectServiceTest.java             | 11 ++++++++---
 .../dao/mapper/ProcessDefinitionMapper.java         |  6 ++++++
 .../dao/mapper/ProcessDefinitionMapper.xml          |  6 ++++++
 .../dao/mapper/ProcessDefinitionMapperTest.java     |  8 ++++++++
 5 files changed, 35 insertions(+), 17 deletions(-)

diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectServiceImpl.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectServiceImpl.java
index 06b8eac..9241df6 100644
--- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectServiceImpl.java
+++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectServiceImpl.java
@@ -24,6 +24,7 @@ import org.apache.dolphinscheduler.api.service.ProjectService;
 import org.apache.dolphinscheduler.api.utils.PageInfo;
 import org.apache.dolphinscheduler.common.Constants;
 import org.apache.dolphinscheduler.common.enums.UserType;
+import org.apache.dolphinscheduler.common.utils.CollectionUtils;
 import org.apache.dolphinscheduler.dao.entity.ProcessDefinition;
 import org.apache.dolphinscheduler.dao.entity.Project;
 import org.apache.dolphinscheduler.dao.entity.ProjectUser;
@@ -442,21 +443,13 @@ public class ProjectServiceImpl extends BaseService implements ProjectService {
      */
     public Map<String, Object> queryAllProjectList() {
         Map<String, Object> result = new HashMap<>();
-        List<Project> projects = projectMapper.selectList(null);
-        List<ProcessDefinition> processDefinitions = processDefinitionMapper.selectList(null);
-        if (projects != null) {
-            Set<Integer> set = new HashSet<>();
-            for (ProcessDefinition processDefinition : processDefinitions) {
-                set.add(processDefinition.getProjectId());
-            }
-            List<Project> tempDeletelist = new ArrayList<>();
-            for (Project project : projects) {
-                if (!set.contains(project.getId())) {
-                    tempDeletelist.add(project);
-                }
-            }
-            projects.removeAll(tempDeletelist);
+        List<Project> projects = new ArrayList<>();
+
+        List<Integer> projectIds = processDefinitionMapper.listProjectIds();
+        if (CollectionUtils.isNotEmpty(projectIds)) {
+            projects = projectMapper.selectBatchIds(projectIds);
         }
+
         result.put(Constants.DATA_LIST, projects);
         putMsg(result, Status.SUCCESS);
         return result;
diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectServiceTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectServiceTest.java
index cc39925..076eb59 100644
--- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectServiceTest.java
+++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectServiceTest.java
@@ -32,6 +32,7 @@ import org.apache.dolphinscheduler.dao.mapper.ProjectMapper;
 import org.apache.dolphinscheduler.dao.mapper.ProjectUserMapper;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -319,9 +320,8 @@ public class ProjectServiceTest {
 
     @Test
     public void testQueryAllProjectList() {
-
-        Mockito.when(projectMapper.selectList(null)).thenReturn(getList());
-        Mockito.when(processDefinitionMapper.selectList(null)).thenReturn(getProcessDefinitions());
+        Mockito.when(processDefinitionMapper.listProjectIds()).thenReturn(getProjectIds());
+        Mockito.when(projectMapper.selectBatchIds(getProjectIds())).thenReturn(getList());
 
         Map<String, Object> result = projectService.queryAllProjectList();
         logger.info(result.toString());
@@ -387,6 +387,11 @@ public class ProjectServiceTest {
         return list;
     }
 
+    private List<Integer> getProjectIds() {
+        return Collections.singletonList(1);
+    }
+
+
     private String getDesc() {
         return "projectUserMapper.deleteProjectRelation(projectId,userId)projectUserMappe"
                 + ".deleteProjectRelation(projectId,userId)projectUserMappe"
diff --git a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.java b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.java
index 621ec43..36c9887 100644
--- a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.java
+++ b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.java
@@ -138,4 +138,10 @@ public interface ProcessDefinitionMapper extends BaseMapper<ProcessDefinition> {
      * @param version version
      */
     void updateVersionByProcessDefinitionId(@Param("processDefinitionId") int processDefinitionId, @Param("version") long version);
+
+    /**
+     * list all project ids
+     * @return project ids list
+     */
+    List<Integer> listProjectIds();
 }
diff --git a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.xml b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.xml
index 6a9165f..a24fd29 100644
--- a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.xml
+++ b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.xml
@@ -128,6 +128,12 @@
         WHERE user_id = #{userId} and release_state = 1 and resource_ids is not null and resource_ids != ''
     </select>
 
+    <select id="listProjectIds" resultType="java.lang.Integer">
+        SELECT DISTINCT(project_id) as project_id
+        FROM t_ds_process_definition
+    </select>
+
+
     <update id="updateVersionByProcessDefinitionId">
         update  t_ds_process_definition
         set version = #{version}
diff --git a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapperTest.java b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapperTest.java
index 2046735..02b5f12 100644
--- a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapperTest.java
+++ b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapperTest.java
@@ -366,4 +366,12 @@ public class ProcessDefinitionMapperTest {
         ProcessDefinition processDefinition1 = processDefinitionMapper.selectById(processDefinition.getId());
         Assert.assertEquals(expectedVersion, processDefinition1.getVersion());
     }
+
+    @Test
+    public void listProjectIds() {
+        ProcessDefinition processDefinition = insertOne();
+        List<Integer> projectIds = processDefinitionMapper.listProjectIds();
+        Assert.assertNotNull(projectIds);
+    }
+
 }