package kr.wisestone.owl.service.impl; import com.google.common.collect.Lists; import kr.wisestone.owl.domain.Permission; import kr.wisestone.owl.domain.ProjectRole; import kr.wisestone.owl.domain.ProjectRolePermission; import kr.wisestone.owl.repository.ProjectRolePermissionRepository; import kr.wisestone.owl.service.PermissionService; import kr.wisestone.owl.service.ProjectRolePermissionService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; @Service public class ProjectRolePermissionServiceImpl extends AbstractServiceImpl> implements ProjectRolePermissionService { private static final Logger log = LoggerFactory.getLogger(ProjectRolePermissionServiceImpl.class); @Autowired private ProjectRolePermissionRepository projectRolePermissionRepository; @Autowired private PermissionService permissionService; @Override protected JpaRepository getRepository() { return this.projectRolePermissionRepository; } // 해당 프로젝트 역할과 권한을 연결시킨다. @Override @Transactional public void addDefaultProjectRoleAssociatedPermissions(ProjectRole projectRole, String roleType) { List permissions = this.permissionService.findByRoleType(roleType); List projectRolePermissions = Lists.newArrayList(); permissions.parallelStream().forEach(permission -> { ProjectRolePermission projectRolePermission = new ProjectRolePermission(projectRole, permission); projectRolePermissions.add(projectRolePermission); }); this.projectRolePermissionRepository.saveAll(projectRolePermissions); } }