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();