9429445813c72cef1fefa6a42712a42471c31cdf
[sdc.git] /
1 package org.openecomp.core.tools.concurrent;
2
3 import org.openecomp.core.tools.store.NotificationHandler;
4 import org.openecomp.core.tools.store.PermissionHandler;
5
6 import java.util.ArrayList;
7 import java.util.List;
8 import java.util.Optional;
9 import java.util.concurrent.Callable;
10
11
12 public class ItemAddContributorsTask implements Callable<String> {
13
14   private static final String CONTRIBUTOR = "Contributor";
15   private static final String SUCCESSFUL_RETURN_MESSAGE = "Users added successfully as " +
16       "contributors to item id:%s.";
17   private final String itemId;
18   private final List<String> users;
19   private final PermissionHandler permissionHandler;
20   private final NotificationHandler notificationHandler;
21
22   public ItemAddContributorsTask(PermissionHandler permissionHandler, NotificationHandler
23       notificationHandler, String itemId, List<String> users) {
24     this.itemId = itemId.trim();
25     this.users = new ArrayList<>(users);
26     this.permissionHandler = permissionHandler;
27     this.notificationHandler = notificationHandler;
28   }
29
30   @Override
31   public String call() {
32     users.forEach(this::handleUser);
33     return String.format(SUCCESSFUL_RETURN_MESSAGE, itemId);
34   }
35
36   private void handleUser(String user) {
37     Optional<String> userPermission = getUserPermission(user);
38     if (!userPermission.isPresent()) {
39       setUserPermission(user, CONTRIBUTOR);
40       registerUserNotificationSubscription(user);
41     }
42   }
43
44   private void registerUserNotificationSubscription(String user) {
45     notificationHandler.registerNotificationForUserOnEntity(user, itemId);
46   }
47
48   private void setUserPermission(String user, String permission) {
49     permissionHandler.setItemUserPermission(itemId, user, permission);
50   }
51
52   private Optional<String> getUserPermission(String user) {
53     return permissionHandler.getItemUserPermission(itemId, user);
54   }
55 }