Sync Integ to Master
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / utils / PolicyDefinitionBuilder.java
1 package org.openecomp.sdc.be.components.utils;
2
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
7 import java.util.ArrayList;
8 import java.util.Arrays;
9 import java.util.HashMap;
10 import java.util.List;
11 import java.util.Map;
12
13 public class PolicyDefinitionBuilder {
14
15     private PolicyDefinition policyDefinition;
16
17     private PolicyDefinitionBuilder() {
18         this.policyDefinition = new PolicyDefinition();
19     }
20
21     public static PolicyDefinitionBuilder create() {
22         return new PolicyDefinitionBuilder();
23     }
24
25     public PolicyDefinitionBuilder setName(String name) {
26         policyDefinition.setName(name);
27         return this;
28     }
29
30     public PolicyDefinitionBuilder setUniqueId(String uid) {
31         policyDefinition.setUniqueId(uid);
32         return this;
33     }
34
35     public PolicyDefinitionBuilder setProperties(PropertyDataDefinition ... props) {
36         policyDefinition.setProperties(Arrays.asList(props));
37         return this;
38     }
39
40     public PolicyDefinitionBuilder setTargets(Map<PolicyTargetType, List<String>> targets ){
41         policyDefinition.setTargets(targets);
42         return this;
43     }
44
45     public PolicyDefinitionBuilder addComponentInstanceTarget(String instId) {
46         Map<PolicyTargetType, List<String>> targets = getTargets();
47         targets.computeIfAbsent(PolicyTargetType.COMPONENT_INSTANCES, k -> new ArrayList<>())
48                .add(instId);
49         return this;
50     }
51
52     public PolicyDefinitionBuilder addGroupTarget(String groupId) {
53         Map<PolicyTargetType, List<String>> targets = getTargets();
54         targets.computeIfAbsent(PolicyTargetType.GROUPS, k -> new ArrayList<>()).add(groupId);
55         return this;
56     }
57
58     public PolicyDefinition build() {
59         return policyDefinition;
60     }
61
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);
67         }
68         return targets;
69     }
70 }