2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.openecomp.sdc.be.model.jsonjanusgraph.datamodel;
23 import java.util.HashMap;
27 import org.apache.commons.collections.MapUtils;
28 import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition;
29 import org.openecomp.sdc.be.datatypes.elements.AttributeDataDefinition;
30 import org.openecomp.sdc.be.datatypes.elements.CINodeFilterDataDefinition;
31 import org.openecomp.sdc.be.datatypes.elements.ComponentInstanceDataDefinition;
32 import org.openecomp.sdc.be.datatypes.elements.CompositionDataDefinition;
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;
55 public class TopologyTemplate extends ToscaElement {
57 public TopologyTemplate() {
58 super(ToscaElementTypeEnum.TOPOLOGY_TEMPLATE);
61 private Map<String, PropertyDataDefinition> inputs;
62 private Map<String, AttributeDataDefinition> outputs;
63 private Map<String, MapPropertiesDataDefinition> instInputs;
64 private Map<String, MapAttributesDataDefinition> instOutputs;
65 private Map<String, ? extends ToscaDataDefinition> heatParameters;
66 private Map<String, MapAttributesDataDefinition> instAttributes;
67 private Map<String, MapPropertiesDataDefinition> instProperties;
68 private Map<String, GroupDataDefinition> groups;
69 private Map<String, PolicyDataDefinition> policies;
70 private Map<String, MapGroupsDataDefinition> instGroups;
71 private Map<String, ArtifactDataDefinition> serviceApiArtifacts;
72 private Map<String, ForwardingPathDataDefinition> forwardingPaths;
73 private Map<String, CompositionDataDefinition> compositions;
74 private Map<String, MapListCapabilityDataDefinition> calculatedCapabilities;
75 private Map<String, MapListRequirementDataDefinition> calculatedRequirements;
76 private Map<String, MapListCapabilityDataDefinition> fullfilledCapabilities;
77 private Map<String, MapListRequirementDataDefinition> fullfilledRequirements;
78 private Map<String, MapCapabilityProperty> calculatedCapabilitiesProperties;
79 private Map<String, MapArtifactDataDefinition> instDeploymentArtifacts;
80 private Map<String, MapArtifactDataDefinition> instanceArtifacts;
81 private Map<String, InterfaceDataDefinition> interfaces;
82 private Map<String, MapInterfaceInstanceDataDefinition> instInterfaces;
83 private Map<String, MapInterfaceDataDefinition> componentInstInterfaces;
84 private Map<String, CINodeFilterDataDefinition> nodeFilterComponents;
85 private Map<String, SubstitutionFilterDataDefinition> substitutionFilterDataDefinitionMap;
87 //Component Instances External References (instanceId -> ExternalRefsMap)
88 //-----------------------------------------------------------------------
89 private Map<String, MapComponentInstanceExternalRefs> mapComponentInstancesExternalRefs;
90 //-----------------------------------------------------------------------
92 public void addInstInterface(String compId, MapInterfaceInstanceDataDefinition
93 mapInterfaceInstanceDataDefinition) {
94 if (MapUtils.isEmpty(this.instInterfaces)) {
95 this.instInterfaces = new HashMap<>();
98 this.instInterfaces.put(compId, mapInterfaceInstanceDataDefinition);
101 public void addComponentInstanceInterfaceMap(String componentInstanceId, MapInterfaceDataDefinition
102 mapInterfaceDataDefinition) {
103 if (MapUtils.isEmpty(this.componentInstInterfaces)) {
104 this.componentInstInterfaces = new HashMap<>();
107 this.componentInstInterfaces.put(componentInstanceId, mapInterfaceDataDefinition);
111 * Adds component instance to composition of topology template Note that component instance will be overrided in
112 * case if the topology template already contains a component instance with the same name
114 * @param componentInstance
116 public void addComponentInstance(ComponentInstanceDataDefinition componentInstance) {
117 if (getCompositions() == null) {
118 compositions = new HashMap<>();
120 if (MapUtils.isEmpty(getCompositions())) {
121 compositions.put(JsonConstantKeysEnum.COMPOSITION.getValue(), new CompositionDataDefinition());
124 .isEmpty(getCompositions().get(JsonConstantKeysEnum.COMPOSITION.getValue()).getComponentInstances())) {
125 getCompositions().get(JsonConstantKeysEnum.COMPOSITION.getValue()).setComponentInstances(new HashMap<>());
127 getCompositions().get(JsonConstantKeysEnum.COMPOSITION.getValue()).getComponentInstances()
128 .put(componentInstance.getUniqueId(), componentInstance);
132 * Returns map of component instances from composition
136 public Map<String, ComponentInstanceDataDefinition> getComponentInstances() {
137 Map<String, ComponentInstanceDataDefinition> instances = null;
138 if (getCompositions() != null && getCompositions().get(JsonConstantKeysEnum.COMPOSITION.getValue()) != null) {
139 instances = getCompositions().get(JsonConstantKeysEnum.COMPOSITION.getValue()).getComponentInstances();
146 * Sets map of component instances to composition of topology template Note that component instances will be
147 * overrided in case if the topology template already contains a component instances
151 public void setComponentInstances(Map<String, ComponentInstanceDataDefinition> instances) {
152 if (getCompositions() == null) {
153 compositions = new HashMap<>();
155 if (MapUtils.isEmpty(getCompositions())) {
156 compositions.put(JsonConstantKeysEnum.COMPOSITION.getValue(), new CompositionDataDefinition());
158 getCompositions().get(JsonConstantKeysEnum.COMPOSITION.getValue()).setComponentInstances(instances);
161 public Map<String, RelationshipInstDataDefinition> getRelations() {
162 Map<String, RelationshipInstDataDefinition> relations = null;
163 if (getCompositions() != null && getCompositions().get(JsonConstantKeysEnum.COMPOSITION.getValue()) != null) {
164 relations = getCompositions().get(JsonConstantKeysEnum.COMPOSITION.getValue()).getRelations();