package fr.plil.sio.persistence.jpa; import fr.plil.sio.persistence.api.Group; import fr.plil.sio.persistence.api.GroupService; import fr.plil.sio.persistence.api.Right; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class GroupServiceJpa implements GroupService { @Autowired private GroupRepository groupRepository; @Autowired private RightRepository rightRepository; @Autowired private UserRepository userRepository; @Override public Group create(String name) { if (name == null) { throw new IllegalArgumentException("name cannot be null"); } Group group = groupRepository.findByName(name); if (group != null) { throw new IllegalStateException("a group with the same name already exists"); } group = new Group(); group.setName(name); groupRepository.save(group); return group; } @Override public boolean delete(String name) { if (name == null) { throw new IllegalArgumentException("name cannot be null"); } Group group = findByName(name); if(group==null){ return false; } groupRepository.delete(group.getId()); return true; } @Override public Group findByName(String name) { if (name == null) { throw new IllegalArgumentException("name cannot be null"); } return groupRepository.findByName(name); } @Override public boolean addRight(String groupName, Right right) { if(groupName==null){ throw new IllegalArgumentException("groupname cannot be null"); } if(right == null){ throw new IllegalArgumentException("right cannot be null"); } Group group = groupRepository.findByName(groupName); if (group == null) { throw new IllegalArgumentException("group cannot be null"); } List list = group.getRights(); if(list.contains(right)){ return false; } assert list != null; list.add(right); group.setRights(list); return true; } @Override public boolean removeRight(String groupName, Right right) { if(groupName==null){ throw new IllegalArgumentException("Groupname cannot be null"); } if(right==null){ throw new IllegalArgumentException("right cannot be null"); } if(rightRepository.findByName(right.getName()).size()==0){ throw new IllegalArgumentException("right not in database"); } Group group = groupRepository.findByName(groupName); if (group == null) { throw new IllegalArgumentException("group cannot be null"); } List list = group.getRights(); list.remove(right); group.setRights(list); return true; } }