1 package org.openecomp.sdc.be.components.utils;
3 import org.openecomp.sdc.be.datatypes.elements.PolicyTargetType;
4 import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
5 import org.openecomp.sdc.be.model.PolicyDefinition;
7 import java.util.ArrayList;
8 import java.util.Arrays;
9 import java.util.HashMap;
10 import java.util.List;
13 public class PolicyDefinitionBuilder {
15 private PolicyDefinition policyDefinition;
17 private PolicyDefinitionBuilder() {
18 this.policyDefinition = new PolicyDefinition();
21 public static PolicyDefinitionBuilder create() {
22 return new PolicyDefinitionBuilder();
25 public PolicyDefinitionBuilder setName(String name) {
26 policyDefinition.setName(name);
30 public PolicyDefinitionBuilder setUniqueId(String uid) {
31 policyDefinition.setUniqueId(uid);
35 public PolicyDefinitionBuilder setProperties(PropertyDataDefinition ... props) {
36 policyDefinition.setProperties(Arrays.asList(props));
40 public PolicyDefinitionBuilder setTargets(Map<PolicyTargetType, List<String>> targets ){
41 policyDefinition.setTargets(targets);
45 public PolicyDefinitionBuilder addComponentInstanceTarget(String instId) {
46 Map<PolicyTargetType, List<String>> targets = getTargets();
47 targets.computeIfAbsent(PolicyTargetType.COMPONENT_INSTANCES, k -> new ArrayList<>())
52 public PolicyDefinitionBuilder addGroupTarget(String groupId) {
53 Map<PolicyTargetType, List<String>> targets = getTargets();
54 targets.computeIfAbsent(PolicyTargetType.GROUPS, k -> new ArrayList<>()).add(groupId);
58 public PolicyDefinition build() {
59 return policyDefinition;
62 private Map<PolicyTargetType, List<String>> getTargets() {
63 Map<PolicyTargetType, List<String>> targets = policyDefinition.getTargets();
64 if (targets == null) {
65 targets = new HashMap<>();
66 policyDefinition.setTargets(targets);