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;
6 import org.openecomp.sdc.be.model.PropertyDefinition;
10 public class PolicyDefinitionBuilder {
12 private PolicyDefinition policyDefinition;
14 private PolicyDefinitionBuilder() {
15 this.policyDefinition = new PolicyDefinition();
18 public static PolicyDefinitionBuilder create() {
19 return new PolicyDefinitionBuilder();
22 public PolicyDefinitionBuilder setName(String name) {
23 policyDefinition.setName(name);
27 public PolicyDefinitionBuilder setUniqueId(String uid) {
28 policyDefinition.setUniqueId(uid);
32 public PolicyDefinitionBuilder setProperties(PropertyDataDefinition ... props) {
33 policyDefinition.setProperties(Arrays.asList(props));
37 public PolicyDefinitionBuilder setTargets(Map<PolicyTargetType, List<String>> targets ){
38 policyDefinition.setTargets(targets);
42 public PolicyDefinitionBuilder addComponentInstanceTarget(String instId) {
43 Map<PolicyTargetType, List<String>> targets = getTargets();
44 targets.computeIfAbsent(PolicyTargetType.COMPONENT_INSTANCES, k -> new ArrayList<>())
49 public PolicyDefinitionBuilder addGroupTarget(String groupId) {
50 Map<PolicyTargetType, List<String>> targets = getTargets();
51 targets.computeIfAbsent(PolicyTargetType.GROUPS, k -> new ArrayList<>()).add(groupId);
55 public PolicyDefinitionBuilder addProperty(String propName) {
56 initPolicyProperties();
57 PropertyDefinition prop = new PropertyDataDefinitionBuilder()
60 policyDefinition.getProperties().add(prop);
64 public PolicyDefinition build() {
65 return policyDefinition;
68 private Map<PolicyTargetType, List<String>> getTargets() {
69 Map<PolicyTargetType, List<String>> targets = policyDefinition.getTargets();
70 if (targets == null) {
71 targets = new HashMap<>();
72 policyDefinition.setTargets(targets);
77 private void initPolicyProperties() {
78 if (policyDefinition.getProperties() == null) {
79 policyDefinition.setProperties(new ArrayList<>());
83 public PolicyDefinitionBuilder setType(String type) {
84 policyDefinition.setPolicyTypeName(type);