Release version 1.13.7
[sdc.git] / catalog-model / src / main / java / org / openecomp / sdc / be / model / Service.java
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 package org.openecomp.sdc.be.model;
21
22 import java.util.HashMap;
23 import java.util.Map;
24 import lombok.EqualsAndHashCode;
25 import lombok.Getter;
26 import lombok.Setter;
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;
38
39 @Getter
40 @Setter
41 @EqualsAndHashCode(callSuper = true)
42 @ToString
43 public class Service extends Component {
44
45     private Map<String, ArtifactDefinition> serviceApiArtifacts;
46     private Map<String, ForwardingPathDataDefinition> forwardingPaths;
47     private String toscaServiceName;
48
49     public Service() {
50         super(new ServiceMetadataDefinition());
51         this.getComponentMetadataDefinition().getMetadataDataDefinition().setComponentType(ComponentTypeEnum.SERVICE);
52         this.setToscaType(ToscaElementTypeEnum.TOPOLOGY_TEMPLATE.getValue());
53     }
54
55     public Service(ComponentMetadataDefinition serviceMetadataDefinition) {
56         super(serviceMetadataDefinition);
57         ComponentMetadataDataDefinition metadataDataDefinition = this.getComponentMetadataDefinition().getMetadataDataDefinition();
58         if (metadataDataDefinition != null) {
59             metadataDataDefinition.setComponentType(ComponentTypeEnum.SERVICE);
60         }
61         this.setToscaType(ToscaElementTypeEnum.TOPOLOGY_TEMPLATE.getValue());
62     }
63
64     @Override
65     public String getProjectCode() {
66         return getServiceMetadataDefinition().getProjectCode();
67     }
68
69     @Override
70     public void setProjectCode(String projectName) {
71         getServiceMetadataDefinition().setProjectCode(projectName);
72     }
73
74     public ForwardingPathDataDefinition addForwardingPath(ForwardingPathDataDefinition forwardingPathDataDefinition) {
75         if (forwardingPaths == null) {
76             forwardingPaths = new HashMap<>();
77         }
78         return forwardingPaths.put(forwardingPathDataDefinition.getUniqueId(), forwardingPathDataDefinition);
79     }
80
81     public DistributionStatusEnum getDistributionStatus() {
82         String distributionStatus = getServiceMetadataDefinition().getDistributionStatus();
83         if (distributionStatus != null) {
84             return DistributionStatusEnum.valueOf(distributionStatus);
85         } else {
86             return null;
87         }
88     }
89
90     public void setDistributionStatus(DistributionStatusEnum distributionStatus) {
91         if (distributionStatus != null) {
92             getServiceMetadataDefinition().setDistributionStatus(distributionStatus.name());
93         }
94     }
95
96     public void setEcompGeneratedNaming(Boolean ecompGeneratedNaming) {
97         getServiceMetadataDefinition().setEcompGeneratedNaming(ecompGeneratedNaming);
98     }
99
100     public Boolean isEcompGeneratedNaming() {
101         return getServiceMetadataDefinition().isEcompGeneratedNaming();
102     }
103
104     public String getNamingPolicy() {
105         return getServiceMetadataDefinition().getNamingPolicy();
106     }
107
108     public void setNamingPolicy(String namingPolicy) {
109         getServiceMetadataDefinition().setNamingPolicy(namingPolicy);
110     }
111
112     public String getEnvironmentContext() {
113         return getServiceMetadataDefinition().getEnvironmentContext();
114     }
115
116     public void setEnvironmentContext(String environmentContext) {
117         getServiceMetadataDefinition().setEnvironmentContext(environmentContext);
118     }
119
120     public String getServiceType() {
121         return getServiceMetadataDefinition().getServiceType();
122     }
123
124     public void setServiceType(String serviceType) {
125         getServiceMetadataDefinition().setServiceType(serviceType);
126     }
127
128     public String getServiceRole() {
129         return getServiceMetadataDefinition().getServiceRole();
130     }
131
132     public void setServiceRole(String serviceRole) {
133         getServiceMetadataDefinition().setServiceRole(serviceRole);
134     }
135
136     public String getInstantiationType() {
137         return getServiceMetadataDefinition().getInstantiationType();
138     }
139
140     public void setInstantiationType(String instantiationType) {
141         getServiceMetadataDefinition().setInstantiationType(instantiationType);
142     }
143
144     private ServiceMetadataDataDefinition getServiceMetadataDefinition() {
145         return getMetadataDefinition();
146     }
147
148     public String getServiceFunction() {
149         return getServiceMetadataDefinition().getServiceFunction();
150     }
151
152     public void setServiceFunction(String serviceFunction) {
153         getServiceMetadataDefinition().setServiceFunction(serviceFunction);
154     }
155
156     public void validateAndSetInstantiationType() {
157         if (this.getInstantiationType().equals(StringUtils.EMPTY)) {
158             this.setInstantiationType(InstantiationTypes.A_LA_CARTE.getValue());
159         }
160     }
161
162     @Override
163     public String fetchGenericTypeToscaNameFromConfig() {
164         return getHeadOption(this.getCategories()).map(category -> fetchToscaNameFromConfigBasedOnService(category.getName()))
165             .orElse(super.fetchGenericTypeToscaNameFromConfig());
166     }
167
168     private String fetchToscaNameFromConfigBasedOnService(final String serviceCategory) {
169         final Map<String, CategoryBaseTypeConfig> serviceNodeTypesConfig =
170             ConfigurationManager.getConfigurationManager().getConfiguration().getServiceBaseNodeTypes();
171         if (serviceNodeTypesConfig == null) {
172             return null;
173         }
174
175         final CategoryBaseTypeConfig categoryBaseTypeConfig = serviceNodeTypesConfig.get(serviceCategory);
176         if (categoryBaseTypeConfig == null || CollectionUtils.isEmpty(categoryBaseTypeConfig.getBaseTypes())) {
177             return null;
178         }
179
180         return categoryBaseTypeConfig.getBaseTypes().get(0);
181     }
182
183     @Override
184     public void setSpecificComponetTypeArtifacts(Map<String, ArtifactDefinition> specificComponentTypeArtifacts) {
185         setServiceApiArtifacts(specificComponentTypeArtifacts);
186     }
187
188     public void setServiceVendorModelNumber(String serviceVendorModelNumber) {
189         getServiceMetadataDefinition().setServiceVendorModelNumber(serviceVendorModelNumber);
190     }
191
192     public void setAbstract(Boolean isAbstract) {
193         getMetadataDefinition().setIsAbstract(isAbstract);
194     }
195
196     public void setVendorName(String vendorName) {
197         getMetadataDefinition().setVendorName(vendorName);
198     }
199
200     public void setTenant(String tenant) {
201         getMetadataDefinition().setTenant(tenant);
202     }
203
204     public void setVendorRelease(String vendorRelease) {
205         getMetadataDefinition().setVendorRelease(vendorRelease);
206     }
207
208     public boolean isSubstituteCandidate() {
209         return getDerivedFromGenericType() != null;
210     }
211
212     private ServiceMetadataDataDefinition getMetadataDefinition() {
213         return (ServiceMetadataDataDefinition) getComponentMetadataDefinition().getMetadataDataDefinition();
214     }
215 }