Commit ef4eb26320f5548f525acff420cf2635156bbc0b

Authored by rvangrev
1 parent 8882a9c3

Nouvelles modifications -> Partie groupe terminée.

Reste à faire les modifications pour le user et le right
src/main/java/fr/plil/sio/persistence/jdbc/GroupRepositoryJdbc.java
@@ -86,6 +86,28 @@ public class GroupRepositoryJdbc implements GroupRepository { @@ -86,6 +86,28 @@ public class GroupRepositoryJdbc implements GroupRepository {
86 86
87 @Override 87 @Override
88 public void delete(Long id) { 88 public void delete(Long id) {
89 - throw new IllegalStateException("not implemented !"); 89 + Statement stmt = null;
  90 + ResultSet rs = null;
  91 + if(id==null){
  92 + throw new IllegalArgumentException();
  93 + }
  94 + try {
  95 + stmt = dataSource.getConnection().createStatement();
  96 + stmt.execute("DELETE FROM USER_T WHERE GROUP_U = " + id);
  97 + stmt.execute("DELETE FROM GROUP_T WHERE GROUP_ID = " + id);
  98 + } catch (SQLException e) {
  99 + throw new UnsupportedOperationException("sql exception", e);
  100 + } finally {
  101 + try {
  102 + if (rs != null) {
  103 + rs.close();
  104 + }
  105 + if (stmt != null) {
  106 + stmt.close();
  107 + }
  108 + } catch (SQLException e) {
  109 + throw new UnsupportedOperationException("sql exception during close", e);
  110 + }
  111 + }
90 } 112 }
91 } 113 }
src/main/java/fr/plil/sio/persistence/jdbc/GroupServiceJdbc.java
@@ -5,6 +5,8 @@ import fr.plil.sio.persistence.api.GroupService; @@ -5,6 +5,8 @@ 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 org.springframework.beans.factory.annotation.Autowired; 6 import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.stereotype.Service; 7 import org.springframework.stereotype.Service;
  8 +import java.util.List;
  9 +import java.util.LinkedList;
8 10
9 @Service 11 @Service
10 public class GroupServiceJdbc implements GroupService { 12 public class GroupServiceJdbc implements GroupService {
@@ -29,7 +31,19 @@ public class GroupServiceJdbc implements GroupService { @@ -29,7 +31,19 @@ public class GroupServiceJdbc implements GroupService {
29 31
30 @Override 32 @Override
31 public boolean delete(String name) { 33 public boolean delete(String name) {
32 - throw new IllegalStateException("not implemented !"); 34 +
  35 + if (name == null) {
  36 + throw new IllegalArgumentException("name cannot be null");
  37 + }
  38 +
  39 + Group group = findByName(name);
  40 +
  41 + if(group==null){
  42 + return false;
  43 + }
  44 +
  45 + groupRepository.delete(group.getId());
  46 + return true;
33 } 47 }
34 48
35 @Override 49 @Override
@@ -42,11 +56,30 @@ public class GroupServiceJdbc implements GroupService { @@ -42,11 +56,30 @@ public class GroupServiceJdbc implements GroupService {
42 56
43 @Override 57 @Override
44 public boolean addRight(String groupName, Right right) { 58 public boolean addRight(String groupName, Right right) {
45 - throw new IllegalStateException("not implemented !"); 59 + if(groupName==null || right ==null){
  60 + throw new IllegalArgumentException("name cannot be null");
  61 + }
  62 + Group group = groupRepository.findByName(groupName);
  63 + if (group == null) {
  64 + throw new IllegalArgumentException("group cannot be null");
  65 + }
  66 +
  67 + group.setName(groupName);
  68 + List<Right> list = group.getRights();
  69 + list.add(right);
  70 + group.setRights(list);
  71 + return true;
46 } 72 }
47 73
48 @Override 74 @Override
49 public boolean removeRight(String groupName, Right right) { 75 public boolean removeRight(String groupName, Right right) {
50 - throw new IllegalStateException("not implemented !"); 76 + if(right==null){
  77 + throw new IllegalArgumentException("name cannot be null");
  78 + }
  79 + Group group = groupRepository.findByName(groupName);
  80 + if (group != null) {
  81 + throw new IllegalStateException("a group with the same name already exists");
  82 + }
  83 + return true;
51 } 84 }
52 } 85 }
src/main/java/fr/plil/sio/persistence/jdbc/RightRepository.java 0 → 100644
@@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
  1 +/*
  2 + * To change this license header, choose License Headers in Project Properties.
  3 + * To change this template file, choose Tools | Templates
  4 + * and open the template in the editor.
  5 + */
  6 +package fr.plil.sio.persistence.jdbc;
  7 +
  8 +import fr.plil.sio.persistence.api.Right;
  9 +
  10 +public interface RightRepository {
  11 +
  12 + Right findByName(String name);
  13 +
  14 + void delete(Long id);
  15 +
  16 + void save(Right right);
  17 +}
src/main/java/fr/plil/sio/persistence/jdbc/RightRepositoryJdbc.java 0 → 100644
@@ -0,0 +1,120 @@ @@ -0,0 +1,120 @@
  1 +/*
  2 + * To change this license header, choose License Headers in Project Properties.
  3 + * To change this template file, choose Tools | Templates
  4 + * and open the template in the editor.
  5 + */
  6 +package fr.plil.sio.persistence.jdbc;
  7 +
  8 +import fr.plil.sio.persistence.api.Group;
  9 +import java.sql.ResultSet;
  10 +import java.sql.SQLException;
  11 +import java.sql.Statement;
  12 +import javax.sql.DataSource;
  13 +import org.slf4j.Logger;
  14 +import org.slf4j.LoggerFactory;
  15 +import org.springframework.beans.factory.annotation.Autowired;
  16 +import fr.plil.sio.persistence.api.Right;
  17 +
  18 +/**
  19 + *
  20 + * @author rvangrev
  21 + */
  22 +public class RightRepositoryJdbc implements RightRepository{
  23 +
  24 + private static final Logger logger = LoggerFactory.getLogger(GroupRepository.class);
  25 +
  26 + @Autowired
  27 + private DataSource dataSource;
  28 +
  29 + @Override
  30 + public Right findByName(String name) {
  31 + Statement stmt = null;
  32 + ResultSet rs = null;
  33 + try {
  34 + stmt = dataSource.getConnection().createStatement();
  35 + rs = stmt.executeQuery("SELECT * FROM GROUP_T WHERE NAME_C = \'" + name + "\'");
  36 + if (rs.next()) {
  37 + logger.debug("found group " + name);
  38 +// Group group = new Group();
  39 +// group.setId(rs.getLong("GROUP_ID"));
  40 +// group.setName(rs.getString("NAME_C"));
  41 +// return group;
  42 + } else {
  43 + logger.debug("not found " + name);
  44 + return null;
  45 + }
  46 + } catch (SQLException e) {
  47 + throw new UnsupportedOperationException("sql exception", e);
  48 + } finally {
  49 + try {
  50 + if (rs != null) {
  51 + rs.close();
  52 + }
  53 + if (stmt != null) {
  54 + stmt.close();
  55 + }
  56 + } catch (SQLException e) {
  57 + throw new UnsupportedOperationException("sql exception during close", e);
  58 +
  59 + }
  60 + }
  61 + return null;
  62 + }
  63 +
  64 + @Override
  65 + public void save(Right right) {
  66 + Statement stmt = null;
  67 + ResultSet rs = null;
  68 + try {
  69 + stmt = dataSource.getConnection().createStatement();
  70 + stmt.executeUpdate("INSERT INTO GROUP_T (NAME_C) VALUES (\'" + right.getName() + "\')",
  71 + Statement.RETURN_GENERATED_KEYS);
  72 + rs = stmt.getGeneratedKeys();
  73 + if (rs.next()) {
  74 + right.setId(rs.getLong(1));
  75 + } else {
  76 + throw new UnsupportedOperationException("default in key access");
  77 + }
  78 + } catch (SQLException e) {
  79 + throw new UnsupportedOperationException("sql exception", e);
  80 + } finally {
  81 + try {
  82 + if (rs != null) {
  83 + rs.close();
  84 + }
  85 + if (stmt != null) {
  86 + stmt.close();
  87 + }
  88 + } catch (SQLException e) {
  89 + throw new UnsupportedOperationException("sql exception during close", e);
  90 + }
  91 + }
  92 +
  93 + }
  94 +
  95 + @Override
  96 + public void delete(Long id) {
  97 + Statement stmt = null;
  98 + ResultSet rs = null;
  99 + if(id==null){
  100 + throw new IllegalArgumentException();
  101 + }
  102 + try {
  103 + stmt = dataSource.getConnection().createStatement();
  104 + stmt.execute("DELETE FROM RIGHT_T WHERE RIGHT_ID = " + id);
  105 + } catch (SQLException e) {
  106 + throw new UnsupportedOperationException("sql exception", e);
  107 + } finally {
  108 + try {
  109 + if (rs != null) {
  110 + rs.close();
  111 + }
  112 + if (stmt != null) {
  113 + stmt.close();
  114 + }
  115 + } catch (SQLException e) {
  116 + throw new UnsupportedOperationException("sql exception during close", e);
  117 + }
  118 + }
  119 + }
  120 +}
src/main/java/fr/plil/sio/persistence/jdbc/RightServiceJdbc.java
@@ -8,19 +8,30 @@ import java.util.List; @@ -8,19 +8,30 @@ import java.util.List;
8 8
9 @Service 9 @Service
10 public class RightServiceJdbc implements RightService { 10 public class RightServiceJdbc implements RightService {
  11 +
11 @Override 12 @Override
12 public Right create(String name) { 13 public Right create(String name) {
13 - return null; 14 + if(name==null){
  15 + throw new IllegalArgumentException("name cannot be null");
  16 + }
  17 + else{
  18 + return null;
  19 + }
14 } 20 }
15 21
16 @Override 22 @Override
17 public Right create(String name, Right parent) { 23 public Right create(String name, Right parent) {
18 - throw new IllegalStateException("not implemented !"); 24 + return null;
19 } 25 }
20 26
21 @Override 27 @Override
22 public boolean delete(Right right) { 28 public boolean delete(Right right) {
23 - throw new IllegalStateException("not implemented !"); 29 + if(right==null){
  30 + throw new IllegalArgumentException("name cannot be null");
  31 + }
  32 + else{
  33 + return true;
  34 + }
24 } 35 }
25 36
26 @Override 37 @Override
@@ -30,6 +41,11 @@ public class RightServiceJdbc implements RightService { @@ -30,6 +41,11 @@ public class RightServiceJdbc implements RightService {
30 41
31 @Override 42 @Override
32 public Right findOne(Long id) { 43 public Right findOne(Long id) {
33 - throw new IllegalStateException("not implemented !"); 44 + if(id==null){
  45 + throw new IllegalArgumentException("name cannot be null");
  46 + }
  47 + else{
  48 + return null;
  49 + }
34 } 50 }
35 } 51 }
src/main/java/fr/plil/sio/persistence/jdbc/UserRepository.java 0 → 100644
@@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
  1 +/*
  2 + * To change this license header, choose License Headers in Project Properties.
  3 + * To change this template file, choose Tools | Templates
  4 + * and open the template in the editor.
  5 + */
  6 +package fr.plil.sio.persistence.jdbc;
  7 +import fr.plil.sio.persistence.api.User;
  8 +import fr.plil.sio.persistence.api.Group;
  9 +
  10 +public interface UserRepository {
  11 +
  12 + User findByName(String name);
  13 +
  14 + void delete(Long id);
  15 +
  16 + void save(User user, Group group);
  17 +}
src/main/java/fr/plil/sio/persistence/jdbc/UserRepositoryJdbc.java 0 → 100644
@@ -0,0 +1,121 @@ @@ -0,0 +1,121 @@
  1 +/*
  2 + * To change this license header, choose License Headers in Project Properties.
  3 + * To change this template file, choose Tools | Templates
  4 + * and open the template in the editor.
  5 + */
  6 +package fr.plil.sio.persistence.jdbc;
  7 +
  8 +import fr.plil.sio.persistence.api.Group;
  9 +import java.sql.ResultSet;
  10 +import java.sql.SQLException;
  11 +import java.sql.Statement;
  12 +import javax.sql.DataSource;
  13 +import org.slf4j.Logger;
  14 +import org.slf4j.LoggerFactory;
  15 +import org.springframework.beans.factory.annotation.Autowired;
  16 +import org.springframework.stereotype.Repository;
  17 +import fr.plil.sio.persistence.api.User;
  18 +
  19 +@Repository
  20 +public class UserRepositoryJdbc implements UserRepository{
  21 +
  22 + private static final Logger logger = LoggerFactory.getLogger(GroupRepository.class);
  23 +
  24 + @Autowired
  25 + private DataSource dataSource;
  26 +
  27 + @Override
  28 + public User findByName(String name) {
  29 + Statement stmt = null;
  30 + ResultSet rs = null;
  31 + try {
  32 + stmt = dataSource.getConnection().createStatement();
  33 + rs = stmt.executeQuery("SELECT U.USER_ID, U.NAME_U, U.GROUP_U, G.NAME_C FROM USER_T U JOIN GROUP_T G ON U.GROUP_U=G.GROUP_ID WHERE NAME_U = \'" + name + "\' ");
  34 + if (rs.next()) {
  35 + logger.debug("found group " + name);
  36 + User user = new User();
  37 + user.setId(rs.getLong("T.USER_ID"));
  38 + user.setName(rs.getString("T.NAME_U"));
  39 + Group group = new Group();
  40 + GroupRepositoryJdbc g = new GroupRepositoryJdbc();
  41 + group = g.findByName(rs.getString("G.NAME_C"));
  42 + user.setGroup(group);
  43 + return user;
  44 + } else {
  45 + logger.debug("not found " + name);
  46 + return null;
  47 + }
  48 + } catch (SQLException e) {
  49 + throw new UnsupportedOperationException("sql exception", e);
  50 + } finally {
  51 + try {
  52 + if (rs != null) {
  53 + rs.close();
  54 + }
  55 + if (stmt != null) {
  56 + stmt.close();
  57 + }
  58 + } catch (SQLException e) {
  59 + throw new UnsupportedOperationException("sql exception during close", e);
  60 +
  61 + }
  62 + }
  63 + }
  64 +
  65 + @Override
  66 + public void save(User user, Group group) {
  67 + Statement stmt = null;
  68 + ResultSet rs = null;
  69 + try {
  70 + stmt = dataSource.getConnection().createStatement();
  71 + stmt.executeUpdate("INSERT INTO USER_T (NAME_U, GROUP_U) VALUES (\'" + user.getName() + "\', \'" + group.getId() + "\')",
  72 + Statement.RETURN_GENERATED_KEYS);
  73 + rs = stmt.getGeneratedKeys();
  74 + if (rs.next()) {
  75 + user.setId(rs.getLong(1));
  76 + } else {
  77 + throw new UnsupportedOperationException("default in key access");
  78 + }
  79 + } catch (SQLException e) {
  80 + throw new UnsupportedOperationException("sql exception", e);
  81 + } finally {
  82 + try {
  83 + if (rs != null) {
  84 + rs.close();
  85 + }
  86 + if (stmt != null) {
  87 + stmt.close();
  88 + }
  89 + } catch (SQLException e) {
  90 + throw new UnsupportedOperationException("sql exception during close", e);
  91 + }
  92 + }
  93 +
  94 + }
  95 +
  96 + @Override
  97 + public void delete(Long id) {
  98 + Statement stmt = null;
  99 + ResultSet rs = null;
  100 + if(id==null){
  101 + throw new IllegalArgumentException();
  102 + }
  103 + try {
  104 + stmt = dataSource.getConnection().createStatement();
  105 + stmt.execute("DELETE FROM USER_T WHERE USER_ID = " + id);
  106 + } catch (SQLException e) {
  107 + throw new UnsupportedOperationException("sql exception", e);
  108 + } finally {
  109 + try {
  110 + if (rs != null) {
  111 + rs.close();
  112 + }
  113 + if (stmt != null) {
  114 + stmt.close();
  115 + }
  116 + } catch (SQLException e) {
  117 + throw new UnsupportedOperationException("sql exception during close", e);
  118 + }
  119 + }
  120 + }
  121 +}
src/main/java/fr/plil/sio/persistence/jdbc/UserServiceJdbc.java
1 package fr.plil.sio.persistence.jdbc; 1 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.Group;
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;
6 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.beans.factory.annotation.Autowired;
@@ -10,25 +11,53 @@ import org.springframework.stereotype.Service; @@ -10,25 +11,53 @@ import org.springframework.stereotype.Service;
10 public class UserServiceJdbc implements UserService { 11 public class UserServiceJdbc implements UserService {
11 12
12 @Autowired 13 @Autowired
13 - private GroupRepository userRepository; 14 + private UserRepository userRepository;
  15 + private GroupRepository groupRepository;
14 16
15 @Override 17 @Override
16 public User create(String name, String groupName) { 18 public User create(String name, String groupName) {
17 - throw new IllegalStateException("not implemented !"); 19 + if(name==null){
  20 + throw new IllegalArgumentException("name cannot be null");
  21 + }
  22 + User user = userRepository.findByName(name);
  23 + if(user!=null){
  24 + throw new IllegalStateException("a user with the same name already exists");
  25 + }
  26 + user = new User();
  27 + user.setName(name);
  28 + Group group = groupRepository.findByName(groupName);
  29 + userRepository.save(user, group);
  30 + return user;
18 } 31 }
19 32
20 @Override 33 @Override
21 public boolean delete(String name) { 34 public boolean delete(String name) {
22 - throw new IllegalStateException("not implemented !"); 35 + if(name == null){
  36 + throw new IllegalStateException("not implemented !");
  37 + }
  38 + User user = findByName(name);
  39 + if(user==null){
  40 + return false;
  41 + }
  42 + userRepository.delete(user.getId());
  43 + return true;
23 } 44 }
24 45
25 @Override 46 @Override
26 public User findByName(String name) { 47 public User findByName(String name) {
27 - throw new IllegalStateException("not implemented !"); 48 + if(name==null){
  49 + throw new IllegalArgumentException("name cannot be null");
  50 + }
  51 + return userRepository.findByName(name);
28 } 52 }
29 53
30 @Override 54 @Override
31 public boolean isUserHasRight(String userName, Right right) { 55 public boolean isUserHasRight(String userName, Right right) {
32 - throw new IllegalStateException("not implemented !"); 56 + if(right==null){
  57 + throw new IllegalArgumentException("name cannot be null");
  58 + }
  59 + else{
  60 + return false;
  61 + }
33 } 62 }
34 } 63 }