Open Kilda Java Documentation
RoleService.java
Go to the documentation of this file.
1 package org.usermanagement.service;
2 
3 import org.slf4j.Logger;
4 import org.slf4j.LoggerFactory;
5 
6 import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.stereotype.Service;
8 import org.springframework.transaction.annotation.Propagation;
9 import org.springframework.transaction.annotation.Transactional;
10 
11 import java.util.ArrayList;
12 import java.util.HashSet;
13 import java.util.List;
14 import java.util.Set;
15 
32 
33 @Service
34 @Transactional(propagation = Propagation.REQUIRED, readOnly = true)
35 public class RoleService {
36 
37  private static final Logger LOGGER = LoggerFactory.getLogger(RoleService.class);
38 
39  @Autowired
40  private RoleRepository roleRepository;
41 
42  @Autowired
43  private PermissionRepository permissionRepository;
44 
45  @Autowired
46  private UserRepository userRepository;
47 
48  @Autowired
49  private MessageUtils messageUtil;
50 
51  @Autowired
52  private RoleValidator roleValidator;
53 
54  @Autowired
55  private ActivityLogger activityLogger;
56 
57  @Transactional(propagation = Propagation.REQUIRED, readOnly = false)
58  public Role createRole(final Role role) {
59  roleValidator.validateRole(role);
60  Set<PermissionEntity> permissionEntities = new HashSet<>();
61  List<PermissionEntity> permissionEntityList = permissionRepository.findAll();
62  for (Long permissionId : role.getPermissionId()) {
63  PermissionEntity permissionEntity = permissionEntityList.parallelStream()
64  .filter((entity) -> entity.getPermissionId().equals(permissionId)).findFirst()
65  .orElse(null);
66 
67  if (!ValidatorUtil.isNull(permissionEntity)) {
68  permissionEntities.add(permissionEntity);
69  } else {
70  LOGGER.error("Permission with id '" + permissionId + "' not found.");
72  messageUtil.getAttributeNotFound("permission"));
73  }
74  }
75 
76  RoleEntity roleEntity = RoleConversionUtil.toRoleEntity(role, permissionEntities);
77  roleRepository.save(roleEntity);
78  activityLogger.log(ActivityType.CREATE_ROLE, role.getName());
79  LOGGER.info("Role with name '" + roleEntity.getName() + "' created successfully.");
80  return RoleConversionUtil.toRole(roleEntity, true, false);
81  }
82 
83  @Transactional(propagation = Propagation.REQUIRED, readOnly = false)
84  public List<Role> getAllRole() {
85  List<RoleEntity> roleEntityList = roleRepository.findAll();
86  List<Role> roleList = RoleConversionUtil.toAllRoleResponse(roleEntityList);
87  return roleList;
88  }
89 
90  @Transactional(propagation = Propagation.REQUIRED, readOnly = false)
91  public Set<RoleEntity> getRolesById(final List<Long> roleIds) {
92  Set<RoleEntity> roleEntities = new HashSet<>();
93  List<RoleEntity> roleEntityList = roleRepository.findAll();
94  for (Long roleId : roleIds) {
95  RoleEntity roleEntity = roleEntityList.parallelStream()
96  .filter((entity) -> entity.getRoleId().equals(roleId)).findFirst().orElse(null);
97 
98  if (!ValidatorUtil.isNull(roleEntity)) {
99  roleEntities.add(roleEntity);
100  } else {
101  LOGGER.error("Role with role id '" + roleId + "' not found. Error: "
102  + messageUtil.getAttributeNotFound("roles"));
103  throw new RequestValidationException(messageUtil.getAttributeNotFound("roles"));
104  }
105  }
106  return roleEntities;
107  }
108 
109  @Transactional(propagation = Propagation.REQUIRED, readOnly = false)
110  public Role getRoleById(final Long roleId) {
111  RoleEntity roleEntity = roleRepository.findByRoleId(roleId);
112  if (ValidatorUtil.isNull(roleEntity)) {
113  LOGGER.error("Role with role id '" + roleId + "' not found. Error: "
114  + messageUtil.getAttributeInvalid("role_id", roleId + ""));
115  throw new RequestValidationException(
116  messageUtil.getAttributeInvalid("role_id", roleId + ""));
117  }
118 
119  return RoleConversionUtil.toRole(roleEntity, true, false);
120  }
121 
122  @Transactional(propagation = Propagation.REQUIRED, readOnly = false)
123  public void deleteRoleById(final Long roleId) {
124 
125  RoleEntity roleEntity = roleRepository.findByRoleId(roleId);
126  if (ValidatorUtil.isNull(roleEntity)) {
127  LOGGER.error("Role with role id '" + roleId + "' not found. Error: "
128  + messageUtil.getAttributeInvalid("role_id", roleId + ""));
129  throw new RequestValidationException(
130  messageUtil.getAttributeInvalid("role_id", roleId + ""));
131  }
132 
133  Set<UserEntity> userEntityList = userRepository.findByRoles_roleId(roleId);
134  if (userEntityList.size() > 0) {
135  String users = "";
136  for (UserEntity userEntity : userEntityList) {
137  users += !"".equals(users) ? "," + userEntity.getName() : userEntity.getName();
138  }
139  LOGGER.error("Role with role id '" + roleId + "' not allowed to delete. Error: "
140  + messageUtil.getAttributeDeletionNotAllowed(roleEntity.getName(), users));
141  throw new RequestValidationException(
142  messageUtil.getAttributeDeletionNotAllowed(roleEntity.getName(), users));
143  }
144  roleRepository.delete(roleEntity);
145  activityLogger.log(ActivityType.DELETE_ROLE, roleEntity.getName());
146  LOGGER.info("Role(roleId: " + roleId + ") deleted successfully.");
147  }
148 
149  @Transactional(propagation = Propagation.REQUIRED, readOnly = false)
150  public Permission getRolesByPermissionId(final Long permissionId) {
151 
152  PermissionEntity permissionEntity = permissionRepository.findByPermissionId(permissionId);
153 
154  Set<RoleEntity> roleEntityList =
155  roleRepository.findByPermissions_permissionId(permissionId);
156 
157  return RoleConversionUtil.toPermissionByRole(roleEntityList, permissionEntity);
158  }
159 
160  @Transactional(propagation = Propagation.REQUIRED, readOnly = false)
161  public Role updateRole(final Long roleId, final Role role) {
162 
163  roleValidator.validateUpdateRole(role, roleId);
164 
165  RoleEntity roleEntity = roleRepository.findByRoleId(roleId);
166 
167  if (ValidatorUtil.isNull(roleEntity)) {
168  LOGGER.error("Role with role id '" + roleId + "' not found. Error: "
169  + messageUtil.getAttributeInvalid("role_id", roleId + ""));
170  throw new RequestValidationException(
171  messageUtil.getAttributeInvalid("role_id", roleId + ""));
172  }
173 
174  if (role.getPermissionId() != null) {
175  roleEntity.getPermissions().clear();
176  for (Long permissionId : role.getPermissionId()) {
177  PermissionEntity permissionEntity =
178  permissionRepository.findByPermissionId(permissionId);
179  if (permissionEntity != null) {
180  roleEntity.getPermissions().add(permissionEntity);
181  }
182  }
183  }
184  roleEntity = RoleConversionUtil.toUpateRoleEntity(role, roleEntity);
185  roleRepository.save(roleEntity);
186  activityLogger.log(ActivityType.UPDATE_ROLE, roleEntity.getName());
187  LOGGER.info("Role updated successfully (roleId: " + roleId + ")");
188  return RoleConversionUtil.toRole(roleEntity, true, false);
189 
190  }
191 
192  @Transactional(propagation = Propagation.REQUIRED, readOnly = false)
193  public Permission assignRoleByPermissionId(final Long permissionId, final Permission request) {
194  PermissionEntity permissionEntity = permissionRepository.findByPermissionId(permissionId);
195 
196  if (ValidatorUtil.isNull(permissionEntity)) {
197  LOGGER.error("Permission with permissionId '" + permissionId + "' not found. Error: "
198  + messageUtil.getAttributeInvalid("permissionId", permissionId + ""));
199  throw new RequestValidationException(
200  messageUtil.getAttributeInvalid("permissionId", permissionId + ""));
201  }
202  permissionEntity.getRoles().clear();
203  if (request.getRoles() != null) {
204  for (Role role : request.getRoles()) {
205  RoleEntity roleEntity = roleRepository.findByRoleId(role.getRoleId());
206  permissionEntity.getRoles().add(roleEntity);
207  }
208  }
209  permissionRepository.save(permissionEntity);
210  activityLogger.log(ActivityType.ASSIGN_ROLES_TO_PERMISSION, permissionEntity.getName());
211  LOGGER.info("Roles assigned with permission successfully (permissionId: " + permissionId + ")");
212  return RoleConversionUtil.toPermissionByRole(permissionEntity.getRoles(), permissionEntity);
213  }
214 
215  @Transactional(propagation = Propagation.REQUIRED, readOnly = false)
216  public List<Role> getRoleByName(final Set<String> role) {
217  List<Role> roles = new ArrayList<Role>();
218  List<RoleEntity> roleEntities = roleRepository.findByNameIn(role);
219  if (ValidatorUtil.isNull(roleEntities)) {
220  LOGGER.error("Roles with name '" + role + "' not found. Error: "
221  + messageUtil.getAttributeInvalid("role", role + ""));
222  throw new RequestValidationException(
223  messageUtil.getAttributeInvalid("role", role + ""));
224  }
225  for (RoleEntity roleEntity : roleEntities) {
226  if (Status.ACTIVE.getStatusEntity().getStatus()
227  .equalsIgnoreCase(roleEntity.getStatusEntity().getStatus())) {
228  roles.add(RoleConversionUtil.toRole(roleEntity, true, false));
229  }
230  }
231  return roles;
232  }
233 
240  @Transactional(propagation = Propagation.REQUIRED, readOnly = false)
241  public Role getUserByRoleId(final Long roleId) {
242  RoleEntity roleEntity = roleRepository.findByRoleId(roleId);
243  if (ValidatorUtil.isNull(roleEntity)) {
244  LOGGER.error("Role with role id '" + roleId + "' not found. Error: "
245  + messageUtil.getAttributeInvalid("role_id", roleId + ""));
246  throw new RequestValidationException(
247  messageUtil.getAttributeInvalid("role_id", roleId + ""));
248  }
249  return RoleConversionUtil.toRole(roleEntity, false, true);
250  }
251 }
Set< PermissionEntity > getPermissions()
Definition: RoleEntity.java:95
static RoleEntity toRoleEntity(final Role role, final Set< PermissionEntity > permissionEntitySet)
static List< Role > toAllRoleResponse(final List< RoleEntity > roleEntityList)
static Permission toPermissionByRole(final Set< RoleEntity > roleEntityList, final PermissionEntity permissionEntity)
static boolean isNull(final Object obj)
static Role toRole(final RoleEntity roleEntity, final boolean withPermissions, final boolean withUsers)
static RoleEntity toUpateRoleEntity(final Role role, final RoleEntity roleEntity)