Commit bb4bc541bbd346cbccefb8cd833708758e84d338

Authored by rvangrev
1 parent 01d94034

TP terminé

src/main/java/fr/plil/sio/persistence/jpa/UserServiceJpa.java
1 package fr.plil.sio.persistence.jpa; 1 package fr.plil.sio.persistence.jpa;
2 2
  3 +import fr.plil.sio.persistence.api.Group;
3 import fr.plil.sio.persistence.api.Right; 4 import fr.plil.sio.persistence.api.Right;
4 import fr.plil.sio.persistence.api.User; 5 import fr.plil.sio.persistence.api.User;
5 import fr.plil.sio.persistence.api.UserService; 6 import fr.plil.sio.persistence.api.UserService;
  7 +import java.util.List;
  8 +import org.springframework.beans.factory.annotation.Autowired;
6 import org.springframework.stereotype.Service; 9 import org.springframework.stereotype.Service;
7 10
8 @Service 11 @Service
9 public class UserServiceJpa implements UserService { 12 public class UserServiceJpa implements UserService {
  13 +
  14 + @Autowired
  15 + private UserRepository userRepository;
  16 +
  17 + @Autowired
  18 + private GroupRepository groupRepository;
  19 +
  20 + @Autowired
  21 + private RightRepository rightRepository;
  22 +
10 @Override 23 @Override
11 public User create(String name, String groupName) { 24 public User create(String name, String groupName) {
12 - return null; 25 +
  26 + if(name==null || groupName==null){
  27 + throw new IllegalArgumentException("name cannot be null");
  28 + }
  29 +
  30 + Group group = new Group();
  31 + group = groupRepository.findByName(groupName);
  32 + User user = userRepository.findByName(name);
  33 +
  34 + if(group==null){
  35 + throw new IllegalArgumentException("group trouve avec le find by name null");
  36 + }
  37 +
  38 + if(user!=null){
  39 + throw new IllegalStateException("a user with the same name already exists");
  40 + }
  41 +
  42 + user = new User();
  43 + user.setName(name);
  44 +
  45 + if(group!=null)
  46 + user.setGroup(group);
  47 +
  48 + group.getUsers().add(user);
  49 +
  50 + userRepository.save(user);
  51 +
  52 + return user;
13 } 53 }
14 54
15 @Override 55 @Override
16 public boolean delete(String name) { 56 public boolean delete(String name) {
17 - return false; 57 + if(name == null){
  58 + throw new IllegalArgumentException("name cannot be null");
  59 + }
  60 + User user = findByName(name);
  61 + if(user==null){
  62 + return false;
  63 + }
  64 + userRepository.delete(user.getId());
  65 + return true;
18 } 66 }
19 67
20 @Override 68 @Override
21 public User findByName(String name) { 69 public User findByName(String name) {
22 - return null; 70 + if(name==null){
  71 + throw new IllegalArgumentException("name cannot be null");
  72 + }
  73 + return userRepository.findByName(name);
23 } 74 }
24 75
25 @Override 76 @Override
26 public boolean isUserHasRight(String userName, Right right) { 77 public boolean isUserHasRight(String userName, Right right) {
  78 + if(userName==null){
  79 + throw new IllegalArgumentException("userName cannot be null");
  80 + }
  81 + if(right==null){
  82 + throw new IllegalArgumentException("right cannot be null");
  83 + }
  84 +
  85 + if(rightRepository.findByName(right.getName()).size() == 0){
  86 + throw new IllegalArgumentException("right does not exists");
  87 + }
  88 +
  89 + User user = userRepository.findByName(userName);
  90 + Group group = user.getGroup();
  91 + List<Right> list = group.getRights();
  92 +
  93 + if(list.contains(right) || list.contains(right.getParent())){
  94 + return true;
  95 + }
  96 +
  97 +
27 return false; 98 return false;
28 } 99 }
29 } 100 }