2 * Copyright © 2016-2018 European Support Limited
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org.openecomp.sdc.itempermissions.impl;
18 import org.openecomp.sdc.common.errors.CoreException;
19 import org.openecomp.sdc.itempermissions.PermissionsRules;
20 import org.openecomp.sdc.itempermissions.PermissionsServicesFactory;
21 import org.openecomp.sdc.itempermissions.errors.PermissionsErrorMessagesBuilder;
22 import org.openecomp.sdc.itempermissions.impl.types.PermissionActionTypes;
23 import org.openecomp.sdc.itempermissions.impl.types.PermissionTypes;
25 import java.util.Collections;
26 import java.util.HashSet;
29 import static org.openecomp.sdc.itempermissions.errors.PermissionsErrorMessages.INVALID_ACTION_TYPE;
30 import static org.openecomp.sdc.itempermissions.errors.PermissionsErrorMessages.INVALID_PERMISSION_TYPE;
33 * Created by ayalaben on 6/26/2017.
35 public class PermissionsRulesImpl implements PermissionsRules {
39 public boolean isAllowed(String permission, String action) {
41 if (permission == null) {
45 PermissionTypes.valueOf(permission);
46 } catch (IllegalArgumentException ex) {
47 throw new CoreException(new PermissionsErrorMessagesBuilder(INVALID_PERMISSION_TYPE).build());
51 switch (PermissionActionTypes.valueOf(action)) {
56 if (permission.equals(PermissionTypes.Contributor.name()) || permission.equals
57 (PermissionTypes.Owner.name())) {
62 if (permission.equals(PermissionTypes.Contributor.name()) || permission.equals
63 (PermissionTypes.Owner.name())) {
68 if (permission.equals(PermissionTypes.Contributor.name()) || permission.equals
69 (PermissionTypes.Owner.name())) {
74 case Change_Item_Permissions:
75 if (permission.equals(PermissionTypes.Owner.name())) {
81 if (permission.equals(PermissionTypes.Contributor.name()) || permission.equals
82 (PermissionTypes.Owner.name())) {
90 } catch (IllegalArgumentException ex) {
91 throw new CoreException(new PermissionsErrorMessagesBuilder(INVALID_ACTION_TYPE).build());
98 public void executeAction(String itemId, String userId, String action) {
100 switch (PermissionActionTypes.valueOf(action)) {
102 caseCreateItem(userId, itemId);
105 case Change_Item_Permissions:
116 } catch (IllegalArgumentException ex) {
117 throw new CoreException(new PermissionsErrorMessagesBuilder(INVALID_ACTION_TYPE).build());
122 public void updatePermission(String itemId, String currentUserId, String permission, Set<String>
123 addedUsersIds, Set<String> removedUsersIds) {
125 PermissionTypes.valueOf(permission);
126 } catch (IllegalArgumentException ex) {
127 throw new CoreException(new PermissionsErrorMessagesBuilder(INVALID_PERMISSION_TYPE).build());
130 if (permission.equals(PermissionTypes.Owner.name())) {
131 makeCurrentUserContributor(itemId,currentUserId);
135 private void makeCurrentUserContributor(String itemId, String currentUserId) {
137 String currentPermission = PermissionsServicesFactory.getInstance().createInterface().
138 getUserItemPermiission(itemId,currentUserId);
140 if(currentPermission != null) {
142 PermissionsServicesFactory.getInstance().createInterface()
143 .updateItemPermissions(itemId, PermissionTypes.Contributor.name(),
144 Collections.singleton(currentUserId), new HashSet<>());
149 private void caseCreateItem(String userId, String itemId) {
150 HashSet<String> ownerId = new HashSet<>();
152 PermissionsServicesFactory.getInstance().createInterface()
153 .updateItemPermissions(itemId, PermissionTypes.Owner.name(), ownerId,