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