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 java.util.Optional;
25 import lombok.EqualsAndHashCode;
28 import lombok.ToString;
29 import org.apache.commons.lang3.StringUtils;
30 import org.openecomp.sdc.be.config.ConfigurationManager;
31 import org.openecomp.sdc.be.datatypes.components.ComponentMetadataDataDefinition;
32 import org.openecomp.sdc.be.datatypes.components.ServiceMetadataDataDefinition;
33 import org.openecomp.sdc.be.datatypes.elements.ForwardingPathDataDefinition;
34 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
35 import org.openecomp.sdc.be.datatypes.enums.InstantiationTypes;
36 import org.openecomp.sdc.be.model.jsonjanusgraph.datamodel.ToscaElementTypeEnum;
40 @EqualsAndHashCode(callSuper = true)
42 public class Service extends Component {
44 private Map<String, ArtifactDefinition> serviceApiArtifacts;
45 private Map<String, ForwardingPathDataDefinition> forwardingPaths;
46 private String toscaServiceName;
49 super(new ServiceMetadataDefinition());
50 this.getComponentMetadataDefinition().getMetadataDataDefinition().setComponentType(ComponentTypeEnum.SERVICE);
51 this.setToscaType(ToscaElementTypeEnum.TOPOLOGY_TEMPLATE.getValue());
54 public Service(ComponentMetadataDefinition serviceMetadataDefinition) {
55 super(serviceMetadataDefinition);
56 ComponentMetadataDataDefinition metadataDataDefinition = this.getComponentMetadataDefinition().getMetadataDataDefinition();
57 if (metadataDataDefinition != null) {
58 metadataDataDefinition.setComponentType(ComponentTypeEnum.SERVICE);
60 this.setToscaType(ToscaElementTypeEnum.TOPOLOGY_TEMPLATE.getValue());
64 public String getProjectCode() {
65 return getServiceMetadataDefinition().getProjectCode();
69 public void setProjectCode(String projectName) {
70 getServiceMetadataDefinition().setProjectCode(projectName);
73 public ForwardingPathDataDefinition addForwardingPath(ForwardingPathDataDefinition forwardingPathDataDefinition) {
74 if (forwardingPaths == null) {
75 forwardingPaths = new HashMap<>();
77 return forwardingPaths.put(forwardingPathDataDefinition.getUniqueId(), forwardingPathDataDefinition);
80 public DistributionStatusEnum getDistributionStatus() {
81 String distributionStatus = getServiceMetadataDefinition().getDistributionStatus();
82 if (distributionStatus != null) {
83 return DistributionStatusEnum.valueOf(distributionStatus);
89 public void setDistributionStatus(DistributionStatusEnum distributionStatus) {
90 if (distributionStatus != null) {
91 getServiceMetadataDefinition().setDistributionStatus(distributionStatus.name());
95 public void setEcompGeneratedNaming(Boolean ecompGeneratedNaming) {
96 getServiceMetadataDefinition().setEcompGeneratedNaming(ecompGeneratedNaming);
99 public Boolean isEcompGeneratedNaming() {
100 return getServiceMetadataDefinition().isEcompGeneratedNaming();
103 public String getNamingPolicy() {
104 return getServiceMetadataDefinition().getNamingPolicy();
107 public void setNamingPolicy(String namingPolicy) {
108 getServiceMetadataDefinition().setNamingPolicy(namingPolicy);
111 public String getEnvironmentContext() {
112 return getServiceMetadataDefinition().getEnvironmentContext();
115 public void setEnvironmentContext(String environmentContext) {
116 getServiceMetadataDefinition().setEnvironmentContext(environmentContext);
119 public String getServiceType() {
120 return getServiceMetadataDefinition().getServiceType();
123 public void setServiceType(String serviceType) {
124 getServiceMetadataDefinition().setServiceType(serviceType);
127 public String getServiceRole() {
128 return getServiceMetadataDefinition().getServiceRole();
131 public void setServiceRole(String serviceRole) {
132 getServiceMetadataDefinition().setServiceRole(serviceRole);
135 public String getInstantiationType() {
136 return getServiceMetadataDefinition().getInstantiationType();
139 public void setInstantiationType(String instantiationType) {
140 getServiceMetadataDefinition().setInstantiationType(instantiationType);
143 private ServiceMetadataDataDefinition getServiceMetadataDefinition() {
144 return (ServiceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition();
147 public String getServiceFunction() {
148 return getServiceMetadataDefinition().getServiceFunction();
151 public void setServiceFunction(String serviceFunction) {
152 getServiceMetadataDefinition().setServiceFunction(serviceFunction);
155 public void validateAndSetInstantiationType() {
156 if (this.getInstantiationType().equals(StringUtils.EMPTY)) {
157 this.setInstantiationType(InstantiationTypes.A_LA_CARTE.getValue());
162 public String fetchGenericTypeToscaNameFromConfig() {
163 return getHeadOption(this.getCategories()).map(category -> fetchToscaNameFromConfigBasedOnService(category.getName()))
164 .orElse(super.fetchGenericTypeToscaNameFromConfig());
167 private String fetchToscaNameFromConfigBasedOnService(final String serviceCategory) {
168 return Optional.ofNullable(ConfigurationManager.getConfigurationManager().getConfiguration().getServiceNodeTypes())
169 .map(serviceNames -> serviceNames.get(serviceCategory)).orElse(null);
173 public void setSpecificComponetTypeArtifacts(Map<String, ArtifactDefinition> specificComponentTypeArtifacts) {
174 setServiceApiArtifacts(specificComponentTypeArtifacts);
177 public void setServiceVendorModelNumber(String serviceVendorModelNumber) {
178 getServiceMetadataDefinition().setServiceVendorModelNumber(serviceVendorModelNumber);
181 public void setAbstract(Boolean isAbstract) {
182 ((ServiceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition()).setIsAbstract(isAbstract);
185 public void setVendorName(String vendorName) {
186 ((ServiceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition()).setVendorName(vendorName);
189 public void setVendorRelease(String vendorRelease) {
190 ((ServiceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition()).setVendorRelease(vendorRelease);