1 package org.openecomp.core.tools.concurrent;
3 import org.openecomp.core.tools.store.NotificationHandler;
4 import org.openecomp.core.tools.store.PermissionHandler;
6 import java.util.ArrayList;
8 import java.util.Optional;
9 import java.util.concurrent.Callable;
12 public class ItemAddContributorsTask implements Callable<String> {
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;
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;
31 public String call() {
32 users.forEach(this::handleUser);
33 return String.format(SUCCESSFUL_RETURN_MESSAGE, itemId);
36 private void handleUser(String user) {
37 Optional<String> userPermission = getUserPermission(user);
38 if (!userPermission.isPresent()) {
39 setUserPermission(user, CONTRIBUTOR);
40 registerUserNotificationSubscription(user);
44 private void registerUserNotificationSubscription(String user) {
45 notificationHandler.registerNotificationForUserOnEntity(user, itemId);
48 private void setUserPermission(String user, String permission) {
49 permissionHandler.setItemUserPermission(itemId, user, permission);
52 private Optional<String> getUserPermission(String user) {
53 return permissionHandler.getItemUserPermission(itemId, user);