Sync Integ to Master
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / utils / ComponentInstanceBuilder.java
1 package org.openecomp.sdc.be.components.utils;
2
3 import org.openecomp.sdc.be.model.ArtifactDefinition;
4 import org.openecomp.sdc.be.model.CapabilityDefinition;
5 import org.openecomp.sdc.be.model.ComponentInstance;
6
7 import java.util.ArrayList;
8 import java.util.HashMap;
9 import java.util.stream.Stream;
10
11 public class ComponentInstanceBuilder {
12
13     private ComponentInstance componentInstance;
14
15     public ComponentInstanceBuilder() {
16         componentInstance = new ComponentInstance();
17         componentInstance.setCapabilities(new HashMap<>());
18         componentInstance.setDeploymentArtifacts(new HashMap<>());
19     }
20
21     public ComponentInstanceBuilder(ComponentInstance componentInstance) {
22         this.componentInstance = componentInstance;
23     }
24
25     public ComponentInstanceBuilder setName(String name) {
26         componentInstance.setName(name);
27         return this;
28     }
29
30     public ComponentInstanceBuilder setNormalizedName(String name) {
31         componentInstance.setNormalizedName(name);
32         return this;
33     }
34
35     public ComponentInstanceBuilder setUniqueId(String uniqueId) {
36         componentInstance.setUniqueId(uniqueId);
37         return this;
38     }
39
40     public ComponentInstanceBuilder setComponentUid(String componentUid) {
41         componentInstance.setComponentUid(componentUid);
42         return this;
43     }
44
45     public ComponentInstanceBuilder setId(String id) {
46         componentInstance.setUniqueId(id);
47         return this;
48     }
49
50     public ComponentInstanceBuilder setToscaName(String toscaName) {
51         componentInstance.setToscaComponentName(toscaName);
52         return this;
53     }
54
55     public ComponentInstanceBuilder addDeploymentArtifact(ArtifactDefinition artifactDefinition) {
56         componentInstance.getDeploymentArtifacts().put(artifactDefinition.getArtifactName(), artifactDefinition);
57         return this;
58     }
59
60     public ComponentInstanceBuilder addCapability(CapabilityDefinition capabilityDefinition) {
61         componentInstance.getCapabilities().computeIfAbsent(capabilityDefinition.getType(), key -> new ArrayList<>()).add(capabilityDefinition);
62         return this;
63     }
64
65     public ComponentInstanceBuilder addCapabilities(CapabilityDefinition ... capabilities) {
66         Stream.of(capabilities).forEach(this::addCapability);
67         return this;
68     }
69
70     public ComponentInstance build() {
71         return componentInstance;
72     }
73 }