diff options
author | 2018-07-29 16:13:45 +0300 | |
---|---|---|
committer | 2018-07-29 16:20:34 +0300 | |
commit | 5b593496b8f1b8e8be8d7d2dbcc223332e65a49b (patch) | |
tree | 2f9dfc45191e723da69cf74be7829784e9741b94 /catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/policy/PolicyTargetsUpdater.java | |
parent | 9200382f2ce7b4bb729aa287d0878004b2d2b4f9 (diff) |
re base code
Change-Id: I12a5ca14a6d8a87e9316b9ff362eb131105f98a5
Issue-ID: SDC-1566
Signed-off-by: Michael Lando <ml636r@att.com>
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/policy/PolicyTargetsUpdater.java')
-rw-r--r-- | catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/policy/PolicyTargetsUpdater.java | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/policy/PolicyTargetsUpdater.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/policy/PolicyTargetsUpdater.java new file mode 100644 index 0000000000..1f094f5a60 --- /dev/null +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/policy/PolicyTargetsUpdater.java @@ -0,0 +1,57 @@ +package org.openecomp.sdc.be.components.impl.policy; + +import org.apache.commons.collections.MapUtils; +import org.openecomp.sdc.be.datatypes.elements.PolicyTargetType; +import org.openecomp.sdc.be.model.PolicyDefinition; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Map; +import java.util.function.UnaryOperator; + +import static java.util.Collections.emptyList; +import static org.apache.commons.collections.CollectionUtils.isEmpty; + +/** + * A Helper class which handles altering the targets state of a policy + */ +@Component +public class PolicyTargetsUpdater { + + public void removeTarget(List<PolicyDefinition> policies, String targetId, PolicyTargetType targetType) { + policies.forEach(policy -> removePolicyTarget(policy, targetId, targetType)); + } + + public void replaceTarget(List<PolicyDefinition> policies, String oldTargetId, String newTargetId, PolicyTargetType targetType) { + policies.forEach(policy -> replacePolicyTarget(policy, targetType, oldTargetId, newTargetId)); + } + + private void replacePolicyTarget(PolicyDefinition policyDefinition, PolicyTargetType targetType, String oldTargetId, String newTargetId) { + List<String> policyTargets = getTargetsList(policyDefinition, targetType); + if (isEmpty(policyTargets)) { + return; + } + policyTargets.replaceAll(prevInstanceIdByNewInstanceId(oldTargetId, newTargetId)); + } + + private void removePolicyTarget(PolicyDefinition policy, String targetId, PolicyTargetType targetType) { + List<String> policyTargets = getTargetsList(policy, targetType); + if (isEmpty(policyTargets)) { + return; + } + policyTargets.remove(targetId); + } + + private List<String> getTargetsList(PolicyDefinition policyDefinition, PolicyTargetType targetType) { + Map<PolicyTargetType, List<String>> targets = policyDefinition.getTargets(); + if(MapUtils.isEmpty(targets) || isEmpty(targets.get(targetType))) { + return emptyList(); + } + return targets.get(targetType); + } + + private UnaryOperator<String> prevInstanceIdByNewInstanceId(String prevInstanceId, String newInstanceId) { + return instId -> instId.equals(prevInstanceId) ? newInstanceId: instId; + } + +} |