Add collaboration feature
[sdc.git] / openecomp-be / lib / openecomp-sdc-versioning-lib / openecomp-sdc-versioning-core / src / main / java / org / openecomp / sdc / versioning / impl / ItemManagerImpl.java
1 package org.openecomp.sdc.versioning.impl;
2
3 import org.openecomp.sdc.common.session.SessionContextProviderFactory;
4 import org.openecomp.sdc.itempermissions.PermissionsServices;
5 import org.openecomp.sdc.notification.services.SubscriptionService;
6 import org.openecomp.sdc.versioning.ItemManager;
7 import org.openecomp.sdc.versioning.dao.ItemDao;
8 import org.openecomp.sdc.versioning.dao.types.VersionStatus;
9 import org.openecomp.sdc.versioning.types.Item;
10
11 import java.util.Collection;
12 import java.util.function.Predicate;
13 import java.util.stream.Collectors;
14
15 public class ItemManagerImpl implements ItemManager {
16   public static final String CREATE_ITEM = "Create_Item";
17
18   private ItemDao itemDao;
19   private PermissionsServices permissionsServices;
20   private SubscriptionService subscriptionService;
21
22   public ItemManagerImpl(ItemDao itemDao, PermissionsServices permissionsServices,
23                          SubscriptionService subscriptionService) {
24     this.itemDao = itemDao;
25     this.permissionsServices = permissionsServices;
26     this.subscriptionService = subscriptionService;
27   }
28
29   @Override
30   public Collection<Item> list(Predicate<Item> predicate) {
31     return itemDao.list().stream().filter(predicate).collect(Collectors.toList());
32   }
33
34   @Override
35   public Item get(String itemId) {
36     Item item = new Item();
37     item.setId(itemId);
38     return itemDao.get(item);
39   }
40
41   @Override
42   public Item create(Item item) {
43     Item createdItem = itemDao.create(item);
44
45     String userId = SessionContextProviderFactory.getInstance()
46         .createInterface().get().getUser().getUserId();
47     String itemId = createdItem.getId();
48     permissionsServices.execute(itemId, userId, CREATE_ITEM);
49     subscriptionService.subscribe(userId, itemId);
50
51     return createdItem;
52   }
53
54   @Override
55   public void updateVersionStatus(String itemId, VersionStatus addedVersionStatus,
56                                   VersionStatus removedVersionStatus) {
57     Item item = get(itemId);
58     if (item == null) {
59       return;
60     }
61
62     item.addVersionStatus(addedVersionStatus);
63     if (removedVersionStatus != null) {
64       item.removeVersionStatus(removedVersionStatus);
65     }
66     itemDao.update(item);
67   }
68 }