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