1f56c1038a15433b83ce43f237a9067433e356dd
[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
52         case Change_Item_Permissions:
53           if (permission.equals(PermissionTypes.Owner.name())) {
54             return true;
55           }
56           break;
57
58         case Submit_Item:
59           if (permission.equals(PermissionTypes.Contributor.name()) || permission.equals
60               (PermissionTypes.Owner.name())) {
61             return true;
62           }
63           break;
64
65         default:
66           return false;
67       }
68     } catch (IllegalArgumentException ex) {
69       throw new CoreException(new PermissionsErrorMessagesBuilder(INVALID_ACTION_TYPE).build());
70     }
71
72     return false;
73   }
74
75   @Override
76   public void executeAction(String itemId, String userId, String action) {
77     try {
78       switch (PermissionActionTypes.valueOf(action)) {
79         case Create_Item:
80           caseCreateItem(userId,itemId);
81           break;
82
83         case Change_Item_Permissions:
84           break;
85
86         case Edit_Item:
87           break;
88
89         case Submit_Item:
90           break;
91
92         default:
93       }
94     } catch (IllegalArgumentException ex) {
95       throw new CoreException(new PermissionsErrorMessagesBuilder(INVALID_ACTION_TYPE).build());
96     }
97   }
98
99   @Override
100   public void updatePermission(String itemId,String currentUserId, String permission, Set<String>
101       addedUsersIds,Set<String> removedUsersIds) {
102     try {
103       PermissionTypes.valueOf(permission);
104     } catch (IllegalArgumentException ex) {
105       throw new CoreException(new PermissionsErrorMessagesBuilder(INVALID_PERMISSION_TYPE).build());
106     }
107
108     if (permission.equals(PermissionTypes.Owner.name())) {
109
110       HashSet<String> currentOwner = new HashSet<String>();
111       currentOwner.add(currentUserId);
112
113       PermissionsServicesFactory.getInstance().createInterface()
114           .updateItemPermissions(itemId,PermissionTypes.Contributor.name(),
115           currentOwner,new HashSet<String>());
116     }
117   }
118
119   protected void caseCreateItem(String userId,String itemId) {
120     HashSet<String> ownerId = new HashSet<String>();
121     ownerId.add(userId);
122     PermissionsServicesFactory.getInstance().createInterface()
123         .updateItemPermissions(itemId, PermissionTypes.Owner.name(), ownerId,
124             new HashSet<String>());
125   }
126
127 }