Commit fb8c34ccfd65a4c766ddaf1485233c6932e024ef

Authored by msahmane
1 parent 9ae0ef87

RightJPA à 100%, GroupJPA à 94%

src/main/java/fr/plil/sio/persistence/api/Group.java
@@ -3,6 +3,7 @@ package fr.plil.sio.persistence.api; @@ -3,6 +3,7 @@ package fr.plil.sio.persistence.api;
3 import java.io.Serializable; 3 import java.io.Serializable;
4 import java.util.LinkedList; 4 import java.util.LinkedList;
5 import java.util.List; 5 import java.util.List;
  6 +import javax.persistence.CascadeType;
6 import javax.persistence.Column; 7 import javax.persistence.Column;
7 import javax.persistence.Entity; 8 import javax.persistence.Entity;
8 import javax.persistence.GeneratedValue; 9 import javax.persistence.GeneratedValue;
@@ -36,7 +37,7 @@ public class Group implements Serializable { @@ -36,7 +37,7 @@ public class Group implements Serializable {
36 /** 37 /**
37 * List of rights. The list CANNOT contains duplicate rights. 38 * List of rights. The list CANNOT contains duplicate rights.
38 */ 39 */
39 - @OneToMany(mappedBy = "group") 40 + @OneToMany(mappedBy = "group", cascade = CascadeType.REMOVE)
40 private List<Right> rights = new LinkedList<>(); 41 private List<Right> rights = new LinkedList<>();
41 42
42 public List<Right> getRights() { 43 public List<Right> getRights() {
src/main/java/fr/plil/sio/persistence/api/Right.java
@@ -3,6 +3,7 @@ package fr.plil.sio.persistence.api; @@ -3,6 +3,7 @@ package fr.plil.sio.persistence.api;
3 import java.io.Serializable; 3 import java.io.Serializable;
4 import java.util.LinkedList; 4 import java.util.LinkedList;
5 import java.util.List; 5 import java.util.List;
  6 +import javax.persistence.CascadeType;
6 import javax.persistence.Column; 7 import javax.persistence.Column;
7 import javax.persistence.Entity; 8 import javax.persistence.Entity;
8 import javax.persistence.GeneratedValue; 9 import javax.persistence.GeneratedValue;
@@ -32,6 +33,7 @@ public class Right implements Serializable{ @@ -32,6 +33,7 @@ public class Right implements Serializable{
32 33
33 /// the parent right 34 /// the parent right
34 @ManyToOne(optional = true) 35 @ManyToOne(optional = true)
  36 + @JoinColumn(name = "PARENT")
35 private Right parent; 37 private Right parent;
36 38
37 @ManyToOne(optional = true) 39 @ManyToOne(optional = true)
@@ -39,7 +41,7 @@ public class Right implements Serializable{ @@ -39,7 +41,7 @@ public class Right implements Serializable{
39 private Group group; 41 private Group group;
40 42
41 /// the sibling right(s), eventually empty 43 /// the sibling right(s), eventually empty
42 - @OneToMany(mappedBy = "parent") 44 + @OneToMany(mappedBy = "parent", cascade = CascadeType.REMOVE)
43 private List<Right> siblings = new LinkedList<>(); 45 private List<Right> siblings = new LinkedList<>();
44 46
45 public List<Right> getSiblings() { 47 public List<Right> getSiblings() {
src/main/java/fr/plil/sio/persistence/jpa/GroupRepository.java
@@ -6,4 +6,5 @@ import org.springframework.data.jpa.repository.JpaRepository; @@ -6,4 +6,5 @@ import org.springframework.data.jpa.repository.JpaRepository;
6 public interface GroupRepository extends JpaRepository<Group, Long> { 6 public interface GroupRepository extends JpaRepository<Group, Long> {
7 7
8 Group findByName(String name); 8 Group findByName(String name);
  9 +
9 } 10 }
src/main/java/fr/plil/sio/persistence/jpa/GroupServiceJpa.java
@@ -3,6 +3,7 @@ package fr.plil.sio.persistence.jpa; @@ -3,6 +3,7 @@ package fr.plil.sio.persistence.jpa;
3 import fr.plil.sio.persistence.api.Group; 3 import fr.plil.sio.persistence.api.Group;
4 import fr.plil.sio.persistence.api.GroupService; 4 import fr.plil.sio.persistence.api.GroupService;
5 import fr.plil.sio.persistence.api.Right; 5 import fr.plil.sio.persistence.api.Right;
  6 +import java.util.List;
6 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.stereotype.Service; 8 import org.springframework.stereotype.Service;
8 9
@@ -50,12 +51,54 @@ public class GroupServiceJpa implements GroupService { @@ -50,12 +51,54 @@ public class GroupServiceJpa implements GroupService {
50 51
51 @Override 52 @Override
52 public boolean addRight(String groupName, Right right) { 53 public boolean addRight(String groupName, Right right) {
53 -  
54 - return false; 54 +
  55 + if(groupName == null)
  56 + throw new IllegalArgumentException("Group name cannot be null");
  57 +
  58 + if(right == null)
  59 + throw new IllegalArgumentException("Right cannot be null");
  60 +
  61 + Group group = groupRepository.findByName(groupName);
  62 +
  63 + if(group == null){
  64 + throw new IllegalStateException("Group not found");
  65 + }
  66 +
  67 + List<Right> list = group.getRights();
  68 +
  69 + if(list.contains(right))
  70 + return false;
  71 +
  72 + list.add(right);
  73 + group.setRights(list);
  74 +
  75 + return true;
55 } 76 }
56 77
57 @Override 78 @Override
58 public boolean removeRight(String groupName, Right right) { 79 public boolean removeRight(String groupName, Right right) {
  80 +
  81 + if(groupName == null)
  82 + throw new IllegalArgumentException("Group name cannot be null");
  83 +
  84 + if(right == null)
  85 + throw new IllegalArgumentException("Right cannot be null");
  86 +
  87 + if(right.getId() == null)
  88 + throw new IllegalArgumentException("Not a right");
  89 +
  90 + Group group = groupRepository.findByName(groupName);
  91 +
  92 + if(group == null)
  93 + throw new IllegalStateException("Group not found");
  94 +
  95 + List<Right> list = group.getRights();
  96 +
  97 + if(list.contains(right)){
  98 + list.remove(right);
  99 + return true;
  100 + }
  101 +
59 return false; 102 return false;
60 } 103 }
61 } 104 }
src/main/java/fr/plil/sio/persistence/jpa/RightRepository.java
1 package fr.plil.sio.persistence.jpa; 1 package fr.plil.sio.persistence.jpa;
2 2
3 import fr.plil.sio.persistence.api.Right; 3 import fr.plil.sio.persistence.api.Right;
  4 +import java.util.List;
4 import org.springframework.data.jpa.repository.JpaRepository; 5 import org.springframework.data.jpa.repository.JpaRepository;
5 6
6 public interface RightRepository extends JpaRepository<Right, Long> { 7 public interface RightRepository extends JpaRepository<Right, Long> {
7 8
8 - Right findByName(String name); 9 + List<Right> findByName(String name);
9 10
10 } 11 }
src/main/java/fr/plil/sio/persistence/jpa/RightServiceJpa.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;  
4 import fr.plil.sio.persistence.api.Right; 3 import fr.plil.sio.persistence.api.Right;
5 import fr.plil.sio.persistence.api.RightService; 4 import fr.plil.sio.persistence.api.RightService;
6 import java.util.ArrayList; 5 import java.util.ArrayList;
@@ -37,15 +36,27 @@ public class RightServiceJpa implements RightService { @@ -37,15 +36,27 @@ public class RightServiceJpa implements RightService {
37 if (name == null) { 36 if (name == null) {
38 throw new IllegalArgumentException("name cannot be null"); 37 throw new IllegalArgumentException("name cannot be null");
39 } 38 }
  39 + if(parent == null){
  40 + throw new IllegalArgumentException("parent cannot be null");
  41 + }
40 42
41 List<Right> rights = new ArrayList<>(); 43 List<Right> rights = new ArrayList<>();
42 44
43 Right right = new Right(); 45 Right right = new Right();
44 right.setName(name); 46 right.setName(name);
  47 +
  48 + if(rightRepository.findByName(parent.getName()).isEmpty()){
  49 + throw new IllegalArgumentException("parent name cannot be null");
  50 + }
  51 +
  52 +
  53 +
45 right.setParent(parent); 54 right.setParent(parent);
46 rights.add(right); 55 rights.add(right);
47 rightRepository.save(rights); 56 rightRepository.save(rights);
48 57
  58 + parent.setSiblings(rights);
  59 +
49 return right; 60 return right;
50 } 61 }
51 62
@@ -54,6 +65,12 @@ public class RightServiceJpa implements RightService { @@ -54,6 +65,12 @@ public class RightServiceJpa implements RightService {
54 if(right == null) 65 if(right == null)
55 throw new IllegalArgumentException("Right cannot be null"); 66 throw new IllegalArgumentException("Right cannot be null");
56 67
  68 + if(right.getId() == null)
  69 + throw new IllegalArgumentException("Id cannot be null");
  70 +
  71 + if(rightRepository.findByName(right.getName()).isEmpty())
  72 + return false;
  73 +
57 rightRepository.delete(right); 74 rightRepository.delete(right);
58 return true; 75 return true;
59 } 76 }
@@ -63,11 +80,8 @@ public class RightServiceJpa implements RightService { @@ -63,11 +80,8 @@ public class RightServiceJpa implements RightService {
63 if(name == null) 80 if(name == null)
64 throw new IllegalArgumentException("Name cannot be null"); 81 throw new IllegalArgumentException("Name cannot be null");
65 82
66 - Right right = rightRepository.findByName(name);  
67 - List<Right> rights = new ArrayList<>();  
68 - rights.add(right); 83 + return rightRepository.findByName(name);
69 84
70 - return rights;  
71 } 85 }
72 86
73 @Override 87 @Override
src/main/java/fr/plil/sio/persistence/jpa/UserRepository.java 0 → 100644
@@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
  1 +package fr.plil.sio.persistence.jpa;
  2 +
  3 +import fr.plil.sio.persistence.api.User;
  4 +import org.springframework.data.jpa.repository.JpaRepository;
  5 +
  6 +
  7 +public interface UserRepository extends JpaRepository<User, Long>{
  8 +
  9 + User findByName(String userName);
  10 +
  11 +}
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 org.springframework.beans.factory.annotation.Autowired;
6 import org.springframework.stereotype.Service; 8 import org.springframework.stereotype.Service;
7 9
8 @Service 10 @Service
9 public class UserServiceJpa implements UserService { 11 public class UserServiceJpa implements UserService {
10 12
11 - /*@Autowired 13 + @Autowired
12 UserRepository userRepository; 14 UserRepository userRepository;
13 - GroupRepository groupRepository; */ 15 +
  16 + @Autowired
  17 + GroupRepository groupRepository;
14 18
15 @Override 19 @Override
16 public User create(String name, String groupName) { 20 public User create(String name, String groupName) {
17 - /* if (name == null) {  
18 - throw new IllegalArgumentException("name cannot be null");  
19 - } 21 + if(name == null)
  22 + throw new IllegalArgumentException("Name cannot be null");
  23 + if(groupName == null)
  24 + throw new IllegalArgumentException("Group name cannot be null");
  25 +
  26 + Group group = groupRepository.findByName(groupName);
  27 + if(group == null)
  28 + throw new IllegalStateException("Group not found");
20 29
21 - User user = userRepository.findByName(name);  
22 - Group group = groupRepository.findByName(name);  
23 - if (user != null) {  
24 - throw new IllegalStateException("a user with the same name already exists");  
25 - }  
26 - user = new User(); 30 + User user = new User();
27 user.setName(name); 31 user.setName(name);
28 user.setGroup(group); 32 user.setGroup(group);
29 - userRepository.save(user);*/  
30 - return null; 33 + userRepository.save(user);
  34 +
  35 + return user;
31 } 36 }
32 37
33 @Override 38 @Override
34 public boolean delete(String name) { 39 public boolean delete(String name) {
35 - /* if(name == null){  
36 - return false;  
37 - }  
38 - User user = userRepository.findByName(name);  
39 -  
40 - userRepository.delete(user);*/ 40 +
41 41
42 return false; 42 return false;
43 } 43 }
44 44
45 @Override 45 @Override
46 public User findByName(String name) { 46 public User findByName(String name) {
47 - /*if (name == null) {  
48 - throw new IllegalArgumentException("name cannot be null");  
49 - }  
50 - return userRepository.findByName(name);*/  
51 - return null; 47 +
  48 + if(name == null)
  49 + throw new IllegalArgumentException("Name cannot be null");
  50 +
  51 + return userRepository.findByName(name);
52 } 52 }
53 53
54 @Override 54 @Override
55 public boolean isUserHasRight(String userName, Right right) { 55 public boolean isUserHasRight(String userName, Right right) {
56 - /*if(userName == null)  
57 - throw new IllegalArgumentException("name cannot be null");  
58 - if(right == null)  
59 - throw new IllegalArgumentException("Right cannot be null");  
60 - */ 56 +
61 return false; 57 return false;
62 } 58 }
63 } 59 }