}
private boolean userHasPermission(String itemId, String userId) {
- String permission = permissionsManager.getUserItemPermission(itemId, userId);
- return (permission != null && permission.matches(
- PermissionTypes.Contributor.name() + "|" + PermissionTypes.Owner.name()));
+ return permissionsManager.getUserItemPermission(itemId, userId)
+ .map(permission -> permission
+ .matches(PermissionTypes.Contributor.name() + "|" + PermissionTypes.Owner.name()))
+ .orElse(false);
}
private Predicate<Item> createItemPredicate(String versionStatus, String itemStatus, String user) {
}
}
- private boolean userHasPermission(String itemId, String userId) {
- String permission = permissionsManager.getUserItemPermission(itemId, userId);
- return permission != null && permission
- .matches(PermissionTypes.Contributor.name() + "|" + PermissionTypes.Owner.name());
- }
+ private boolean userHasPermission(String itemId, String userId) {
+ return permissionsManager.getUserItemPermission(itemId, userId)
+ .map(permission -> permission
+ .matches(PermissionTypes.Contributor.name() + "|" + PermissionTypes.Owner.name()))
+ .orElse(false);
+ }
private Predicate<Item> createItemPredicate(String versionStatus,
String itemStatus,
import org.openecomp.sdc.itempermissions.type.ItemPermissionsEntity;
import java.util.Collection;
+import java.util.Optional;
import java.util.Set;
/**
void updateItemPermissions(String itemId, String permission, Set<String> addedUsersIds,
Set<String> removedUsersIds);
- boolean isAllowed(String itemId,String userId,String action);
+ boolean isAllowed(String itemId, String userId, String action);
- String getUserItemPermission(String itemId, String userId);
+ Optional<String> getUserItemPermission(String itemId, String userId);
void deleteItemPermissions(String itemId);
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import org.openecomp.sdc.common.errors.CoreException;
import org.openecomp.sdc.common.errors.ErrorCategory;
}
@Override
- public String getUserItemPermission(String itemId, String userId) {
- return permissionsServices.getUserItemPermiission(itemId, userId);
+ public Optional<String> getUserItemPermission(String itemId, String userId) {
+ return permissionsServices.getUserItemPermission(itemId, userId);
}
@Override
import org.openecomp.sdc.itempermissions.type.ItemPermissionsEntity;
import java.util.Collection;
+import java.util.Optional;
import java.util.Set;
/**
void updateItemPermissions(String itemId, String permission, Set<String> addedUsersIds,
Set<String> removedUsersIds);
- boolean isAllowed(String itemId,String userId,String action);
+ boolean isAllowed(String itemId, String userId, String action);
- void execute(String itemId,String userId,String action);
+ void execute(String itemId, String userId, String action);
- String getUserItemPermiission(String itemId, String userId);
+ Optional<String> getUserItemPermission(String itemId, String userId);
-
- void deleteItemPermissions(String itemId);
+ void deleteItemPermissions(String itemId);
}
import org.openecomp.sdc.itempermissions.type.ItemPermissionsEntity;
import java.util.Collection;
+import java.util.Optional;
import java.util.Set;
/**
void updateItemPermissions(String itemId, String permission, Set<String> addedUsersIds,
Set<String> removedUsersIds);
- String getUserItemPermission(String itemId, String userId);
+ Optional<String> getUserItemPermission(String itemId, String userId);
void deleteItemPermissions(String itemId);
}
import org.openecomp.sdc.itempermissions.type.ItemPermissionsEntity;
import java.util.Collection;
+import java.util.Optional;
import java.util.Set;
/**
@Override
public void updateItemPermissions(String itemId, String permission, Set<String> addedUsersIds,
Set<String> removedUsersIds) {
- addedUsersIds.forEach(userId -> accessor.addPermission(itemId,userId,permission));
- removedUsersIds.forEach(userId -> accessor.deletePermission(itemId,userId));
+ addedUsersIds.forEach(userId -> accessor.addPermission(itemId, userId, permission));
+ removedUsersIds.stream()
+ .filter(userId -> getUserItemPermission(itemId, userId)
+ .map(userPermissionOnItem -> userPermissionOnItem.equals(permission))
+ .orElse(false))
+ .forEach(userId -> accessor.deletePermission(itemId, userId));
}
@Override
- public String getUserItemPermission(String itemId, String userId) {
-
- ResultSet result = accessor.getUserItemPermission(itemId,userId);
- if (result.getAvailableWithoutFetching() < 1) {
- return null;
- }
- return result.one().getString(0);
+ public Optional<String> getUserItemPermission(String itemId, String userId) {
+ ResultSet result = accessor.getUserItemPermission(itemId, userId);
+ return result.getAvailableWithoutFetching() < 1
+ ? Optional.empty()
+ : Optional.of(result.one().getString(0));
}
@Override
public void deleteItemPermissions(String itemId) {
- accessor.deleteItemPermissions(itemId);
+ accessor.deleteItemPermissions(itemId);
}
Result<ItemPermissionsEntity> getItemPermissions(String itemId);
@Query("select permission from dox.item_permissions WHERE item_id = ? AND user_id=?")
- ResultSet getUserItemPermission(String itemId,String userId);
+ ResultSet getUserItemPermission(String itemId, String userId);
@Query("delete from dox.item_permissions where item_id = ? and user_id = ?")
void deletePermission(String itemId, String userId);
@Query("insert into dox.item_permissions (item_id,user_id,permission) values (?,?,?)")
- void addPermission(String itemId,String userId, String permission);
+ void addPermission(String itemId, String userId, String permission);
@Query("delete from dox.item_permissions where item_id=?")
void deleteItemPermissions(String itemId);
import org.openecomp.sdc.itempermissions.type.ItemPermissionsEntity;
import java.util.Collection;
+import java.util.Optional;
import java.util.Set;
private static final String CHANGE_PERMISSIONS = "Change_Item_Permissions";
public PermissionsServicesImpl(PermissionsRules permissionsRules,
- ItemPermissionsDao itemPermissionsDao,UserPermissionsDao userPermissionsDao) {
+ ItemPermissionsDao itemPermissionsDao,
+ UserPermissionsDao userPermissionsDao) {
this.itemPermissionsDao = itemPermissionsDao;
this.permissionsRules = permissionsRules;
this.userPermissionsDao = userPermissionsDao;
@Override
public Set<String> listUserPermittedItems(String userId, String permission) {
- return userPermissionsDao.listUserPermittedItems(userId,permission);
+ return userPermissionsDao.listUserPermittedItems(userId, permission);
}
@Override
Set<String> removedUsersIds) {
String currentUserId = SessionContextProviderFactory.getInstance()
- .createInterface().get().getUser().getUserId();
+ .createInterface().get().getUser().getUserId();
- permissionsRules.executeAction(itemId,currentUserId,CHANGE_PERMISSIONS);
+ permissionsRules.executeAction(itemId, currentUserId, CHANGE_PERMISSIONS);
- permissionsRules.updatePermission(itemId,currentUserId,permission,addedUsersIds,
- removedUsersIds);
+ permissionsRules.updatePermission(itemId, currentUserId, permission, addedUsersIds,
+ removedUsersIds);
itemPermissionsDao.updateItemPermissions(itemId, permission,
- addedUsersIds, removedUsersIds);
+ addedUsersIds, removedUsersIds);
userPermissionsDao.updatePermissions(itemId, permission,
- addedUsersIds, removedUsersIds);
+ addedUsersIds, removedUsersIds);
}
@Override
- public boolean isAllowed(String itemId,String userId,String action) {
-
- String userPermission = itemPermissionsDao.getUserItemPermission(itemId,userId);
- return permissionsRules.isAllowed(userPermission,action);
+ public boolean isAllowed(String itemId, String userId, String action) {
+ return itemPermissionsDao.getUserItemPermission(itemId, userId)
+ .map(permission -> permissionsRules.isAllowed(permission, action))
+ .orElse(false);
}
@Override
- public void execute(String itemId,String userId,String action) {
+ public void execute(String itemId, String userId, String action) {
permissionsRules.executeAction(itemId, userId, action);
}
@Override
- public String getUserItemPermiission(String itemId, String userId) {
- return itemPermissionsDao.getUserItemPermission(itemId,userId);
+ public Optional<String> getUserItemPermission(String itemId, String userId) {
+ return itemPermissionsDao.getUserItemPermission(itemId, userId);
}
@Override
*/
package org.openecomp.sdc.itempermissions.impl;
+import org.apache.commons.collections.CollectionUtils;
import org.openecomp.sdc.common.errors.CoreException;
import org.openecomp.sdc.itempermissions.PermissionsRules;
+import org.openecomp.sdc.itempermissions.PermissionsServices;
import org.openecomp.sdc.itempermissions.PermissionsServicesFactory;
import org.openecomp.sdc.itempermissions.errors.PermissionsErrorMessagesBuilder;
import org.openecomp.sdc.itempermissions.impl.types.PermissionActionTypes;
}
}
- @Override
- public void updatePermission(String itemId, String currentUserId, String permission, Set<String>
- addedUsersIds, Set<String> removedUsersIds) {
- try {
- PermissionTypes.valueOf(permission);
- } catch (IllegalArgumentException ex) {
- throw new CoreException(new PermissionsErrorMessagesBuilder(INVALID_PERMISSION_TYPE).build());
- }
-
- if (permission.equals(PermissionTypes.Owner.name())) {
- makeCurrentUserContributor(itemId,currentUserId);
- }
+ @Override
+ public void updatePermission(String itemId, String currentUserId, String permission, Set<String>
+ addedUsersIds, Set<String> removedUsersIds) {
+ try {
+ PermissionTypes.valueOf(permission);
+ } catch (IllegalArgumentException ex) {
+ throw new CoreException(new PermissionsErrorMessagesBuilder(INVALID_PERMISSION_TYPE).build());
}
- private void makeCurrentUserContributor(String itemId, String currentUserId) {
-
- String currentPermission = PermissionsServicesFactory.getInstance().createInterface().
- getUserItemPermiission(itemId,currentUserId);
-
- if(currentPermission != null) {
-
- PermissionsServicesFactory.getInstance().createInterface()
- .updateItemPermissions(itemId, PermissionTypes.Contributor.name(),
- Collections.singleton(currentUserId), new HashSet<>());
+ if (isOwnerAdded(permission, addedUsersIds)) {
+ handleCurrentOwner(itemId, currentUserId);
+ }
+ }
+
+ private boolean isOwnerAdded(String permission, Set<String> addedUsersIds) {
+ return permission.equals(PermissionTypes.Owner.name()) &&
+ CollectionUtils.isNotEmpty(addedUsersIds);
+ }
+
+ private void handleCurrentOwner(String itemId, String currentUserId) {
+ PermissionsServices permissionsServices =
+ PermissionsServicesFactory.getInstance().createInterface();
+ if (!permissionsServices.getUserItemPermission(itemId, currentUserId).isPresent()) {
+ return; // no current owner - first owner addition
}
-}
+ Set<String> currentUserSet = Collections.singleton(currentUserId);
+ permissionsServices
+ .updateItemPermissions(itemId, PermissionTypes.Contributor.name(), currentUserSet,
+ new HashSet<>());
+ permissionsServices.updateItemPermissions(itemId, PermissionTypes.Owner.name(), new HashSet<>(),
+ currentUserSet);
+ }
private void caseCreateItem(String userId, String itemId) {
HashSet<String> ownerId = new HashSet<>();