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=========================================================
20 package org.openecomp.sdc.be.model;
22 import java.util.HashMap;
24 import lombok.EqualsAndHashCode;
27 import lombok.ToString;
28 import org.apache.commons.collections4.CollectionUtils;
29 import org.apache.commons.lang3.StringUtils;
30 import org.openecomp.sdc.be.config.CategoryBaseTypeConfig;
31 import org.openecomp.sdc.be.config.ConfigurationManager;
32 import org.openecomp.sdc.be.datatypes.components.ComponentMetadataDataDefinition;
33 import org.openecomp.sdc.be.datatypes.components.ServiceMetadataDataDefinition;
34 import org.openecomp.sdc.be.datatypes.elements.ForwardingPathDataDefinition;
35 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
36 import org.openecomp.sdc.be.datatypes.enums.InstantiationTypes;
37 import org.openecomp.sdc.be.model.jsonjanusgraph.datamodel.ToscaElementTypeEnum;
41 @EqualsAndHashCode(callSuper = true)
43 public class Service extends Component {
45 private Map<String, ArtifactDefinition> serviceApiArtifacts;
46 private Map<String, ForwardingPathDataDefinition> forwardingPaths;
47 private String toscaServiceName;
50 super(new ServiceMetadataDefinition());
51 this.getComponentMetadataDefinition().getMetadataDataDefinition().setComponentType(ComponentTypeEnum.SERVICE);
52 this.setToscaType(ToscaElementTypeEnum.TOPOLOGY_TEMPLATE.getValue());
55 public Service(ComponentMetadataDefinition serviceMetadataDefinition) {
56 super(serviceMetadataDefinition);
57 ComponentMetadataDataDefinition metadataDataDefinition = this.getComponentMetadataDefinition().getMetadataDataDefinition();
58 if (metadataDataDefinition != null) {
59 metadataDataDefinition.setComponentType(ComponentTypeEnum.SERVICE);
61 this.setToscaType(ToscaElementTypeEnum.TOPOLOGY_TEMPLATE.getValue());
65 public String getProjectCode() {
66 return getServiceMetadataDefinition().getProjectCode();
70 public void setProjectCode(String projectName) {
71 getServiceMetadataDefinition().setProjectCode(projectName);
74 public ForwardingPathDataDefinition addForwardingPath(ForwardingPathDataDefinition forwardingPathDataDefinition) {
75 if (forwardingPaths == null) {
76 forwardingPaths = new HashMap<>();
78 return forwardingPaths.put(forwardingPathDataDefinition.getUniqueId(), forwardingPathDataDefinition);
81 public DistributionStatusEnum getDistributionStatus() {
82 String distributionStatus = getServiceMetadataDefinition().getDistributionStatus();
83 if (distributionStatus != null) {
84 return DistributionStatusEnum.valueOf(distributionStatus);
90 public void setDistributionStatus(DistributionStatusEnum distributionStatus) {
91 if (distributionStatus != null) {
92 getServiceMetadataDefinition().setDistributionStatus(distributionStatus.name());
96 public void setEcompGeneratedNaming(Boolean ecompGeneratedNaming) {
97 getServiceMetadataDefinition().setEcompGeneratedNaming(ecompGeneratedNaming);
100 public Boolean isEcompGeneratedNaming() {
101 return getServiceMetadataDefinition().isEcompGeneratedNaming();
104 public String getNamingPolicy() {
105 return getServiceMetadataDefinition().getNamingPolicy();
108 public void setNamingPolicy(String namingPolicy) {
109 getServiceMetadataDefinition().setNamingPolicy(namingPolicy);
112 public String getEnvironmentContext() {
113 return getServiceMetadataDefinition().getEnvironmentContext();
116 public void setEnvironmentContext(String environmentContext) {
117 getServiceMetadataDefinition().setEnvironmentContext(environmentContext);
120 public String getServiceType() {
121 return getServiceMetadataDefinition().getServiceType();
124 public void setServiceType(String serviceType) {
125 getServiceMetadataDefinition().setServiceType(serviceType);
128 public String getServiceRole() {
129 return getServiceMetadataDefinition().getServiceRole();
132 public void setServiceRole(String serviceRole) {
133 getServiceMetadataDefinition().setServiceRole(serviceRole);
136 public String getInstantiationType() {
137 return getServiceMetadataDefinition().getInstantiationType();
140 public void setInstantiationType(String instantiationType) {
141 getServiceMetadataDefinition().setInstantiationType(instantiationType);
144 private ServiceMetadataDataDefinition getServiceMetadataDefinition() {
145 return getMetadataDefinition();
148 public String getServiceFunction() {
149 return getServiceMetadataDefinition().getServiceFunction();
152 public void setServiceFunction(String serviceFunction) {
153 getServiceMetadataDefinition().setServiceFunction(serviceFunction);
156 public void validateAndSetInstantiationType() {
157 if (this.getInstantiationType().equals(StringUtils.EMPTY)) {
158 this.setInstantiationType(InstantiationTypes.A_LA_CARTE.getValue());
163 public String fetchGenericTypeToscaNameFromConfig() {
164 return getHeadOption(this.getCategories()).map(category -> fetchToscaNameFromConfigBasedOnService(category.getName()))
165 .orElse(super.fetchGenericTypeToscaNameFromConfig());
168 private String fetchToscaNameFromConfigBasedOnService(final String serviceCategory) {
169 final Map<String, CategoryBaseTypeConfig> serviceNodeTypesConfig =
170 ConfigurationManager.getConfigurationManager().getConfiguration().getServiceBaseNodeTypes();
171 if (serviceNodeTypesConfig == null) {
175 final CategoryBaseTypeConfig categoryBaseTypeConfig = serviceNodeTypesConfig.get(serviceCategory);
176 if (categoryBaseTypeConfig == null || CollectionUtils.isEmpty(categoryBaseTypeConfig.getBaseTypes())) {
180 return categoryBaseTypeConfig.getBaseTypes().get(0);
184 public void setSpecificComponetTypeArtifacts(Map<String, ArtifactDefinition> specificComponentTypeArtifacts) {
185 setServiceApiArtifacts(specificComponentTypeArtifacts);
188 public void setServiceVendorModelNumber(String serviceVendorModelNumber) {
189 getServiceMetadataDefinition().setServiceVendorModelNumber(serviceVendorModelNumber);
192 public void setAbstract(Boolean isAbstract) {
193 getMetadataDefinition().setIsAbstract(isAbstract);
196 public void setVendorName(String vendorName) {
197 getMetadataDefinition().setVendorName(vendorName);
200 public void setTenant(String tenant) {
201 getMetadataDefinition().setTenant(tenant);
204 public void setVendorRelease(String vendorRelease) {
205 getMetadataDefinition().setVendorRelease(vendorRelease);
208 public boolean isSubstituteCandidate() {
209 return getDerivedFromGenericType() != null;
212 private ServiceMetadataDataDefinition getMetadataDefinition() {
213 return (ServiceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition();