f80379aa9108b9b4c3de746ef10216debfedc762
[sdc.git] /
1 package org.openecomp.sdc.itempermissions.impl;
2
3 import org.openecomp.sdc.common.errors.CoreException;
4 import org.openecomp.sdc.itempermissions.PermissionsRules;
5 import org.openecomp.sdc.itempermissions.PermissionsServicesFactory;
6 import org.openecomp.sdc.itempermissions.errors.PermissionsErrorMessagesBuilder;
7 import org.openecomp.sdc.itempermissions.impl.types.PermissionActionTypes;
8 import org.openecomp.sdc.itempermissions.impl.types.PermissionTypes;
9
10 import java.util.HashSet;
11 import java.util.Set;
12
13 import static org.openecomp.sdc.itempermissions.errors.PermissionsErrorMessages.INVALID_ACTION_TYPE;
14 import static org.openecomp.sdc.itempermissions.errors.PermissionsErrorMessages.INVALID_PERMISSION_TYPE;
15
16 /**
17  * Created by ayalaben on 6/26/2017.
18  */
19 public class PermissionsRulesImpl implements PermissionsRules {
20
21
22     @Override
23     public boolean isAllowed(String permission, String action) {
24
25         if (permission == null) {
26             return false;
27         }
28         try {
29             PermissionTypes.valueOf(permission);
30         } catch (IllegalArgumentException ex) {
31             throw new CoreException(new PermissionsErrorMessagesBuilder(INVALID_PERMISSION_TYPE).build());
32         }
33
34         try {
35             switch (PermissionActionTypes.valueOf(action)) {
36                 case Create_Item:
37                     return true;
38
39                 case Edit_Item:
40                     if (permission.equals(PermissionTypes.Contributor.name()) || permission.equals
41                             (PermissionTypes.Owner.name())) {
42                         return true;
43                     }
44                     break;
45                 case Commit_Item:
46                     if (permission.equals(PermissionTypes.Contributor.name()) || permission.equals
47                             (PermissionTypes.Owner.name())) {
48                         return true;
49                     }
50                     break;
51                 case Delete_Item:
52                     if (permission.equals(PermissionTypes.Contributor.name()) || permission.equals
53                             (PermissionTypes.Owner.name())) {
54                         return true;
55                     }
56                     break;
57
58                 case Change_Item_Permissions:
59                     if (permission.equals(PermissionTypes.Owner.name())) {
60                         return true;
61                     }
62                     break;
63
64                 case Submit_Item:
65                     if (permission.equals(PermissionTypes.Contributor.name()) || permission.equals
66                             (PermissionTypes.Owner.name())) {
67                         return true;
68                     }
69                     break;
70
71                 default:
72                     return false;
73             }
74         } catch (IllegalArgumentException ex) {
75             throw new CoreException(new PermissionsErrorMessagesBuilder(INVALID_ACTION_TYPE).build());
76         }
77
78         return false;
79     }
80
81     @Override
82     public void executeAction(String itemId, String userId, String action) {
83         try {
84             switch (PermissionActionTypes.valueOf(action)) {
85                 case Create_Item:
86                     caseCreateItem(userId, itemId);
87                     break;
88
89                 case Change_Item_Permissions:
90                     break;
91
92                 case Edit_Item:
93                     break;
94
95                 case Submit_Item:
96                     break;
97
98                 default:
99             }
100         } catch (IllegalArgumentException ex) {
101             throw new CoreException(new PermissionsErrorMessagesBuilder(INVALID_ACTION_TYPE).build());
102         }
103     }
104
105     @Override
106     public void updatePermission(String itemId, String currentUserId, String permission, Set<String>
107             addedUsersIds, Set<String> removedUsersIds) {
108         try {
109             PermissionTypes.valueOf(permission);
110         } catch (IllegalArgumentException ex) {
111             throw new CoreException(new PermissionsErrorMessagesBuilder(INVALID_PERMISSION_TYPE).build());
112         }
113
114         if (permission.equals(PermissionTypes.Owner.name())) {
115
116             HashSet<String> currentOwner = new HashSet<>();
117             currentOwner.add(currentUserId);
118
119             PermissionsServicesFactory.getInstance().createInterface()
120                     .updateItemPermissions(itemId, PermissionTypes.Contributor.name(),
121                             currentOwner, new HashSet<String>());
122         }
123     }
124
125     protected void caseCreateItem(String userId, String itemId) {
126         HashSet<String> ownerId = new HashSet<>();
127         ownerId.add(userId);
128         PermissionsServicesFactory.getInstance().createInterface()
129                 .updateItemPermissions(itemId, PermissionTypes.Owner.name(), ownerId,
130                         new HashSet<String>());
131     }
132
133 }