You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by jo...@apache.org on 2020/03/08 07:58:33 UTC

[incubator-dolphinscheduler] branch dev-resource-tree updated: update resource name also need update all the children full name (#2096)

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

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


The following commit(s) were added to refs/heads/dev-resource-tree by this push:
     new 8c2bcc2  update resource name also need update all the children full name (#2096)
8c2bcc2 is described below

commit 8c2bcc25dd082ead86beb19d4e3220320efdfd2f
Author: lgcareer <18...@163.com>
AuthorDate: Sun Mar 8 15:58:25 2020 +0800

    update resource name also need update all the children full name (#2096)
    
    * update resource service test
    
    * Fix github action rerun failed
    
    * add status of PARENT_RESOURCE_NOT_EXIST
    
    * build resource process definition map
    
    * update resource name also need update all the children full name
    
    * need add queryResource
---
 .../api/service/ResourcesService.java              | 14 ++++++++++++++
 .../dao/mapper/ResourceMapper.java                 | 14 ++++++++++++++
 .../dolphinscheduler/dao/mapper/ResourceMapper.xml | 22 ++++++++++++++++++++++
 3 files changed, 50 insertions(+)

diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ResourcesService.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ResourcesService.java
index 02bffc7..b8a53d1 100644
--- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ResourcesService.java
+++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ResourcesService.java
@@ -333,7 +333,11 @@ public class ResourcesService extends BaseService {
         }
 
         // updateResource data
+
+        List<Integer> integers = resourcesMapper.listChildren(resourceId);
+        String oldFullName = resource.getFullName();
         Date now = new Date();
+
         resource.setAlias(nameWithSuffix);
         resource.setFullName(fullName);
         resource.setDescription(desc);
@@ -341,6 +345,16 @@ public class ResourcesService extends BaseService {
 
         try {
             resourcesMapper.updateById(resource);
+            if (resource.isDirectory()) {
+                List<Resource> childResourceList = new ArrayList<>();
+                List<Resource> resourceList = resourcesMapper.listResourceByIds(integers.toArray(new Integer[integers.size()]));
+                childResourceList = resourceList.stream().map(t -> {
+                    t.setFullName(t.getFullName().replaceFirst(oldFullName, fullName));
+                    t.setUpdateTime(now);
+                    return t;
+                }).collect(Collectors.toList());
+                resourcesMapper.batchUpdateResource(childResourceList);
+            }
 
             putMsg(result, Status.SUCCESS);
             Map<Object, Object> dataMap = new BeanMap(resource);
diff --git a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ResourceMapper.java b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ResourceMapper.java
index cd7a473..b7b4447 100644
--- a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ResourceMapper.java
+++ b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ResourceMapper.java
@@ -123,4 +123,18 @@ public interface ResourceMapper extends BaseMapper<Resource> {
      * @return resource
      */
     List<Resource> queryResource(@Param("fullName") String fullName,@Param("pid") Integer pid,@Param("type") int type);
+
+    /**
+     * list resource by id array
+     * @param resIds resource id array
+     * @return resource list
+     */
+    List<Resource> listResourceByIds(@Param("resIds")Integer[] resIds);
+
+    /**
+     * update resource
+     * @param resourceList  resource list
+     * @return update num
+     */
+    int batchUpdateResource(@Param("resourceList") List<Resource> resourceList);
 }
diff --git a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ResourceMapper.xml b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ResourceMapper.xml
index e42b46a..57383ab 100644
--- a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ResourceMapper.xml
+++ b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ResourceMapper.xml
@@ -123,4 +123,26 @@
             and pid = #{pid}
         </if>
     </select>
+
+    <update id="batchUpdateResource" parameterType="java.util.List">
+        <foreach collection="resourceList" item="resource" index="index" open="" close="" separator =";">
+            update t_ds_resources
+            <set>
+                full_name=#{resource.fullName},
+                update_time=#{resource.updateTime}
+            </set>
+            <where>
+                id=#{resource.id}
+            </where>
+        </foreach>
+    </update>
+
+    <select id="listResourceByIds" resultType="org.apache.dolphinscheduler.dao.entity.Resource">
+        select *
+        from t_ds_resources
+        where id in
+        <foreach collection="resIds" item="i" open="(" close=")" separator=",">
+            #{i}
+        </foreach>
+    </select>
 </mapper>