2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019 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.sdcrests.vsp.rest.services;
23 import org.apache.commons.collections4.CollectionUtils;
24 import org.openecomp.sdc.vendorsoftwareproduct.DeploymentFlavorManager;
25 import org.openecomp.sdc.vendorsoftwareproduct.DeploymentFlavorManagerFactory;
26 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.DeploymentFlavorEntity;
27 import org.openecomp.sdc.vendorsoftwareproduct.types.CompositionEntityResponse;
28 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityValidationData;
29 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.DeploymentFlavor;
30 import org.openecomp.sdc.versioning.dao.types.Version;
31 import org.openecomp.sdcrests.vendorsoftwareproducts.types.*;
32 import org.openecomp.sdcrests.vsp.rest.DeploymentFlavors;
33 import org.openecomp.sdcrests.vsp.rest.mapping.*;
34 import org.openecomp.sdcrests.wrappers.GenericCollectionWrapper;
35 import org.springframework.context.annotation.Scope;
36 import org.springframework.stereotype.Service;
38 import javax.inject.Named;
39 import javax.ws.rs.core.Response;
40 import java.util.Collection;
43 @Service("deploymentFlavors")
44 @Scope(value = "prototype")
45 public class DeploymentFlavorsImpl implements DeploymentFlavors {
46 private final DeploymentFlavorManager deploymentFlavorManager;
48 public DeploymentFlavorsImpl() {
49 this.deploymentFlavorManager =
50 DeploymentFlavorManagerFactory.getInstance().createInterface();
53 public DeploymentFlavorsImpl(DeploymentFlavorManager deploymentFlavorManager) {
54 this.deploymentFlavorManager = deploymentFlavorManager;
58 public Response create(DeploymentFlavorRequestDto request, String vspId, String versionId,
60 DeploymentFlavorEntity deploymentFlavorEntity =
61 new MapDeploymentFlavorRequestDtoToDeploymentFlavorEntity()
62 .applyMapping(request, DeploymentFlavorEntity.class);
63 deploymentFlavorEntity.setVspId(vspId);
64 deploymentFlavorEntity.setVersion(new Version(versionId));
65 DeploymentFlavorEntity createdDeploymentFlavor =
66 deploymentFlavorManager.createDeploymentFlavor(deploymentFlavorEntity);
67 MapDeploymentFlavorEntityToDeploymentFlavorCreationDto mapping =
68 new MapDeploymentFlavorEntityToDeploymentFlavorCreationDto();
69 DeploymentFlavorCreationDto deploymentFlavorCreatedDto = mapping.applyMapping
70 (createdDeploymentFlavor, DeploymentFlavorCreationDto.class);
72 .ok(createdDeploymentFlavor != null ? deploymentFlavorCreatedDto : null)
77 public Response list(String vspId, String versionId, String user) {
78 Collection<DeploymentFlavorEntity> deploymentFlavors =
79 deploymentFlavorManager.listDeploymentFlavors(vspId, new Version(versionId));
81 MapDeploymentFlavorEntityDeploymentFlavorToListResponse mapper = new
82 MapDeploymentFlavorEntityDeploymentFlavorToListResponse();
83 GenericCollectionWrapper<DeploymentFlavorListResponseDto> results =
84 new GenericCollectionWrapper<>();
85 for (DeploymentFlavorEntity deploymentFlavor : deploymentFlavors) {
86 results.add(mapper.applyMapping(deploymentFlavor, DeploymentFlavorListResponseDto.class));
88 return Response.ok(results).build();
92 public Response get(String vspId, String versionId, String deploymentFlavorId, String user) {
93 CompositionEntityResponse<DeploymentFlavor> response = deploymentFlavorManager
94 .getDeploymentFlavor(vspId, new Version(versionId), deploymentFlavorId);
96 CompositionEntityResponseDto<DeploymentFlavorDto> responseDto = new
97 CompositionEntityResponseDto<>();
98 new MapCompositionEntityResponseToDto<>(new MapDeploymentFlavorToDeploymentDto(),
99 DeploymentFlavorDto.class)
100 .doMapping(response, responseDto);
101 return Response.ok(responseDto).build();
105 public Response getSchema(String vspId, String versionId, String user) {
106 CompositionEntityResponse<DeploymentFlavor> response = deploymentFlavorManager
107 .getDeploymentFlavorSchema(vspId, new Version(versionId));
108 return Response.ok(response).build();
112 public Response delete(String vspId, String versionId, String deploymentFlavorId, String user) {
113 Version version = new Version(versionId);
114 deploymentFlavorManager.deleteDeploymentFlavor(vspId, version, deploymentFlavorId);
115 return Response.ok().build();
119 public Response update(DeploymentFlavorRequestDto request, String vspId, String versionId,
120 String deploymentFlavorId, String user) {
121 DeploymentFlavorEntity deploymentFlavorEntity =
122 new MapDeploymentFlavorRequestDtoToDeploymentFlavorEntity().applyMapping(request,
123 DeploymentFlavorEntity.class);
124 deploymentFlavorEntity.setVspId(vspId);
125 deploymentFlavorEntity.setVersion(new Version(versionId));
126 deploymentFlavorEntity.setId(deploymentFlavorId);
128 CompositionEntityValidationData validationData =
129 deploymentFlavorManager.updateDeploymentFlavor(deploymentFlavorEntity);
130 return validationData != null && CollectionUtils.isNotEmpty(validationData.getErrors())
131 ? Response.status(Response.Status.EXPECTATION_FAILED).entity(
132 new MapCompositionEntityValidationDataToDto().applyMapping(validationData,
133 CompositionEntityValidationDataDto.class)).build() : Response.ok().build();