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 3e29b12  Fix issue #2234 and #2228 (#2246)
3e29b12 is described below

commit 3e29b12d92f5302597ecf698cfac681a186bba52
Author: lgcareer <[email protected]>
AuthorDate: Fri Mar 20 10:09:38 2020 +0800

    Fix issue #2234 and #2228 (#2246)
    
    * 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
    
    * add queryResourceJarList
    
    * add queryResourceJarList
    
    * add queryResourceJarList
    
    * add resource filter in order to get filtered resource
    
    * add comments of resource filter
    
    * update list children by resource
    
    * Return null if query resource list is empty
    
    * update queryResource method change parameter pid to id
    
    * revert .env
    
    * remove parameter pid
    
    * Fix issue #2234 and #2228
    
    * change resource name with full name
---
 .../api/controller/ResourcesController.java        |  8 +--
 .../api/dto/resources/filter/ResourceFilter.java   | 15 ++---
 .../api/service/ResourcesService.java              | 68 ++++++++++++++--------
 .../dto/resources/filter/ResourceFilterTest.java   |  4 +-
 .../dao/mapper/ResourceMapper.java                 |  3 +-
 .../dao/mapper/ProcessDefinitionMapper.xml         |  2 +-
 .../dolphinscheduler/dao/mapper/ResourceMapper.xml |  7 +--
 dolphinscheduler-ui/.env                           |  2 +-
 8 files changed, 63 insertions(+), 46 deletions(-)

diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ResourcesController.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ResourcesController.java
index f9d3b1a..1d27f11 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ResourcesController.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ResourcesController.java
@@ -344,14 +344,14 @@ public class ResourcesController extends BaseController{
     @ResponseStatus(HttpStatus.OK)
     public Result queryResource(@ApiIgnore @RequestAttribute(value = 
Constants.SESSION_USER) User loginUser,
                                      @RequestParam(value ="fullName",required 
= false) String fullName,
-                                     @RequestParam(value ="pid",required = 
false) Integer pid,
+                                     @RequestParam(value ="id",required = 
false) Integer id,
                                      @RequestParam(value ="type") ResourceType 
type
     ) {
         try {
-            logger.info("login user {}, query resource by full name: {} or 
pid: {},resource type: {}",
-                    loginUser.getUserName(), fullName,pid,type);
+            logger.info("login user {}, query resource by full name: {} or id: 
{},resource type: {}",
+                    loginUser.getUserName(), fullName,id,type);
 
-            return resourceService.queryResource(fullName,pid,type);
+            return resourceService.queryResource(fullName,id,type);
         } catch (Exception e) {
             logger.error(RESOURCE_NOT_EXIST.getMsg(), e);
             return error(Status.RESOURCE_NOT_EXIST.getCode(), 
Status.RESOURCE_NOT_EXIST.getMsg());
diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/resources/filter/ResourceFilter.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/resources/filter/ResourceFilter.java
index 53f3d78..c918a16 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/resources/filter/ResourceFilter.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/resources/filter/ResourceFilter.java
@@ -38,6 +38,11 @@ public class ResourceFilter implements IFilter {
     private List<Resource> resourceList;
 
     /**
+     * parent list
+     */
+    //Set<Resource> parentList =  new HashSet<>();
+
+    /**
      * constructor
      * @param suffix        resource suffix
      * @param resourceList  resource list
@@ -68,8 +73,7 @@ public class ResourceFilter implements IFilter {
         Set<Resource> filterFileList = fileFilter();
         for(Resource file:filterFileList){
             parentList.add(file);
-            parentList.addAll(listAllParent(file));
-            //listAllParent(file);
+            setAllParent(file,parentList);
         }
         return parentList;
 
@@ -80,16 +84,13 @@ public class ResourceFilter implements IFilter {
      * @param resource  resource
      * @return parent resource dir set
      */
-    Set<Resource> listAllParent(Resource resource){
-        Set<Resource> parentList =  new HashSet<>();
+    private void setAllParent(Resource resource,Set<Resource> parentList){
         for (Resource resourceTemp : resourceList) {
             if (resourceTemp.getId() == resource.getPid()) {
                 parentList.add(resourceTemp);
-                listAllParent(resourceTemp);
+                setAllParent(resourceTemp,parentList);
             }
         }
-        return parentList;
-
     }
 
     @Override
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 3490061..6cfa3ba 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
@@ -336,7 +336,7 @@ public class ResourcesService extends BaseService {
 
         // updateResource data
 
-        List<Integer> integers = resourcesMapper.listChildren(resourceId);
+        List<Integer> childrenResource = 
resourcesMapper.listChildren(resourceId);
         String oldFullName = resource.getFullName();
         Date now = new Date();
 
@@ -347,9 +347,9 @@ public class ResourcesService extends BaseService {
 
         try {
             resourcesMapper.updateById(resource);
-            if (resource.isDirectory()) {
+            if (resource.isDirectory() && 
CollectionUtils.isNotEmpty(childrenResource)) {
                 List<Resource> childResourceList = new ArrayList<>();
-                List<Resource> resourceList = 
resourcesMapper.listResourceByIds(integers.toArray(new 
Integer[integers.size()]));
+                List<Resource> resourceList = 
resourcesMapper.listResourceByIds(childrenResource.toArray(new 
Integer[childrenResource.size()]));
                 childResourceList = resourceList.stream().map(t -> {
                     t.setFullName(t.getFullName().replaceFirst(oldFullName, 
fullName));
                     t.setUpdateTime(now);
@@ -378,8 +378,8 @@ public class ResourcesService extends BaseService {
 
         // get file hdfs path
         // delete hdfs file by type
-        String originHdfsFileName = 
HadoopUtils.getHdfsFileName(resource.getType(),tenantCode,originResourceName);
-        String destHdfsFileName = 
HadoopUtils.getHdfsFileName(resource.getType(),tenantCode,name);
+        String originHdfsFileName = 
HadoopUtils.getHdfsFileName(resource.getType(),tenantCode,originFullName);
+        String destHdfsFileName = 
HadoopUtils.getHdfsFileName(resource.getType(),tenantCode,fullName);
 
         try {
             if (HadoopUtils.getInstance().exists(originHdfsFileName)) {
@@ -664,26 +664,42 @@ public class ResourcesService extends BaseService {
     /**
      * verify resource by full name or pid and type
      * @param fullName  resource full name
-     * @param pid       parent id
+     * @param id        resource id
      * @param type      resource type
      * @return true if the resource full name or pid not exists, otherwise 
return false
      */
-    public Result queryResource(String fullName,Integer pid,ResourceType type) 
{
+    public Result queryResource(String fullName,Integer id,ResourceType type) {
         Result result = new Result();
-        if (StringUtils.isBlank(fullName) && pid == null) {
+        if (StringUtils.isBlank(fullName) && id == null) {
             logger.error("You must input one of fullName and pid");
             putMsg(result, Status.REQUEST_PARAMS_NOT_VALID_ERROR);
             return result;
         }
-        List<Resource> resourceList = 
resourcesMapper.queryResource(fullName,pid,type.ordinal());
-        if (CollectionUtils.isEmpty(resourceList)) {
-            logger.error("resource file not exist,  resource full name {}", 
fullName);
-            putMsg(result, Status.RESOURCE_NOT_EXIST);
-            return result;
+        if (StringUtils.isNotBlank(fullName)) {
+            List<Resource> resourceList = 
resourcesMapper.queryResource(fullName,type.ordinal());
+            if (CollectionUtils.isEmpty(resourceList)) {
+                logger.error("resource file not exist,  resource full name {} 
", fullName);
+                putMsg(result, Status.RESOURCE_NOT_EXIST);
+                return result;
+            }
+            putMsg(result, Status.SUCCESS);
+            result.setData(resourceList.get(0));
+        } else {
+            Resource resource = resourcesMapper.selectById(id);
+            if (resource == null) {
+                logger.error("resource file not exist,  resource id {}", id);
+                putMsg(result, Status.RESOURCE_NOT_EXIST);
+                return result;
+            }
+            Resource parentResource = 
resourcesMapper.selectById(resource.getPid());
+            if (parentResource == null) {
+                logger.error("parent resource file not exist,  resource id 
{}", id);
+                putMsg(result, Status.RESOURCE_NOT_EXIST);
+                return result;
+            }
+            putMsg(result, Status.SUCCESS);
+            result.setData(parentResource);
         }
-        putMsg(result, Status.SUCCESS);
-        result.setData(resourceList.get(0));
-
         return result;
     }
 
@@ -865,7 +881,7 @@ public class ResourcesService extends BaseService {
         resourcesMapper.updateById(resource);
 
 
-        result = uploadContentToHdfs(resource.getAlias(), tenantCode, content);
+        result = uploadContentToHdfs(resource.getFullName(), tenantCode, 
content);
         if (!result.getCode().equals(Status.SUCCESS.getCode())) {
             throw new RuntimeException(result.getMsg());
         }
@@ -1106,24 +1122,28 @@ public class ResourcesService extends BaseService {
      */
     List<Integer> listAllChildren(Resource resource){
         List<Integer> childList = new ArrayList<>();
-        childList.add(resource.getId());
+        if (resource.getId() != -1) {
+            childList.add(resource.getId());
+        }
+
         if(resource.isDirectory()){
-            childList.addAll(listAllChildren(resource.getId()));
+            listAllChildren(resource.getId(),childList);
         }
         return childList;
     }
 
     /**
      * list all children id
-     * @param resourceId resource id
-     * @return all children id
+     * @param resourceId    resource id
+     * @param childList     child list
      */
-    List<Integer> listAllChildren(int resourceId){
+    void listAllChildren(int resourceId,List<Integer> childList){
+
         List<Integer> children = resourcesMapper.listChildren(resourceId);
         for(int chlidId:children){
-            listAllChildren(chlidId);
+            childList.add(chlidId);
+            listAllChildren(chlidId,childList);
         }
-        return children;
     }
 
     /**
diff --git 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/dto/resources/filter/ResourceFilterTest.java
 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/dto/resources/filter/ResourceFilterTest.java
index 955fa23..8a4a16c 100644
--- 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/dto/resources/filter/ResourceFilterTest.java
+++ 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/dto/resources/filter/ResourceFilterTest.java
@@ -39,13 +39,15 @@ public class ResourceFilterTest {
         Resource resource3 = new Resource(5,3,"b1.txt","/b/b1.txt",false);
         Resource resource4 = new Resource(6,3,"b2.jar","/b/b2.jar",false);
         Resource resource5 = new Resource(7,-1,"b2","/b2",true);
-        Resource resource6 = new Resource(8,3,"c2.jar","/b/c2.jar",true);
+        Resource resource6 = new Resource(8,-1,"b2","/b/b2",true);
+        Resource resource7 = new Resource(9,8,"c2.jar","/b/b2/c2.jar",false);
         allList.add(resource1);
         allList.add(resource2);
         allList.add(resource3);
         allList.add(resource4);
         allList.add(resource5);
         allList.add(resource6);
+        allList.add(resource7);
 
 
         ResourceFilter resourceFilter = new ResourceFilter(".jar",allList);
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 b7b4447..f07a92c 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
@@ -118,11 +118,10 @@ public interface ResourceMapper extends 
BaseMapper<Resource> {
     /**
      * query resource by full name or pid
      * @param fullName  full name
-     * @param pid       parent id
      * @param type      resource type
      * @return resource
      */
-    List<Resource> queryResource(@Param("fullName") String 
fullName,@Param("pid") Integer pid,@Param("type") int type);
+    List<Resource> queryResource(@Param("fullName") String 
fullName,@Param("type") int type);
 
     /**
      * list resource by id array
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 377de30..c9086b9 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
@@ -92,6 +92,6 @@
     <select id="listResources" resultType="java.util.HashMap">
         SELECT id,resource_ids
         FROM t_ds_process_definition
-        WHERE release_state = 1 and resource_ids is not null
+        WHERE release_state = 1 and resource_ids is not null and resource_ids 
!= ''
     </select>
 </mapper>
\ No newline at end of file
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 57383ab..46fef9e 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
@@ -116,12 +116,7 @@
         select *
         from t_ds_resources
         where type = #{type}
-        <if test="fullName != null and fullName != ''">
-            and full_name = #{fullName}
-        </if>
-        <if test="pid != null and pid != 0">
-            and pid = #{pid}
-        </if>
+        and full_name = #{fullName}
     </select>
 
     <update id="batchUpdateResource" parameterType="java.util.List">
diff --git a/dolphinscheduler-ui/.env b/dolphinscheduler-ui/.env
index 4c7e96e..e676be6 100644
--- a/dolphinscheduler-ui/.env
+++ b/dolphinscheduler-ui/.env
@@ -17,4 +17,4 @@
 API_BASE = http://192.168.xx.xx:12345
 
 # If IP access is required for local development, remove the "#"
-#DEV_HOST = 192.168.xx.xx
\ No newline at end of file
+#DEV_HOST = 192.168.xx.xx

Reply via email to