diff options
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/group/GroupMembersUpdater.java')
-rw-r--r-- | catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/group/GroupMembersUpdater.java | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/group/GroupMembersUpdater.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/group/GroupMembersUpdater.java new file mode 100644 index 0000000000..609a705639 --- /dev/null +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/group/GroupMembersUpdater.java @@ -0,0 +1,56 @@ +package org.openecomp.sdc.be.components.impl.group; + +import org.apache.commons.collections.MapUtils; +import org.openecomp.sdc.be.model.GroupDefinition; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Map; + +import static org.apache.commons.collections.MapUtils.isEmpty; + +/** + * A Helper class which handles altering the members state of a group + */ +@Component +public class GroupMembersUpdater { + + public void removeMember(List<GroupDefinition> groups, String memberId) { + groups.forEach(group -> removeGroupMember(group, memberId)); + } + + public void replaceMember(List<GroupDefinition> groups, String oldMemberId, String newMemberId) { + groups.forEach(grp -> replaceMember(grp, oldMemberId, newMemberId)); + } + + private void removeGroupMember(GroupDefinition group, String memberId) { + Map<String, String> membersNameToId = group.getMembers(); + String groupMemberKey = findGroupMemberKey(membersNameToId, memberId); + if (groupMemberKey != null) { + membersNameToId.remove(groupMemberKey); + } + } + + private void replaceMember(GroupDefinition group, String oldMemberId, String newMemberId) { + Map<String, String> membersNameToId = group.getMembers(); + String groupMemberKey = findGroupMemberKey(membersNameToId, oldMemberId); + if (groupMemberKey != null) { + membersNameToId.replace(groupMemberKey, newMemberId); + } + } + + private String findGroupMemberKey(Map<String, String> members, String memberToFind) { + if (isEmpty(members)) { + return null; + } + Map invertedMap = MapUtils.invertMap(members); + if (!invertedMap.containsKey(memberToFind)) { + return null; + } + return invertedMap.get(memberToFind).toString(); + } + + + + +} |