Newer
Older
package it.inaf.ia2.gms.service;
import it.inaf.ia2.gms.model.Permission;
import it.inaf.ia2.gms.persistence.LoggingDAO;
import it.inaf.ia2.gms.persistence.model.PermissionEntity;
import it.inaf.ia2.gms.persistence.PermissionsDAO;
import static it.inaf.ia2.gms.persistence.model.ActionType.*;
import it.inaf.ia2.gms.persistence.model.GroupEntity;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class PermissionsService {
private final PermissionsDAO permissionsDAO;
private final LoggingDAO loggingDAO;
@Autowired
public PermissionsService(PermissionsDAO permissionsDAO, LoggingDAO loggingDAO) {
this.permissionsDAO = permissionsDAO;
public List<PermissionEntity> getGroupPermissions(GroupEntity group) {
return permissionsDAO.getGroupsPermissions(group.getId());
public List<PermissionEntity> findUserPermissions(String userId) {
return permissionsDAO.findUserPermissions(userId);
}
public List<PermissionEntity> findUserPermissions(GroupEntity group, String userId) {
return permissionsDAO.findUserPermissions(userId, group.getPath());
public void removePermission(GroupEntity group, String userId) {
permissionsDAO.deletePermission(group.getId(), userId);
loggingDAO.logAction(PERMISSION_REMOVED, "Removed permission for " + userId + " in group " + group.getId());
Sonia Zorba
committed
public PermissionEntity addPermission(GroupEntity group, String userId, Permission permission, String setBy) {
Optional<PermissionEntity> existingPermissionEntity = permissionsDAO.findPermissionEntity(group.getId(), userId);
PermissionEntity permissionEntity;
if (existingPermissionEntity.isPresent()) {
permissionEntity = existingPermissionEntity.get();
Permission resultingPermission = Permission.addPermission(permissionEntity.getPermission(), permission);
if (resultingPermission == permissionEntity.getPermission()) {
return permissionEntity;
} else {
permissionEntity.setPermission(resultingPermission);
}
} else {
permissionEntity = new PermissionEntity();
permissionEntity.setGroupId(group.getId());
permissionEntity.setUserId(userId);
permissionEntity.setPermission(permission);
permissionEntity.setGroupPath(group.getPath());
Sonia Zorba
committed
permissionEntity.setSetBy(setBy);
permissionEntity = permissionsDAO.createOrUpdatePermission(permissionEntity);
loggingDAO.logAction(PERMISSION_ADDED, "Added " + permission + " permission for " + userId + " in group " + group.getId());
return permissionEntity;
Sonia Zorba
committed
Sonia Zorba
committed
public PermissionEntity createOrUpdatePermission(GroupEntity group, String userId, Permission permission, String setBy) {
PermissionEntity permissionEntity = new PermissionEntity();
permissionEntity.setGroupId(group.getId());
permissionEntity.setUserId(userId);
permissionEntity.setPermission(permission);
permissionEntity.setGroupPath(group.getPath());
Sonia Zorba
committed
permissionEntity.setSetBy(setBy);
permissionEntity = permissionsDAO.createOrUpdatePermission(permissionEntity);
loggingDAO.logAction(PERMISSION_ADDED, "Added " + permission + " permission for " + userId + " in group " + group.getId());
return permissionEntity;
Sonia Zorba
committed
public PermissionEntity updatePermission(GroupEntity group, String userId, Permission permission, String setBy) {
Sonia Zorba
committed
PermissionEntity permissionEntity = permissionsDAO.findPermissionEntity(group.getId(), userId)
.orElseThrow(() -> new IllegalArgumentException("Specified permission not found"));
Sonia Zorba
committed
permissionEntity.setSetBy(setBy);
permissionEntity.setPermission(permission);
permissionEntity = permissionsDAO.updatePermission(permissionEntity);
loggingDAO.logAction(PERMISSION_UPDATED, "Updated permission for " + userId + " in group " + group.getId() + " to " + permission);
return permissionEntity;
Sonia Zorba
committed
}