1 package org.oxerr.commons.user.service.impl;
2
3 import java.util.Optional;
4 import java.util.UUID;
5
6 import javax.annotation.PostConstruct;
7
8 import org.oxerr.commons.user.domain.QRole;
9 import org.oxerr.commons.user.domain.Role;
10 import org.oxerr.commons.user.repository.RoleRepository;
11 import org.oxerr.commons.user.service.RoleService;
12 import org.springframework.beans.factory.annotation.Autowired;
13 import org.springframework.data.domain.Page;
14 import org.springframework.data.domain.Pageable;
15 import org.springframework.stereotype.Service;
16
17 import com.querydsl.core.types.ExpressionUtils;
18 import com.querydsl.core.types.Predicate;
19
20 @Service
21 public class RoleServiceImpl implements RoleService {
22
23 private final QRole qRole = QRole.role;
24
25 private final RoleRepository roleRepository;
26
27 @Autowired
28 public RoleServiceImpl(RoleRepository roleRepository) {
29 this.roleRepository = roleRepository;
30 }
31
32 @Override
33 public Role saveRole(Role role) {
34 return this.roleRepository.save(role);
35 }
36
37 @Override
38 public Optional<Role> getRole(UUID id) {
39 return this.roleRepository.findById(id);
40 }
41
42 @Override
43 public Optional<Role> getRoleByName(String name) {
44 return this.roleRepository.findByName(name);
45 }
46
47 @Override
48 public Page<Role> getRoles(String name, Pageable pageable) {
49 final Predicate predicate = ExpressionUtils.allOf(
50 name != null ? qRole.name.eq(name) : null
51 );
52 return this.roleRepository.findAll(predicate, pageable);
53 }
54
55 @PostConstruct
56 private void init() {
57 this.getRoleByName(Role.ROLE_ADMIN)
58 .orElseGet(() -> this.saveRole(new Role(Role.ROLE_ADMIN)));
59 this.getRoleByName(Role.ROLE_USER)
60 .orElseGet(() -> this.saveRole(new Role(Role.ROLE_USER)));
61 }
62
63 }