re base code
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / components / impl / group / GroupMembersUpdater.java
1 package org.openecomp.sdc.be.components.impl.group;
2
3 import org.apache.commons.collections.MapUtils;
4 import org.openecomp.sdc.be.model.GroupDefinition;
5 import org.springframework.stereotype.Component;
6
7 import java.util.List;
8 import java.util.Map;
9
10 import static org.apache.commons.collections.MapUtils.isEmpty;
11
12 /**
13  * A Helper class which handles altering the members state of a group
14  */
15 @Component
16 public class GroupMembersUpdater {
17
18     public void removeMember(List<GroupDefinition> groups, String memberId) {
19         groups.forEach(group -> removeGroupMember(group, memberId));
20     }
21
22     public void replaceMember(List<GroupDefinition> groups, String oldMemberId, String newMemberId) {
23         groups.forEach(grp -> replaceMember(grp, oldMemberId, newMemberId));
24     }
25
26     private void removeGroupMember(GroupDefinition group, String memberId) {
27         Map<String, String> membersNameToId = group.getMembers();
28         String groupMemberKey = findGroupMemberKey(membersNameToId, memberId);
29         if (groupMemberKey != null) {
30             membersNameToId.remove(groupMemberKey);
31         }
32     }
33
34     private void replaceMember(GroupDefinition group, String oldMemberId, String newMemberId) {
35         Map<String, String> membersNameToId = group.getMembers();
36         String groupMemberKey = findGroupMemberKey(membersNameToId, oldMemberId);
37         if (groupMemberKey != null) {
38             membersNameToId.replace(groupMemberKey, newMemberId);
39         }
40     }
41
42     private String findGroupMemberKey(Map<String, String> members, String memberToFind) {
43         if (isEmpty(members)) {
44             return null;
45         }
46         Map invertedMap = MapUtils.invertMap(members);
47         if (!invertedMap.containsKey(memberToFind)) {
48             return null;
49         }
50         return invertedMap.get(memberToFind).toString();
51     }
52
53
54
55
56 }