1bf35fbd9fb968161b89350e1cae0b8365fa8e35
[sdc.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.openecomp.sdc.be.model.jsonjanusgraph.datamodel;
22
23 import java.util.HashMap;
24 import java.util.Map;
25 import lombok.Getter;
26 import lombok.Setter;
27 import org.apache.commons.collections.MapUtils;
28 import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition;
29 import org.openecomp.sdc.be.datatypes.elements.CINodeFilterDataDefinition;
30 import org.openecomp.sdc.be.datatypes.elements.ComponentInstanceDataDefinition;
31 import org.openecomp.sdc.be.datatypes.elements.CompositionDataDefinition;
32 import org.openecomp.sdc.be.datatypes.elements.DataTypeDataDefinition;
33 import org.openecomp.sdc.be.datatypes.elements.ForwardingPathDataDefinition;
34 import org.openecomp.sdc.be.datatypes.elements.GroupDataDefinition;
35 import org.openecomp.sdc.be.datatypes.elements.InterfaceDataDefinition;
36 import org.openecomp.sdc.be.datatypes.elements.MapArtifactDataDefinition;
37 import org.openecomp.sdc.be.datatypes.elements.MapAttributesDataDefinition;
38 import org.openecomp.sdc.be.datatypes.elements.MapCapabilityProperty;
39 import org.openecomp.sdc.be.datatypes.elements.MapComponentInstanceExternalRefs;
40 import org.openecomp.sdc.be.datatypes.elements.MapGroupsDataDefinition;
41 import org.openecomp.sdc.be.datatypes.elements.MapInterfaceDataDefinition;
42 import org.openecomp.sdc.be.datatypes.elements.MapListCapabilityDataDefinition;
43 import org.openecomp.sdc.be.datatypes.elements.MapListRequirementDataDefinition;
44 import org.openecomp.sdc.be.datatypes.elements.MapPropertiesDataDefinition;
45 import org.openecomp.sdc.be.datatypes.elements.PolicyDataDefinition;
46 import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
47 import org.openecomp.sdc.be.datatypes.elements.RelationshipInstDataDefinition;
48 import org.openecomp.sdc.be.datatypes.elements.SubstitutionFilterDataDefinition;
49 import org.openecomp.sdc.be.datatypes.tosca.ToscaDataDefinition;
50 import org.openecomp.sdc.be.model.MapInterfaceInstanceDataDefinition;
51 import org.openecomp.sdc.be.model.jsonjanusgraph.enums.JsonConstantKeysEnum;
52
53 @Getter
54 @Setter
55 public class TopologyTemplate extends ToscaElement {
56
57     public TopologyTemplate() {
58         super(ToscaElementTypeEnum.TOPOLOGY_TEMPLATE);
59     }
60
61     private Map<String, PropertyDataDefinition> inputs;
62     private Map<String, MapPropertiesDataDefinition> instInputs;
63     private Map<String, ? extends ToscaDataDefinition> heatParameters;
64     private Map<String, MapAttributesDataDefinition> instAttributes;
65     private Map<String, MapPropertiesDataDefinition> instProperties;
66     private Map<String, GroupDataDefinition> groups;
67     private Map<String, PolicyDataDefinition> policies;
68     private Map<String, MapGroupsDataDefinition> instGroups;
69     private Map<String, ArtifactDataDefinition> serviceApiArtifacts;
70     private Map<String, ForwardingPathDataDefinition> forwardingPaths;
71     private Map<String, CompositionDataDefinition> compositions;
72     private Map<String, MapListCapabilityDataDefinition> calculatedCapabilities;
73     private Map<String, MapListRequirementDataDefinition> calculatedRequirements;
74     private Map<String, MapListCapabilityDataDefinition> fullfilledCapabilities;
75     private Map<String, MapListRequirementDataDefinition> fullfilledRequirements;
76     private Map<String, MapCapabilityProperty> calculatedCapabilitiesProperties;
77     private Map<String, MapArtifactDataDefinition> instDeploymentArtifacts;
78     private Map<String, MapArtifactDataDefinition> instanceArtifacts;
79     private Map<String, InterfaceDataDefinition> interfaces;
80     private Map<String, MapInterfaceInstanceDataDefinition> instInterfaces;
81     private Map<String, MapInterfaceDataDefinition> componentInstInterfaces;
82     private Map<String, CINodeFilterDataDefinition> nodeFilterComponents;
83     private Map<String, SubstitutionFilterDataDefinition> substitutionFilterDataDefinitionMap;
84
85     //Component Instances External References (instanceId -> ExternalRefsMap)
86     //-----------------------------------------------------------------------
87     private Map<String, MapComponentInstanceExternalRefs> mapComponentInstancesExternalRefs;
88     //-----------------------------------------------------------------------
89
90     public void addInstInterface(String compId, MapInterfaceInstanceDataDefinition
91         mapInterfaceInstanceDataDefinition) {
92         if (MapUtils.isEmpty(this.instInterfaces)) {
93             this.instInterfaces = new HashMap<>();
94         }
95
96         this.instInterfaces.put(compId, mapInterfaceInstanceDataDefinition);
97     }
98
99     public void addComponentInstanceInterfaceMap(String componentInstanceId, MapInterfaceDataDefinition
100         mapInterfaceDataDefinition) {
101         if (MapUtils.isEmpty(this.componentInstInterfaces)) {
102             this.componentInstInterfaces = new HashMap<>();
103         }
104
105         this.componentInstInterfaces.put(componentInstanceId, mapInterfaceDataDefinition);
106     }
107
108     /**
109      * Adds component instance to composition of topology template Note that component instance will be overrided in
110      * case if the topology template already contains a component instance with the same name
111      *
112      * @param componentInstance
113      */
114     public void addComponentInstance(ComponentInstanceDataDefinition componentInstance) {
115         if (getCompositions() == null) {
116             compositions = new HashMap<>();
117         }
118         if (MapUtils.isEmpty(getCompositions())) {
119             compositions.put(JsonConstantKeysEnum.COMPOSITION.getValue(), new CompositionDataDefinition());
120         }
121         if (MapUtils
122             .isEmpty(getCompositions().get(JsonConstantKeysEnum.COMPOSITION.getValue()).getComponentInstances())) {
123             getCompositions().get(JsonConstantKeysEnum.COMPOSITION.getValue()).setComponentInstances(new HashMap<>());
124         }
125         getCompositions().get(JsonConstantKeysEnum.COMPOSITION.getValue()).getComponentInstances()
126             .put(componentInstance.getUniqueId(), componentInstance);
127     }
128
129     /**
130      * Returns map of component instances from composition
131      *
132      * @return
133      */
134     public Map<String, ComponentInstanceDataDefinition> getComponentInstances() {
135         Map<String, ComponentInstanceDataDefinition> instances = null;
136         if (getCompositions() != null && getCompositions().get(JsonConstantKeysEnum.COMPOSITION.getValue()) != null) {
137             instances = getCompositions().get(JsonConstantKeysEnum.COMPOSITION.getValue()).getComponentInstances();
138         }
139         return instances;
140     }
141
142
143     /**
144      * Sets map of component instances to composition of topology template Note that component instances will be
145      * overrided in case if the topology template already contains a component instances
146      *
147      * @param instances
148      */
149     public void setComponentInstances(Map<String, ComponentInstanceDataDefinition> instances) {
150         if (getCompositions() == null) {
151             compositions = new HashMap<>();
152         }
153         if (MapUtils.isEmpty(getCompositions())) {
154             compositions.put(JsonConstantKeysEnum.COMPOSITION.getValue(), new CompositionDataDefinition());
155         }
156         getCompositions().get(JsonConstantKeysEnum.COMPOSITION.getValue()).setComponentInstances(instances);
157     }
158
159     public Map<String, RelationshipInstDataDefinition> getRelations() {
160         Map<String, RelationshipInstDataDefinition> relations = null;
161         if (getCompositions() != null && getCompositions().get(JsonConstantKeysEnum.COMPOSITION.getValue()) != null) {
162             relations = getCompositions().get(JsonConstantKeysEnum.COMPOSITION.getValue()).getRelations();
163         }
164         return relations;
165     }
166 }