aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/group/GroupMembersUpdater.java
diff options
context:
space:
mode:
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.java56
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();
+ }
+
+
+
+
+}