Skip to content

Commit ba3ca5e

Browse files
committed
[Improvement-18249][DAO] Route ProjectUserMapper access through ProjectUserDao
Introduce ProjectUserDao so the api layer depends only on the repository abstraction. The Dao exposes queryProjectRelation as a straight delegate and packages deleteProjectRelation as void since the row-count return was never consulted at the api call sites. Tracking issue: #18249
1 parent 074c41c commit ba3ca5e

8 files changed

Lines changed: 100 additions & 28 deletions

File tree

dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/python/PythonGateway.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@
5151
import org.apache.dolphinscheduler.dao.entity.User;
5252
import org.apache.dolphinscheduler.dao.entity.WorkflowDefinition;
5353
import org.apache.dolphinscheduler.dao.mapper.DataSourceMapper;
54-
import org.apache.dolphinscheduler.dao.mapper.ProjectUserMapper;
5554
import org.apache.dolphinscheduler.dao.mapper.TaskDefinitionMapper;
5655
import org.apache.dolphinscheduler.dao.repository.ProjectDao;
56+
import org.apache.dolphinscheduler.dao.repository.ProjectUserDao;
5757
import org.apache.dolphinscheduler.dao.repository.ScheduleDao;
5858
import org.apache.dolphinscheduler.dao.repository.WorkflowDefinitionDao;
5959
import org.apache.dolphinscheduler.plugin.storage.api.StorageEntity;
@@ -138,7 +138,7 @@ public class PythonGateway {
138138
private ApiConfig apiConfig;
139139

140140
@Autowired
141-
private ProjectUserMapper projectUserMapper;
141+
private ProjectUserDao projectUserDao;
142142

143143
// TODO replace this user to build in admin user if we make sure build in one could not be change
144144
private final User dummyAdminUser = new User() {
@@ -391,7 +391,7 @@ private Integer grantProjectToUser(Project project, User user) {
391391
projectUser.setPerm(Constants.AUTHORIZE_WRITABLE_PERM);
392392
projectUser.setCreateTime(now);
393393
projectUser.setUpdateTime(now);
394-
return projectUserMapper.insert(projectUser);
394+
return projectUserDao.insert(projectUser);
395395
}
396396

397397
/*
@@ -406,7 +406,7 @@ public void createOrGrantProject(String userName, String name, String desc) {
406406
if (project == null) {
407407
projectService.createProject(user, name, desc);
408408
} else if (project.getUserId() != user.getId()) {
409-
ProjectUser projectUser = projectUserMapper.queryProjectRelation(project.getId(), user.getId());
409+
ProjectUser projectUser = projectUserDao.queryProjectRelation(project.getId(), user.getId());
410410
if (projectUser == null) {
411411
grantProjectToUser(project, user);
412412
}

dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectServiceImpl.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@
3636
import org.apache.dolphinscheduler.dao.entity.ProjectWorkflowDefinitionCount;
3737
import org.apache.dolphinscheduler.dao.entity.User;
3838
import org.apache.dolphinscheduler.dao.entity.WorkflowDefinition;
39-
import org.apache.dolphinscheduler.dao.mapper.ProjectUserMapper;
4039
import org.apache.dolphinscheduler.dao.mapper.UserMapper;
4140
import org.apache.dolphinscheduler.dao.repository.ProjectDao;
41+
import org.apache.dolphinscheduler.dao.repository.ProjectUserDao;
4242
import org.apache.dolphinscheduler.dao.repository.WorkflowDefinitionDao;
4343

4444
import org.apache.commons.collections4.CollectionUtils;
@@ -79,7 +79,7 @@ public class ProjectServiceImpl extends BaseServiceImpl implements ProjectServic
7979
private ProjectDao projectDao;
8080

8181
@Autowired
82-
private ProjectUserMapper projectUserMapper;
82+
private ProjectUserDao projectUserDao;
8383

8484
@Autowired
8585
private WorkflowDefinitionDao workflowDefinitionDao;
@@ -219,7 +219,7 @@ public void checkHasProjectWritePermissionThrowException(User loginUser, Project
219219
return;
220220
}
221221
// case 3: check user permission level
222-
ProjectUser projectUser = projectUserMapper.queryProjectRelation(project.getId(), loginUser.getId());
222+
ProjectUser projectUser = projectUserDao.queryProjectRelation(project.getId(), loginUser.getId());
223223
if (projectUser == null || projectUser.getPerm() != Constants.DEFAULT_ADMIN_PERMISSION) {
224224
throw new ServiceException(Status.USER_NO_WRITE_PROJECT_PERM, loginUser.getUserName(), project.getCode());
225225
}
@@ -312,7 +312,7 @@ public Result queryProjectWithAuthorizedLevelListPaging(Integer userId, User log
312312

313313
for (Project project : projectList) {
314314
if (userProjectIds.contains(project.getId())) {
315-
ProjectUser projectUser = projectUserMapper.queryProjectRelation(project.getId(), userId);
315+
ProjectUser projectUser = projectUserDao.queryProjectRelation(project.getId(), userId);
316316
if (projectUser == null) {
317317
// in this case, the user is the project owner, maybe it's better to set it to ALL_PERMISSION.
318318
project.setPerm(Constants.DEFAULT_ADMIN_PERMISSION);
@@ -610,7 +610,7 @@ private int queryPermission(User user, Project project) {
610610
return Constants.ALL_PERMISSIONS;
611611
}
612612

613-
ProjectUser projectUser = projectUserMapper.queryProjectRelation(project.getId(), user.getId());
613+
ProjectUser projectUser = projectUserDao.queryProjectRelation(project.getId(), user.getId());
614614

615615
if (projectUser == null) {
616616
return 0;

dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/TaskGroupServiceImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@
3232
import org.apache.dolphinscheduler.dao.entity.ProjectUser;
3333
import org.apache.dolphinscheduler.dao.entity.TaskGroup;
3434
import org.apache.dolphinscheduler.dao.entity.User;
35-
import org.apache.dolphinscheduler.dao.mapper.ProjectUserMapper;
3635
import org.apache.dolphinscheduler.dao.mapper.TaskGroupMapper;
3736
import org.apache.dolphinscheduler.dao.repository.ProjectDao;
37+
import org.apache.dolphinscheduler.dao.repository.ProjectUserDao;
3838

3939
import org.apache.commons.collections4.CollectionUtils;
4040
import org.apache.commons.lang3.StringUtils;
@@ -65,7 +65,7 @@ public class TaskGroupServiceImpl extends BaseServiceImpl implements TaskGroupSe
6565
private ProjectDao projectDao;
6666

6767
@Autowired
68-
private ProjectUserMapper projectUserMapper;
68+
private ProjectUserDao projectUserDao;
6969

7070
@Autowired
7171
private TaskGroupQueueService taskGroupQueueService;
@@ -285,7 +285,7 @@ private void requireProjectPerm(User loginUser, long projectCode, boolean writeP
285285
if (project.getUserId().equals(loginUser.getId())) {
286286
return;
287287
}
288-
ProjectUser projectUser = projectUserMapper.queryProjectRelation(project.getId(), loginUser.getId());
288+
ProjectUser projectUser = projectUserDao.queryProjectRelation(project.getId(), loginUser.getId());
289289
if (projectUser == null) {
290290
log.warn("User {} does not have operation permission for project {}", loginUser.getUserName(),
291291
project.getCode());

dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/UsersServiceImpl.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@
4343
import org.apache.dolphinscheduler.dao.mapper.AlertGroupMapper;
4444
import org.apache.dolphinscheduler.dao.mapper.DataSourceUserMapper;
4545
import org.apache.dolphinscheduler.dao.mapper.K8sNamespaceUserMapper;
46-
import org.apache.dolphinscheduler.dao.mapper.ProjectUserMapper;
4746
import org.apache.dolphinscheduler.dao.mapper.UserMapper;
4847
import org.apache.dolphinscheduler.dao.repository.ProjectDao;
48+
import org.apache.dolphinscheduler.dao.repository.ProjectUserDao;
4949
import org.apache.dolphinscheduler.dao.repository.TenantDao;
5050

5151
import org.apache.commons.collections4.CollectionUtils;
@@ -86,7 +86,7 @@ public class UsersServiceImpl extends BaseServiceImpl implements UsersService {
8686
private TenantDao tenantDao;
8787

8888
@Autowired
89-
private ProjectUserMapper projectUserMapper;
89+
private ProjectUserDao projectUserDao;
9090

9191
@Autowired
9292
private DataSourceUserMapper datasourceUserMapper;
@@ -485,7 +485,7 @@ public void revokeProjectById(User loginUser, int userId, String projectIds) {
485485
Project project = this.projectDao.queryDetailById(Integer.parseInt(projectId));
486486
if (project != null) {
487487
// 4. delete the relationship between project and user
488-
this.projectUserMapper.deleteProjectRelation(project.getId(), user.getId());
488+
this.projectUserDao.deleteProjectRelation(project.getId(), user.getId());
489489
}
490490
});
491491
}
@@ -515,9 +515,9 @@ public void grantProjectWithReadPerm(User loginUser, int userId, String projectI
515515
return;
516516
}
517517
Arrays.stream(projectIds.split(Constants.COMMA)).distinct().forEach(projectId -> {
518-
ProjectUser projectUserOld = projectUserMapper.queryProjectRelation(Integer.parseInt(projectId), userId);
518+
ProjectUser projectUserOld = projectUserDao.queryProjectRelation(Integer.parseInt(projectId), userId);
519519
if (projectUserOld != null) {
520-
projectUserMapper.deleteProjectRelation(Integer.parseInt(projectId), userId);
520+
projectUserDao.deleteProjectRelation(Integer.parseInt(projectId), userId);
521521
}
522522
Date now = new Date();
523523
ProjectUser projectUser = new ProjectUser();
@@ -526,7 +526,7 @@ public void grantProjectWithReadPerm(User loginUser, int userId, String projectI
526526
projectUser.setPerm(Constants.READ_PERMISSION);
527527
projectUser.setCreateTime(now);
528528
projectUser.setUpdateTime(now);
529-
projectUserMapper.insert(projectUser);
529+
projectUserDao.insert(projectUser);
530530
});
531531
}
532532

@@ -557,9 +557,9 @@ public void grantProject(User loginUser, int userId, String projectIds) {
557557
return;
558558
}
559559
Arrays.stream(projectIds.split(",")).distinct().forEach(projectId -> {
560-
ProjectUser projectUserOld = projectUserMapper.queryProjectRelation(Integer.parseInt(projectId), userId);
560+
ProjectUser projectUserOld = projectUserDao.queryProjectRelation(Integer.parseInt(projectId), userId);
561561
if (projectUserOld != null) {
562-
projectUserMapper.deleteProjectRelation(Integer.parseInt(projectId), userId);
562+
projectUserDao.deleteProjectRelation(Integer.parseInt(projectId), userId);
563563
}
564564
Date now = new Date();
565565
ProjectUser projectUser = new ProjectUser();
@@ -568,7 +568,7 @@ public void grantProject(User loginUser, int userId, String projectIds) {
568568
projectUser.setPerm(Constants.AUTHORIZE_WRITABLE_PERM);
569569
projectUser.setCreateTime(now);
570570
projectUser.setUpdateTime(now);
571-
projectUserMapper.insert(projectUser);
571+
projectUserDao.insert(projectUser);
572572
});
573573
}
574574

@@ -604,7 +604,7 @@ public void grantProjectByCode(final User loginUser, final int userId, final lon
604604
}
605605

606606
// 4. maintain the relationship between project and user if not exists
607-
ProjectUser projectUser = projectUserMapper.queryProjectRelation(project.getId(), userId);
607+
ProjectUser projectUser = projectUserDao.queryProjectRelation(project.getId(), userId);
608608
if (projectUser == null) {
609609
Date today = new Date();
610610
projectUser = new ProjectUser();
@@ -613,7 +613,7 @@ public void grantProjectByCode(final User loginUser, final int userId, final lon
613613
projectUser.setPerm(Constants.AUTHORIZE_WRITABLE_PERM);
614614
projectUser.setCreateTime(today);
615615
projectUser.setUpdateTime(today);
616-
this.projectUserMapper.insert(projectUser);
616+
this.projectUserDao.insert(projectUser);
617617
}
618618
log.info("User is granted permission for projects, userId:{}, projectCode:{}.", userId, projectCode);
619619
}
@@ -649,7 +649,7 @@ public void revokeProject(User loginUser, int userId, long projectCode) {
649649
}
650650

651651
// 4. delete th relationship between project and user
652-
this.projectUserMapper.deleteProjectRelation(project.getId(), user.getId());
652+
this.projectUserDao.deleteProjectRelation(project.getId(), user.getId());
653653
log.info("User is revoked permission for projects, userId:{}, projectCode:{}.", userId, projectCode);
654654
}
655655

dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectServiceTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@
3636
import org.apache.dolphinscheduler.dao.entity.Project;
3737
import org.apache.dolphinscheduler.dao.entity.User;
3838
import org.apache.dolphinscheduler.dao.entity.WorkflowDefinition;
39-
import org.apache.dolphinscheduler.dao.mapper.ProjectUserMapper;
4039
import org.apache.dolphinscheduler.dao.mapper.UserMapper;
4140
import org.apache.dolphinscheduler.dao.repository.ProjectDao;
41+
import org.apache.dolphinscheduler.dao.repository.ProjectUserDao;
4242
import org.apache.dolphinscheduler.dao.repository.WorkflowDefinitionDao;
4343

4444
import org.apache.commons.collections4.CollectionUtils;
@@ -81,7 +81,7 @@ public class ProjectServiceTest {
8181
private ProjectDao projectDao;
8282

8383
@Mock
84-
private ProjectUserMapper projectUserMapper;
84+
private ProjectUserDao projectUserDao;
8585

8686
@Mock
8787
private TaskGroupService taskGroupService;

dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/UsersServiceTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@
4141
import org.apache.dolphinscheduler.dao.mapper.AlertGroupMapper;
4242
import org.apache.dolphinscheduler.dao.mapper.DataSourceUserMapper;
4343
import org.apache.dolphinscheduler.dao.mapper.K8sNamespaceUserMapper;
44-
import org.apache.dolphinscheduler.dao.mapper.ProjectUserMapper;
4544
import org.apache.dolphinscheduler.dao.mapper.UserMapper;
4645
import org.apache.dolphinscheduler.dao.repository.ProjectDao;
46+
import org.apache.dolphinscheduler.dao.repository.ProjectUserDao;
4747
import org.apache.dolphinscheduler.dao.repository.TenantDao;
4848

4949
import java.util.ArrayList;
@@ -84,7 +84,7 @@ public class UsersServiceTest {
8484
private TenantDao tenantDao;
8585

8686
@Mock
87-
private ProjectUserMapper projectUserMapper;
87+
private ProjectUserDao projectUserDao;
8888

8989
@Mock
9090
private AlertGroupMapper alertGroupMapper;
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one or more
3+
* contributor license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright ownership.
5+
* The ASF licenses this file to You under the Apache License, Version 2.0
6+
* (the "License"); you may not use this file except in compliance with
7+
* the License. You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
18+
package org.apache.dolphinscheduler.dao.repository;
19+
20+
import org.apache.dolphinscheduler.dao.entity.ProjectUser;
21+
22+
public interface ProjectUserDao extends IDao<ProjectUser> {
23+
24+
ProjectUser queryProjectRelation(int projectId, int userId);
25+
26+
void deleteProjectRelation(int projectId, int userId);
27+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one or more
3+
* contributor license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright ownership.
5+
* The ASF licenses this file to You under the Apache License, Version 2.0
6+
* (the "License"); you may not use this file except in compliance with
7+
* the License. You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
18+
package org.apache.dolphinscheduler.dao.repository.impl;
19+
20+
import org.apache.dolphinscheduler.dao.entity.ProjectUser;
21+
import org.apache.dolphinscheduler.dao.mapper.ProjectUserMapper;
22+
import org.apache.dolphinscheduler.dao.repository.BaseDao;
23+
import org.apache.dolphinscheduler.dao.repository.ProjectUserDao;
24+
25+
import lombok.NonNull;
26+
27+
import org.springframework.stereotype.Repository;
28+
29+
@Repository
30+
public class ProjectUserDaoImpl extends BaseDao<ProjectUser, ProjectUserMapper> implements ProjectUserDao {
31+
32+
public ProjectUserDaoImpl(@NonNull ProjectUserMapper projectUserMapper) {
33+
super(projectUserMapper);
34+
}
35+
36+
@Override
37+
public ProjectUser queryProjectRelation(int projectId, int userId) {
38+
return mybatisMapper.queryProjectRelation(projectId, userId);
39+
}
40+
41+
@Override
42+
public void deleteProjectRelation(int projectId, int userId) {
43+
mybatisMapper.deleteProjectRelation(projectId, userId);
44+
}
45+
}

0 commit comments

Comments
 (0)