Browse Source

copy resources need get top directory first (#2866)

* copy resources need get top directory first

* copy resources need get top directory first
lgcareer 4 years ago
parent
commit
6723454df9

+ 10 - 4
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/UsersService.java

@@ -18,6 +18,8 @@ package org.apache.dolphinscheduler.api.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.dolphinscheduler.api.dto.resources.ResourceComponent;
+import org.apache.dolphinscheduler.api.dto.resources.visitor.ResourceTreeVisitor;
 import org.apache.dolphinscheduler.api.enums.Status;
 import org.apache.dolphinscheduler.api.utils.CheckUtils;
 import org.apache.dolphinscheduler.api.utils.PageInfo;
@@ -334,8 +336,10 @@ public class UsersService extends BaseService {
                         List<Resource> fileResourcesList = resourceMapper.queryResourceList(
                                 null, userId, ResourceType.FILE.ordinal());
                         if (CollectionUtils.isNotEmpty(fileResourcesList)) {
-                            for (Resource resource : fileResourcesList) {
-                                HadoopUtils.getInstance().copy(oldResourcePath + "/" + resource.getAlias(), newResourcePath, false, true);
+                            ResourceTreeVisitor resourceTreeVisitor = new ResourceTreeVisitor(fileResourcesList);
+                            ResourceComponent resourceComponent = resourceTreeVisitor.visit();
+                            for (ResourceComponent resource : resourceComponent.getChildren()) {
+                                HadoopUtils.getInstance().copy(oldResourcePath + "/" + resource.getName(), newResourcePath, false, true);
                             }
                         }
 
@@ -343,8 +347,10 @@ public class UsersService extends BaseService {
                         List<Resource> udfResourceList = resourceMapper.queryResourceList(
                                 null, userId, ResourceType.UDF.ordinal());
                         if (CollectionUtils.isNotEmpty(udfResourceList)) {
-                            for (Resource resource : udfResourceList) {
-                                HadoopUtils.getInstance().copy(oldUdfsPath + "/" + resource.getAlias(), newUdfsPath, false, true);
+                            ResourceTreeVisitor resourceTreeVisitor = new ResourceTreeVisitor(udfResourceList);
+                            ResourceComponent resourceComponent = resourceTreeVisitor.visit();
+                            for (ResourceComponent resource : resourceComponent.getChildren()) {
+                                HadoopUtils.getInstance().copy(oldUdfsPath + "/" + resource.getName(), newUdfsPath, false, true);
                             }
                         }