Commit cd5726d6 authored by Sonia Zorba's avatar Sonia Zorba
Browse files

Removed JPA and used Postgresql ltree extension

parent d2d3a98b
Loading
Loading
Loading
Loading
Loading
+4 −9
Original line number Diff line number Diff line
@@ -34,14 +34,14 @@
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.2.6</version>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
@@ -58,11 +58,6 @@
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.zonky.test</groupId>
            <artifactId>embedded-database-spring-test</artifactId>
+0 −11
Original line number Diff line number Diff line
package it.inaf.ia2.gms.authn;

import it.inaf.ia2.gms.persistence.UsersRepository;
import it.inaf.ia2.gms.persistence.model.User;
import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
@@ -16,9 +14,6 @@ public class SessionData {
    @Autowired
    private HttpServletRequest request;

    @Autowired
    private UsersRepository usersRepository;

    private String userId;
    private String accessToken;

@@ -27,12 +22,6 @@ public class SessionData {
        CustomAuthenticationData authn = (CustomAuthenticationData) ((OAuth2Authentication) request.getUserPrincipal()).getUserAuthentication();
        userId = (String) authn.getPrincipal();
        accessToken = (String) authn.getAccessToken().getValue();

        if (!usersRepository.findById(userId).isPresent()) {
            User user = new User();
            user.setId(userId);
            usersRepository.save(user);
        }
    }

    public String getUserId() {
+16 −24
Original line number Diff line number Diff line
@@ -8,12 +8,10 @@ import it.inaf.ia2.gms.model.GroupsModelResponse;
import it.inaf.ia2.gms.model.PaginatedData;
import it.inaf.ia2.gms.model.PaginatedModelRequest;
import it.inaf.ia2.gms.model.RenameGroupRequest;
import it.inaf.ia2.gms.persistence.model.Group;
import it.inaf.ia2.gms.persistence.model.User;
import it.inaf.ia2.gms.service.GroupsModelService;
import it.inaf.ia2.gms.persistence.model.GroupEntity;
import it.inaf.ia2.gms.service.GroupsModelBuilder;
import it.inaf.ia2.gms.service.GroupsService;
import it.inaf.ia2.gms.service.UsersService;
import java.util.List;
import it.inaf.ia2.gms.service.GroupsTreeBuilder;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
@@ -34,13 +32,13 @@ public class GroupsController {
    private SessionData session;

    @Autowired
    private UsersService usersService;
    private GroupsService groupsService;

    @Autowired
    private GroupsModelService groupsModelService;
    private GroupsModelBuilder groupsModelService;

    @Autowired
    private GroupsService groupsService;
    private GroupsTreeBuilder groupsTreeBuilder;

    @GetMapping(value = "/groups", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public GroupsModelResponse getGroupsModelResponse(@Valid GroupsModelRequest groupsModelRequest) {
@@ -50,10 +48,9 @@ public class GroupsController {
    @PostMapping(value = "/group", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public ResponseEntity<PaginatedData<GroupNode>> createGroup(@Valid @RequestBody CreateGroupRequest request) {

        User user = getUser();
        Group newGroup = groupsService.addGroup(request.getParentGroupId(), request.getNewGroupName(), user);
        GroupEntity newGroup = groupsService.addGroup(request.getParentGroupId(), request.getNewGroupName(), session.getUserId());

        PaginatedData<GroupNode> groupsPanel = getGroupsPanel(newGroup.getParentGroup(), request, user);
        PaginatedData<GroupNode> groupsPanel = getGroupsPanel(request.getParentGroupId(), request);

        return new ResponseEntity<>(groupsPanel, HttpStatus.CREATED);
    }
@@ -61,10 +58,11 @@ public class GroupsController {
    @PutMapping(value = "/group/{groupId}", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public ResponseEntity<PaginatedData<GroupNode>> renameGroup(@PathVariable("groupId") String groupId, @Valid @RequestBody RenameGroupRequest request) {

        User user = getUser();
        Group renamedGroup = groupsService.renameGroup(groupId, request.getNewGroupName(), user);
        GroupEntity renamedGroup = groupsService.renameGroup(groupId, request.getNewGroupName(), session.getUserId());

        GroupEntity parent = groupsService.getGroupByPath(renamedGroup.getParentPath());

        PaginatedData<GroupNode> groupsPanel = getGroupsPanel(renamedGroup.getParentGroup(), request, user);
        PaginatedData<GroupNode> groupsPanel = getGroupsPanel(parent.getId(), request);

        return ResponseEntity.ok(groupsPanel);
    }
@@ -72,20 +70,14 @@ public class GroupsController {
    @DeleteMapping(value = "/group/{groupId}", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public ResponseEntity<?> deleteGroup(@PathVariable("groupId") String groupId, PaginatedModelRequest request) {

        User user = getUser();
        Group parent = groupsService.deleteGroup(groupId, user);
        GroupEntity parent = groupsService.deleteGroup(groupId, session.getUserId());

        PaginatedData<GroupNode> groupsPanel = getGroupsPanel(parent, request, user);
        PaginatedData<GroupNode> groupsPanel = getGroupsPanel(parent.getId(), request);

        return ResponseEntity.ok(groupsPanel);
    }

    private User getUser() {
        return usersService.getUserById(session.getUserId());
    }

    private PaginatedData<GroupNode> getGroupsPanel(Group parentGroup, PaginatedModelRequest paginatedRequest, User user) {
        List<GroupNode> groupNodes = groupsService.getSubgroups(parentGroup, user);
        return new PaginatedData<>(groupNodes, paginatedRequest.getPaginatorPage(), paginatedRequest.getPaginatorPageSize());
    private PaginatedData<GroupNode> getGroupsPanel(String parentGroupId, PaginatedModelRequest paginatedRequest) {
        return groupsTreeBuilder.listSubGroups(parentGroupId, session.getUserId(), paginatedRequest);
    }
}
+0 −10
Original line number Diff line number Diff line
@@ -2,9 +2,7 @@ package it.inaf.ia2.gms.controller;

import it.inaf.ia2.gms.authn.SessionData;
import it.inaf.ia2.gms.model.Permission;
import it.inaf.ia2.gms.persistence.model.User;
import it.inaf.ia2.gms.service.PermissionsService;
import it.inaf.ia2.gms.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
@@ -18,19 +16,11 @@ public class PermissionsController {
    @Autowired
    private SessionData session;

    @Autowired
    private UsersService usersService;
    
    @Autowired
    private PermissionsService permissionsService;

    @DeleteMapping(value = "/permission", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public ResponseEntity deletePermission(@RequestParam("user") String userId, @RequestParam("group") String group, @RequestParam("permission") Permission permission) {
        User user = getUser();
        return null;
    }

    private User getUser() {
        return usersService.getUserById(session.getUserId());
    }
}
+5 −47
Original line number Diff line number Diff line
package it.inaf.ia2.gms.model;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class GroupNode {

    private String groupId;
    private String groupName;
    private Set<Permission> permissions;
    private Permission permission;
    private boolean hasChildren;

    public GroupNode() {
        permissions = new HashSet<>();
    }

    public String getGroupId() {
        return groupId;
    }
@@ -33,44 +23,12 @@ public class GroupNode {
        this.groupName = groupName;
    }

    public List<Permission> getPermissions() {
        return Collections.unmodifiableList(new ArrayList<>(permissions));
    }

    public void setPermissions(Set<Permission> permissions) {
        this.permissions = permissions;
    public Permission getPermission() {
        return permission;
    }

    public void addPermission(Permission permission) {

        // remove implied permissions
        switch (permission) {
            case ADMIN:
                permissions.add(permission);
                permissions.remove(Permission.MANAGE_MEMBERS);
                permissions.remove(Permission.VIEW_MEMBERS);
                permissions.remove(Permission.TRAVERSE);
                break;
            case MANAGE_MEMBERS:
                if (!permissions.contains(Permission.ADMIN)) {
                    permissions.add(permission);
                    permissions.remove(Permission.VIEW_MEMBERS);
                    permissions.remove(Permission.TRAVERSE);
                }
                break;
            case VIEW_MEMBERS:
                if (!permissions.contains(Permission.ADMIN)
                        && !permissions.contains(Permission.MANAGE_MEMBERS)) {
                    permissions.add(permission);
                    permissions.remove(Permission.TRAVERSE);
                }
                break;
            case TRAVERSE:
                if (permissions.isEmpty()) {
                    permissions.add(permission);
                }
                break;
        }
    public void setPermission(Permission permission) {
        this.permission = permission;
    }

    public boolean isHasChildren() {
Loading