Add collaboration feature
[sdc.git] / openecomp-be / lib / openecomp-healing-lib / openecomp-sdc-healing-impl / src / main / java / org / openecomp / sdc / healing / healers / OwnerHealer.java
1 package org.openecomp.sdc.healing.healers;
2
3 import org.openecomp.sdc.common.session.SessionContextProviderFactory;
4 import org.openecomp.sdc.healing.interfaces.Healer;
5 import org.openecomp.sdc.itempermissions.dao.ItemPermissionsDao;
6 import org.openecomp.sdc.itempermissions.dao.ItemPermissionsDaoFactory;
7 import org.openecomp.sdc.itempermissions.impl.types.PermissionTypes;
8 import org.openecomp.sdc.itempermissions.type.ItemPermissionsEntity;
9 import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
10 import org.openecomp.sdc.versioning.dao.types.Version;
11
12 import java.util.Collection;
13 import java.util.Collections;
14 import java.util.HashSet;
15
16 /**
17  * Created by ayalaben on 8/28/2017
18  */
19 public class OwnerHealer implements Healer {
20   private static final String HEALING_USER_SUFFIX = "_healer";
21   private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
22
23   private static final ItemPermissionsDao permissionsDao =
24       ItemPermissionsDaoFactory.getInstance().createInterface();
25
26   public Object heal(String itemId, Version version) {
27     mdcDataDebugMessage.debugEntryMessage(null);
28
29     Collection<ItemPermissionsEntity> itemPermissions = permissionsDao.listItemPermissions(itemId);
30
31     if (itemPermissions.stream().noneMatch(this::isOwnerPermission)) {
32       String currentUserId =
33           SessionContextProviderFactory.getInstance().createInterface().get().getUser().getUserId()
34               .replace(HEALING_USER_SUFFIX, "");
35
36       permissionsDao.updateItemPermissions(itemId, PermissionTypes.Owner.name(),
37           Collections.singleton(currentUserId), new HashSet<>());
38
39       return currentUserId;
40     }
41     return itemPermissions.stream().filter(this::isOwnerPermission).findFirst().get().getUserId();
42   }
43
44   private boolean isOwnerPermission(ItemPermissionsEntity permissionsEntity) {
45     return permissionsEntity.getPermission().equals(PermissionTypes.Owner.name());
46   }
47 }