This is an automated email from the ASF dual-hosted git repository.
chenxingchun 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 dd868aa need query all authorized directory children when create task
new 03b269b Merge pull request #2285 from lgcareer/dev-resource-tree
dd868aa is described below
commit dd868aa499a3c387072fbd74c333291797cf1956
Author: lgcareer <[email protected]>
AuthorDate: Mon Mar 23 17:47:48 2020 +0800
need query all authorized directory children when create task
---
.../api/service/ResourcesService.java | 51 +++++++++++++++-------
.../dolphinscheduler/dao/mapper/ResourceMapper.xml | 2 +-
2 files changed, 36 insertions(+), 17 deletions(-)
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 06f7071..be141c2 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,8 +336,7 @@ public class ResourcesService extends BaseService {
}
// updateResource data
-
- List<Integer> childrenResource =
resourcesMapper.listChildren(resourceId);
+ List<Integer> childrenResource = listAllChildren(resource);
String oldFullName = resource.getFullName();
Date now = new Date();
@@ -505,13 +504,9 @@ public class ResourcesService extends BaseService {
public Map<String, Object> queryResourceList(User loginUser, ResourceType
type) {
Map<String, Object> result = new HashMap<>(5);
- List<Resource> resourceList;
- int userId = loginUser.getId();
- if(isAdmin(loginUser)){
- userId = 0;
- }
- resourceList = resourcesMapper.queryResourceListAuthored(userId,
type.ordinal());
- Visitor resourceTreeVisitor = new ResourceTreeVisitor(resourceList);
+
+ Set<Resource> allResourceList = getAllResources(loginUser, type);
+ Visitor resourceTreeVisitor = new ResourceTreeVisitor(new
ArrayList<>(allResourceList));
//JSONArray jsonArray =
JSON.parseArray(JSON.toJSONString(resourceTreeVisitor.visit().getChildren(),
SerializerFeature.SortField));
result.put(Constants.DATA_LIST,
resourceTreeVisitor.visit().getChildren());
putMsg(result,Status.SUCCESS);
@@ -520,6 +515,34 @@ public class ResourcesService extends BaseService {
}
/**
+ * get all resources
+ * @param loginUser login user
+ * @return all resource set
+ */
+ private Set<Resource> getAllResources(User loginUser, ResourceType type) {
+ int userId = loginUser.getId();
+ boolean listChildren = true;
+ if(isAdmin(loginUser)){
+ userId = 0;
+ listChildren = false;
+ }
+ List<Resource> resourceList =
resourcesMapper.queryResourceListAuthored(userId, type.ordinal());
+ Set<Resource> allResourceList = new HashSet<>(resourceList);
+ if (listChildren) {
+ Set<Integer> authorizedIds = new HashSet<>();
+ List<Resource> authorizedDirecoty =
resourceList.stream().filter(t->t.getUserId() != loginUser.getId() &&
t.isDirectory()).collect(Collectors.toList());
+ if (CollectionUtils.isNotEmpty(authorizedDirecoty)) {
+ for(Resource resource : authorizedDirecoty){
+ authorizedIds.addAll(listAllChildren(resource));
+ }
+ List<Resource> childrenResources =
resourcesMapper.listResourceByIds(authorizedIds.toArray(new
Integer[authorizedIds.size()]));
+ allResourceList.addAll(childrenResources);
+ }
+ }
+ return allResourceList;
+ }
+
+ /**
* query resource list
*
* @param loginUser login user
@@ -529,13 +552,9 @@ public class ResourcesService extends BaseService {
public Map<String, Object> queryResourceJarList(User loginUser,
ResourceType type) {
Map<String, Object> result = new HashMap<>(5);
- List<Resource> resourceList;
- int userId = loginUser.getId();
- if(isAdmin(loginUser)){
- userId = 0;
- }
- resourceList = resourcesMapper.queryResourceListAuthored(userId,
type.ordinal());
- List<Resource> resources = new
ResourceFilter(".jar",resourceList).filter();
+
+ Set<Resource> allResourceList = getAllResources(loginUser, type);
+ List<Resource> resources = new ResourceFilter(".jar",new
ArrayList<>(allResourceList)).filter();
Visitor resourceTreeVisitor = new ResourceTreeVisitor(resources);
result.put(Constants.DATA_LIST,
resourceTreeVisitor.visit().getChildren());
putMsg(result,Status.SUCCESS);
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 46fef9e..c1fe50f 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
@@ -48,7 +48,7 @@
select *
from t_ds_resources
where type=#{type} and pid=#{id}
- <if test="userId != 0">
+ <if test="userId != 0 and id == -1">
and id in (select resources_id from t_ds_relation_resources_user
where user_id=#{userId}
union select id as resources_id from t_ds_resources where
user_id=#{userId})
</if>