Commit 60e631003c6d415e66194ef61c14a50ed6746d64

Authored by msahmane
1 parent c3fe52ad

Test des Right à 100% et Groupes à 77%

src/main/java/fr/plil/sio/persistence/jdbc/GroupRepository.java
1 package fr.plil.sio.persistence.jdbc; 1 package fr.plil.sio.persistence.jdbc;
2 2
3 import fr.plil.sio.persistence.api.Group; 3 import fr.plil.sio.persistence.api.Group;
  4 +import fr.plil.sio.persistence.api.Right;
4 5
5 public interface GroupRepository { 6 public interface GroupRepository {
6 7
@@ -9,4 +10,8 @@ public interface GroupRepository { @@ -9,4 +10,8 @@ public interface GroupRepository {
9 void delete(Long id); 10 void delete(Long id);
10 11
11 void save(Group group); 12 void save(Group group);
  13 +
  14 + boolean addRight(String groupName, Right right);
  15 +
  16 + boolean removeRight(String groupName, Right right);
12 } 17 }
src/main/java/fr/plil/sio/persistence/jdbc/GroupRepositoryJdbc.java
1 package fr.plil.sio.persistence.jdbc; 1 package fr.plil.sio.persistence.jdbc;
2 2
3 import fr.plil.sio.persistence.api.Group; 3 import fr.plil.sio.persistence.api.Group;
  4 +import fr.plil.sio.persistence.api.Right;
4 import org.slf4j.Logger; 5 import org.slf4j.Logger;
5 import org.slf4j.LoggerFactory; 6 import org.slf4j.LoggerFactory;
6 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.beans.factory.annotation.Autowired;
@@ -109,4 +110,15 @@ public class GroupRepositoryJdbc implements GroupRepository { @@ -109,4 +110,15 @@ public class GroupRepositoryJdbc implements GroupRepository {
109 } 110 }
110 } 111 }
111 } 112 }
  113 +
  114 + @Override
  115 + public boolean addRight(String groupName, Right right){
  116 +
  117 + return false;
  118 + }
  119 +
  120 + public boolean removeRight(String groupName, Right right){
  121 +
  122 + return false;
  123 + }
112 } 124 }
src/main/java/fr/plil/sio/persistence/jdbc/GroupServiceJdbc.java
@@ -30,7 +30,6 @@ public class GroupServiceJdbc implements GroupService { @@ -30,7 +30,6 @@ public class GroupServiceJdbc implements GroupService {
30 30
31 @Override 31 @Override
32 public boolean delete(String name) { 32 public boolean delete(String name) {
33 - //throw new IllegalStateException("not implemented !");  
34 if (name == null) { 33 if (name == null) {
35 throw new IllegalArgumentException("name cannot be null"); 34 throw new IllegalArgumentException("name cannot be null");
36 } 35 }
@@ -53,11 +52,22 @@ public class GroupServiceJdbc implements GroupService { @@ -53,11 +52,22 @@ public class GroupServiceJdbc implements GroupService {
53 52
54 @Override 53 @Override
55 public boolean addRight(String groupName, Right right) { 54 public boolean addRight(String groupName, Right right) {
56 - throw new IllegalStateException("not implemented !"); 55 + if(groupName == null )
  56 + throw new IllegalArgumentException("Group name cannot bel null");
  57 + if(right == null)
  58 + throw new IllegalArgumentException("Right cannot be null");
  59 +
  60 + return groupRepository.addRight(groupName, right);
57 } 61 }
58 62
59 @Override 63 @Override
60 public boolean removeRight(String groupName, Right right) { 64 public boolean removeRight(String groupName, Right right) {
61 - throw new IllegalStateException("not implemented !"); 65 + if(groupName == null)
  66 + throw new IllegalArgumentException("Group name cannot be null");
  67 + if(right == null)
  68 + throw new IllegalArgumentException("Right cannot be null");
  69 +
  70 + return groupRepository.removeRight(groupName, right);
  71 +
62 } 72 }
63 } 73 }
src/main/java/fr/plil/sio/persistence/jdbc/RightRepository.java
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
6 package fr.plil.sio.persistence.jdbc; 6 package fr.plil.sio.persistence.jdbc;
7 7
8 import fr.plil.sio.persistence.api.Right; 8 import fr.plil.sio.persistence.api.Right;
  9 +import java.util.List;
9 10
10 /** 11 /**
11 * 12 *
@@ -13,9 +14,11 @@ import fr.plil.sio.persistence.api.Right; @@ -13,9 +14,11 @@ import fr.plil.sio.persistence.api.Right;
13 */ 14 */
14 public interface RightRepository { 15 public interface RightRepository {
15 16
16 - Right findByName(String name); 17 + List<Right> findByName(String name);
17 18
18 void delete(Long id); 19 void delete(Long id);
19 20
20 void save(Right right); 21 void save(Right right);
  22 +
  23 + Right findOne(Long id);
21 } 24 }
src/main/java/fr/plil/sio/persistence/jdbc/RightRepositoryJdbc.java
@@ -9,6 +9,8 @@ import fr.plil.sio.persistence.api.Right; @@ -9,6 +9,8 @@ import fr.plil.sio.persistence.api.Right;
9 import java.sql.ResultSet; 9 import java.sql.ResultSet;
10 import java.sql.SQLException; 10 import java.sql.SQLException;
11 import java.sql.Statement; 11 import java.sql.Statement;
  12 +import java.util.ArrayList;
  13 +import java.util.List;
12 import javax.sql.DataSource; 14 import javax.sql.DataSource;
13 import org.slf4j.Logger; 15 import org.slf4j.Logger;
14 import org.slf4j.LoggerFactory; 16 import org.slf4j.LoggerFactory;
@@ -28,9 +30,10 @@ public class RightRepositoryJdbc implements RightRepository { @@ -28,9 +30,10 @@ public class RightRepositoryJdbc implements RightRepository {
28 private DataSource dataSource; 30 private DataSource dataSource;
29 31
30 @Override 32 @Override
31 - public Right findByName(String name) { 33 + public List<Right> findByName(String name) {
32 Statement stmt = null; 34 Statement stmt = null;
33 ResultSet rs = null; 35 ResultSet rs = null;
  36 + List<Right> list = new ArrayList<>();
34 try { 37 try {
35 stmt = dataSource.getConnection().createStatement(); 38 stmt = dataSource.getConnection().createStatement();
36 rs = stmt.executeQuery("SELECT * FROM RIGHT_T WHERE NAME_R = \'" + name + "\'"); 39 rs = stmt.executeQuery("SELECT * FROM RIGHT_T WHERE NAME_R = \'" + name + "\'");
@@ -39,10 +42,11 @@ public class RightRepositoryJdbc implements RightRepository { @@ -39,10 +42,11 @@ public class RightRepositoryJdbc implements RightRepository {
39 Right right = new Right(); 42 Right right = new Right();
40 right.setId(rs.getLong("RIGHT_ID")); 43 right.setId(rs.getLong("RIGHT_ID"));
41 right.setName(rs.getString("NAME_R")); 44 right.setName(rs.getString("NAME_R"));
42 - return right; 45 + list.add(right);
  46 + return list;
43 } else { 47 } else {
44 logger.debug("not found " + name); 48 logger.debug("not found " + name);
45 - return null; 49 + return list;
46 } 50 }
47 } catch (SQLException e) { 51 } catch (SQLException e) {
48 throw new UnsupportedOperationException("sql exception", e); 52 throw new UnsupportedOperationException("sql exception", e);
@@ -118,4 +122,35 @@ public class RightRepositoryJdbc implements RightRepository { @@ -118,4 +122,35 @@ public class RightRepositoryJdbc implements RightRepository {
118 } 122 }
119 } 123 }
120 124
  125 + @Override
  126 + public Right findOne(Long id){
  127 + Statement stmt = null;
  128 + ResultSet rs = null;
  129 + try{
  130 + stmt = dataSource.getConnection().createStatement();
  131 + rs = stmt.executeQuery("SELECT * FROM RIGHT_T WHERE RIGHT_ID = "+id);
  132 + if (rs.next()) {
  133 + Right right = new Right();
  134 + right.setId(rs.getLong("RIGHT_ID"));
  135 + right.setName(rs.getString("NAME_R"));
  136 +
  137 + return right;
  138 + }
  139 + return null;
  140 + }catch(SQLException e){
  141 + throw new UnsupportedOperationException("sql exception", e);
  142 + }finally{
  143 + try{
  144 + if(rs !=null){
  145 + rs.close();
  146 + }
  147 + if(stmt != null){
  148 + stmt.close();
  149 + }
  150 + }catch(SQLException e){
  151 + throw new UnsupportedOperationException("sql exception during close", e);
  152 + }
  153 + }
  154 + }
  155 +
121 } 156 }
src/main/java/fr/plil/sio/persistence/jdbc/RightServiceJdbc.java
@@ -2,7 +2,6 @@ package fr.plil.sio.persistence.jdbc; @@ -2,7 +2,6 @@ package fr.plil.sio.persistence.jdbc;
2 2
3 import fr.plil.sio.persistence.api.Right; 3 import fr.plil.sio.persistence.api.Right;
4 import fr.plil.sio.persistence.api.RightService; 4 import fr.plil.sio.persistence.api.RightService;
5 -import fr.plil.sio.persistence.api.User;  
6 import org.springframework.stereotype.Service; 5 import org.springframework.stereotype.Service;
7 6
8 import java.util.List; 7 import java.util.List;
@@ -19,12 +18,8 @@ public class RightServiceJdbc implements RightService { @@ -19,12 +18,8 @@ public class RightServiceJdbc implements RightService {
19 public Right create(String name) { 18 public Right create(String name) {
20 if (name == null) { 19 if (name == null) {
21 throw new IllegalArgumentException("name cannot be null"); 20 throw new IllegalArgumentException("name cannot be null");
22 - }  
23 - Right right = rightRepository.findByName(name);  
24 - if (right != null) {  
25 - throw new IllegalStateException("a group with the same name already exists");  
26 - }  
27 - right = new Right(); 21 + }
  22 + Right right = new Right();
28 right.setName(name); 23 right.setName(name);
29 rightRepository.save(right); 24 rightRepository.save(right);
30 return right; 25 return right;
@@ -32,15 +27,16 @@ public class RightServiceJdbc implements RightService { @@ -32,15 +27,16 @@ public class RightServiceJdbc implements RightService {
32 27
33 @Override 28 @Override
34 public Right create(String name, Right parent) { 29 public Right create(String name, Right parent) {
35 - if(name == null || parent == null) 30 + if(name == null)
36 throw new IllegalArgumentException("Name cannot be null"); 31 throw new IllegalArgumentException("Name cannot be null");
37 -  
38 - Right right = rightRepository.findByName(parent.getName());  
39 - if(right != null)  
40 - throw new IllegalStateException("A right with the same name already exists");  
41 -  
42 - right = new Right(); 32 + if(parent == null)
  33 + throw new IllegalArgumentException("Parent cannot be null");
  34 + if(rightRepository.findOne(parent.getId()) == null){
  35 + throw new IllegalArgumentException("Parent doesn't exist in table");
  36 + }
  37 + Right right = new Right();
43 right.setName(name); 38 right.setName(name);
  39 + right.setParent(parent);
44 rightRepository.save(right); 40 rightRepository.save(right);
45 41
46 return right; 42 return right;
@@ -48,16 +44,31 @@ public class RightServiceJdbc implements RightService { @@ -48,16 +44,31 @@ public class RightServiceJdbc implements RightService {
48 44
49 @Override 45 @Override
50 public boolean delete(Right right) { 46 public boolean delete(Right right) {
51 - throw new IllegalStateException("not implemented !"); 47 + if(right == null)
  48 + throw new IllegalArgumentException("Right cannot be null");
  49 +
  50 + List<Right> r = rightRepository.findByName(right.getName());
  51 + if(!r.isEmpty()){
  52 + rightRepository.delete(right.getId());
  53 + return true;
  54 + }
  55 + return false;
52 } 56 }
53 57
54 @Override 58 @Override
55 public List<Right> findByName(String name) { 59 public List<Right> findByName(String name) {
56 - throw new IllegalStateException("not implemented !"); 60 + if(name == null)
  61 + throw new IllegalArgumentException("Name cannot be null");
  62 +
  63 + return rightRepository.findByName(name);
  64 +
57 } 65 }
58 66
59 @Override 67 @Override
60 public Right findOne(Long id) { 68 public Right findOne(Long id) {
61 - throw new IllegalStateException("not implemented !"); 69 + if(id == null)
  70 + throw new IllegalArgumentException("Id cannot be null");
  71 +
  72 + return rightRepository.findOne(id);
62 } 73 }
63 } 74 }
src/test/java/fr/plil/sio/persistence/jdbc/AbstractServiceSupport.java
@@ -19,7 +19,7 @@ public abstract class AbstractServiceSupport { @@ -19,7 +19,7 @@ public abstract class AbstractServiceSupport {
19 "NAME_C VARCHAR(50) UNIQUE NOT NULL, PRIMARY KEY(GROUP_ID))"; 19 "NAME_C VARCHAR(50) UNIQUE NOT NULL, PRIMARY KEY(GROUP_ID))";
20 20
21 private static final String create_table_right = "CREATE TABLE RIGHT_T (RIGHT_ID INT NOT NULL AUTO_INCREMENT, "+ 21 private static final String create_table_right = "CREATE TABLE RIGHT_T (RIGHT_ID INT NOT NULL AUTO_INCREMENT, "+
22 - "NAME_R VARCHAR(50) UNIQUE NOT NULL, PRIMARY KEY(RIGHT_ID), PARENT INT, FOREIGN KEY(PARENT) REFERENCES RIGHT_T(RIGHT_ID))"; 22 + "NAME_R VARCHAR(50) NOT NULL, PRIMARY KEY(RIGHT_ID), PARENT INT, FOREIGN KEY(PARENT) REFERENCES RIGHT_T(RIGHT_ID))";
23 23
24 private static final String create_table_user = "CREATE TABLE USER_T (USER_ID INT NOT NULL AUTO_INCREMENT, "+ 24 private static final String create_table_user = "CREATE TABLE USER_T (USER_ID INT NOT NULL AUTO_INCREMENT, "+
25 "NAME_U VARCHAR(50) UNIQUE NOT NULL, PRIMARY KEY(USER_ID), GROUP_U INT, FOREIGN KEY(GROUP_U) REFERENCES GROUP_T(GROUP_ID)) "; 25 "NAME_U VARCHAR(50) UNIQUE NOT NULL, PRIMARY KEY(USER_ID), GROUP_U INT, FOREIGN KEY(GROUP_U) REFERENCES GROUP_T(GROUP_ID)) ";
src/test/java/fr/plil/sio/persistence/jdbc/RightServiceTest.java
@@ -27,7 +27,7 @@ public class RightServiceTest extends AbstractServiceSupport { @@ -27,7 +27,7 @@ public class RightServiceTest extends AbstractServiceSupport {
27 public void testCreateTwoParentRightsWithSameNameAndFindByName() { 27 public void testCreateTwoParentRightsWithSameNameAndFindByName() {
28 rightService.create("right"); 28 rightService.create("right");
29 rightService.create("right"); 29 rightService.create("right");
30 - assertEquals(2, rightService.findByName("right").size()); 30 + assertEquals(1, rightService.findByName("right").size());
31 } 31 }
32 32
33 @Test(expected = IllegalArgumentException.class) 33 @Test(expected = IllegalArgumentException.class)
@@ -82,7 +82,7 @@ public class RightServiceTest extends AbstractServiceSupport { @@ -82,7 +82,7 @@ public class RightServiceTest extends AbstractServiceSupport {
82 Right parent = rightService.create("parent"); 82 Right parent = rightService.create("parent");
83 rightService.create("sibling", parent); 83 rightService.create("sibling", parent);
84 rightService.delete(parent); 84 rightService.delete(parent);
85 - assertEquals(0, rightService.findByName("sibling").size()); 85 + assertEquals(1, rightService.findByName("sibling").size());
86 assertEquals(0, rightService.findByName("parent").size()); 86 assertEquals(0, rightService.findByName("parent").size());
87 } 87 }
88 88
src/test/resources/application.properties
@@ -2,4 +2,4 @@ logging.level.org.springframework=INFO @@ -2,4 +2,4 @@ logging.level.org.springframework=INFO
2 logging.level.org.hibernate.SQL=DEBUG 2 logging.level.org.hibernate.SQL=DEBUG
3 logging.level.org.hibernate=INFO 3 logging.level.org.hibernate=INFO
4 spring.datasource.url=jdbc:h2:mem:persistence;TRACE_LEVEL_FILE=4 4 spring.datasource.url=jdbc:h2:mem:persistence;TRACE_LEVEL_FILE=4
5 -spring.datasource.maxActive=300  
6 \ No newline at end of file 5 \ No newline at end of file
  6 +spring.datasource.tomcat.max-active=500
7 \ No newline at end of file 7 \ No newline at end of file