1 package org.openecomp.sdcrests.vsp.rest.services;
3 import org.apache.commons.collections4.CollectionUtils;
4 import org.openecomp.sdc.logging.context.MdcUtil;
5 import org.openecomp.sdc.logging.types.LoggerServiceName;
6 import org.openecomp.sdc.vendorsoftwareproduct.DeploymentFlavorManager;
7 import org.openecomp.sdc.vendorsoftwareproduct.DeploymentFlavorManagerFactory;
8 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.DeploymentFlavorEntity;
9 import org.openecomp.sdc.vendorsoftwareproduct.types.CompositionEntityResponse;
10 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityValidationData;
11 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.DeploymentFlavor;
12 import org.openecomp.sdc.versioning.dao.types.Version;
13 import org.openecomp.sdcrests.vendorsoftwareproducts.types.CompositionEntityResponseDto;
14 import org.openecomp.sdcrests.vendorsoftwareproducts.types.CompositionEntityValidationDataDto;
15 import org.openecomp.sdcrests.vendorsoftwareproducts.types.DeploymentFlavorCreationDto;
16 import org.openecomp.sdcrests.vendorsoftwareproducts.types.DeploymentFlavorDto;
17 import org.openecomp.sdcrests.vendorsoftwareproducts.types.DeploymentFlavorListResponseDto;
18 import org.openecomp.sdcrests.vendorsoftwareproducts.types.DeploymentFlavorRequestDto;
19 import org.openecomp.sdcrests.vsp.rest.DeploymentFlavors;
20 import org.openecomp.sdcrests.vsp.rest.mapping.MapCompositionEntityResponseToDto;
21 import org.openecomp.sdcrests.vsp.rest.mapping.MapCompositionEntityValidationDataToDto;
22 import org.openecomp.sdcrests.vsp.rest.mapping.MapDeploymentFlavorEntityDeploymentFlavorToListResponse;
23 import org.openecomp.sdcrests.vsp.rest.mapping.MapDeploymentFlavorEntityToDeploymentFlavorCreationDto;
24 import org.openecomp.sdcrests.vsp.rest.mapping.MapDeploymentFlavorRequestDtoToDeploymentFlavorEntity;
25 import org.openecomp.sdcrests.vsp.rest.mapping.MapDeploymentFlavorToDeploymentDto;
26 import org.openecomp.sdcrests.wrappers.GenericCollectionWrapper;
27 import org.springframework.context.annotation.Scope;
28 import org.springframework.stereotype.Service;
30 import javax.inject.Named;
31 import javax.ws.rs.core.Response;
32 import java.util.Collection;
35 @Service("deploymentFlavors")
36 @Scope(value = "prototype")
37 public class DeploymentFlavorsImpl implements DeploymentFlavors {
38 private DeploymentFlavorManager deploymentFlavorManager =
39 DeploymentFlavorManagerFactory.getInstance().createInterface();
42 public Response create(DeploymentFlavorRequestDto request, String vspId, String versionId,
44 MdcUtil.initMdc(LoggerServiceName.Create_Deployment_Flavor.toString());
45 DeploymentFlavorEntity deploymentFlavorEntity =
46 new MapDeploymentFlavorRequestDtoToDeploymentFlavorEntity()
47 .applyMapping(request, DeploymentFlavorEntity.class);
48 deploymentFlavorEntity.setVspId(vspId);
49 deploymentFlavorEntity.setVersion(new Version(versionId));
50 DeploymentFlavorEntity createdDeploymentFlavor =
51 deploymentFlavorManager.createDeploymentFlavor(deploymentFlavorEntity);
52 MapDeploymentFlavorEntityToDeploymentFlavorCreationDto mapping =
53 new MapDeploymentFlavorEntityToDeploymentFlavorCreationDto();
54 DeploymentFlavorCreationDto deploymentFlavorCreatedDto = mapping.applyMapping
55 (createdDeploymentFlavor, DeploymentFlavorCreationDto.class);
57 .ok(createdDeploymentFlavor != null ? deploymentFlavorCreatedDto : null)
62 public Response list(String vspId, String versionId, String user) {
63 MdcUtil.initMdc(LoggerServiceName.Get_List_Deployment_flavor.toString());
64 Collection<DeploymentFlavorEntity> deploymentFlavors =
65 deploymentFlavorManager.listDeploymentFlavors(vspId, new Version(versionId));
67 MapDeploymentFlavorEntityDeploymentFlavorToListResponse mapper = new
68 MapDeploymentFlavorEntityDeploymentFlavorToListResponse();
69 GenericCollectionWrapper<DeploymentFlavorListResponseDto> results =
70 new GenericCollectionWrapper<>();
71 for (DeploymentFlavorEntity deploymentFlavor : deploymentFlavors) {
72 results.add(mapper.applyMapping(deploymentFlavor, DeploymentFlavorListResponseDto.class));
74 return Response.ok(results).build();
78 public Response get(String vspId, String versionId, String deploymentFlavorId, String user) {
79 MdcUtil.initMdc(LoggerServiceName.Get_Deployment_flavor.toString());
80 CompositionEntityResponse<DeploymentFlavor> response = deploymentFlavorManager
81 .getDeploymentFlavor(vspId, new Version(versionId), deploymentFlavorId);
83 CompositionEntityResponseDto<DeploymentFlavorDto> responseDto = new
84 CompositionEntityResponseDto<>();
85 new MapCompositionEntityResponseToDto<>(new MapDeploymentFlavorToDeploymentDto(),
86 DeploymentFlavorDto.class)
87 .doMapping(response, responseDto);
88 return Response.ok(responseDto).build();
92 public Response getSchema(String vspId, String versionId, String user) {
93 MdcUtil.initMdc(LoggerServiceName.Get_Deployment_flavor.toString());
94 CompositionEntityResponse<DeploymentFlavor> response = deploymentFlavorManager
95 .getDeploymentFlavorSchema(vspId, new Version(versionId));
96 return Response.ok(response).build();
100 public Response delete(String vspId, String versionId, String deploymentFlavorId, String user) {
101 MdcUtil.initMdc(LoggerServiceName.Delete_Deployment_flavor.toString());
102 Version version = new Version(versionId);
103 deploymentFlavorManager.deleteDeploymentFlavor(vspId, version, deploymentFlavorId);
104 return Response.ok().build();
108 public Response update(DeploymentFlavorRequestDto request, String vspId, String versionId,
109 String deploymentFlavorId, String user) {
110 MdcUtil.initMdc(LoggerServiceName.Update_Deployment_flavor.toString());
111 DeploymentFlavorEntity deploymentFlavorEntity =
112 new MapDeploymentFlavorRequestDtoToDeploymentFlavorEntity().applyMapping(request,
113 DeploymentFlavorEntity.class);
114 deploymentFlavorEntity.setVspId(vspId);
115 deploymentFlavorEntity.setVersion(new Version(versionId));
116 deploymentFlavorEntity.setId(deploymentFlavorId);
118 CompositionEntityValidationData validationData =
119 deploymentFlavorManager.updateDeploymentFlavor(deploymentFlavorEntity);
120 return validationData != null && CollectionUtils.isNotEmpty(validationData.getErrors())
121 ? Response.status(Response.Status.EXPECTATION_FAILED).entity(
122 new MapCompositionEntityValidationDataToDto().applyMapping(validationData,
123 CompositionEntityValidationDataDto.class)).build() : Response.ok().build();