re base code
[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 import org.openecomp.sdc.be.model.PropertyDefinition;
7
8 import java.util.*;
9
10 public class PolicyDefinitionBuilder {
11
12     private PolicyDefinition policyDefinition;
13
14     private PolicyDefinitionBuilder() {
15         this.policyDefinition = new PolicyDefinition();
16     }
17
18     public static PolicyDefinitionBuilder create() {
19         return new PolicyDefinitionBuilder();
20     }
21
22     public PolicyDefinitionBuilder setName(String name) {
23         policyDefinition.setName(name);
24         return this;
25     }
26
27     public PolicyDefinitionBuilder setUniqueId(String uid) {
28         policyDefinition.setUniqueId(uid);
29         return this;
30     }
31
32     public PolicyDefinitionBuilder setProperties(PropertyDataDefinition ... props) {
33         policyDefinition.setProperties(Arrays.asList(props));
34         return this;
35     }
36
37     public PolicyDefinitionBuilder setTargets(Map<PolicyTargetType, List<String>> targets ){
38         policyDefinition.setTargets(targets);
39         return this;
40     }
41
42     public PolicyDefinitionBuilder addComponentInstanceTarget(String instId) {
43         Map<PolicyTargetType, List<String>> targets = getTargets();
44         targets.computeIfAbsent(PolicyTargetType.COMPONENT_INSTANCES, k -> new ArrayList<>())
45                .add(instId);
46         return this;
47     }
48
49     public PolicyDefinitionBuilder addGroupTarget(String groupId) {
50         Map<PolicyTargetType, List<String>> targets = getTargets();
51         targets.computeIfAbsent(PolicyTargetType.GROUPS, k -> new ArrayList<>()).add(groupId);
52         return this;
53     }
54
55      public PolicyDefinitionBuilder addProperty(String propName) {
56         initPolicyProperties();
57         PropertyDefinition prop = new PropertyDataDefinitionBuilder()
58                 .setName(propName)
59                 .build();
60         policyDefinition.getProperties().add(prop);
61         return this;
62     }
63
64     public PolicyDefinition build() {
65         return policyDefinition;
66     }
67
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);
73         }
74         return targets;
75     }
76
77     private void initPolicyProperties() {
78         if (policyDefinition.getProperties() == null) {
79             policyDefinition.setProperties(new ArrayList<>());
80         }
81     }
82
83     public PolicyDefinitionBuilder setType(String type) {
84         policyDefinition.setPolicyTypeName(type);
85         return this;
86     }
87 }