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.sdc.versioning.types.VersionableEntityAction;
14 import org.openecomp.sdcrests.vendorsoftwareproducts.types.CompositionEntityResponseDto;
15 import org.openecomp.sdcrests.vendorsoftwareproducts.types.CompositionEntityValidationDataDto;
16 import org.openecomp.sdcrests.vendorsoftwareproducts.types.DeploymentFlavorCreationDto;
17 import org.openecomp.sdcrests.vendorsoftwareproducts.types.DeploymentFlavorDto;
18 import org.openecomp.sdcrests.vendorsoftwareproducts.types.DeploymentFlavorListResponseDto;
19 import org.openecomp.sdcrests.vendorsoftwareproducts.types.DeploymentFlavorRequestDto;
20 import org.openecomp.sdcrests.vsp.rest.DeploymentFlavors;
21 import org.openecomp.sdcrests.vsp.rest.mapping.MapCompositionEntityResponseToDto;
22 import org.openecomp.sdcrests.vsp.rest.mapping.MapCompositionEntityValidationDataToDto;
23 import org.openecomp.sdcrests.vsp.rest.mapping.MapDeploymentFlavorEntityDeploymentFlavorToListResponse;
24 import org.openecomp.sdcrests.vsp.rest.mapping.MapDeploymentFlavorEntityToDeploymentFlavorCreationDto;
25 import org.openecomp.sdcrests.vsp.rest.mapping.MapDeploymentFlavorRequestDtoToDeploymentFlavorEntity;
26 import org.openecomp.sdcrests.vsp.rest.mapping.MapDeploymentFlavorToDeploymentDto;
27 import org.openecomp.sdcrests.wrappers.GenericCollectionWrapper;
28 import org.springframework.context.annotation.Scope;
29 import org.springframework.stereotype.Service;
31 import java.util.Collection;
32 import javax.inject.Named;
33 import javax.ws.rs.core.Response;
36 @Service("deploymentFlavors")
37 @Scope(value = "prototype")
38 public class DeploymentFlavorsImpl implements DeploymentFlavors
40 private DeploymentFlavorManager deploymentFlavorManager =
41 DeploymentFlavorManagerFactory.getInstance().createInterface();
44 public Response create(DeploymentFlavorRequestDto request, String vspId, String versionId,
46 MdcUtil.initMdc(LoggerServiceName.Create_Deployment_Flavor.toString());
47 DeploymentFlavorEntity deploymentFlavorEntity =
48 new MapDeploymentFlavorRequestDtoToDeploymentFlavorEntity()
49 .applyMapping(request, DeploymentFlavorEntity.class);
50 deploymentFlavorEntity.setVspId(vspId);
51 deploymentFlavorEntity.setVersion(resolveVspVersion(vspId, null, user,
52 VersionableEntityAction.Write));
53 DeploymentFlavorEntity createdDeploymentFlavor =
54 deploymentFlavorManager.createDeploymentFlavor(deploymentFlavorEntity, user);
55 MapDeploymentFlavorEntityToDeploymentFlavorCreationDto mapping =
56 new MapDeploymentFlavorEntityToDeploymentFlavorCreationDto();
57 DeploymentFlavorCreationDto deploymentFlavorCreatedDto= mapping.applyMapping
58 (createdDeploymentFlavor,DeploymentFlavorCreationDto.class);
60 .ok(createdDeploymentFlavor != null ? deploymentFlavorCreatedDto : null)
65 public Response list(String vspId,String version,String user) {
66 MdcUtil.initMdc(LoggerServiceName.Get_List_Deployment_flavor.toString());
67 Collection<DeploymentFlavorEntity> deploymentFlavors =
68 deploymentFlavorManager.listDeploymentFlavors(vspId, resolveVspVersion(vspId, version, user,
69 VersionableEntityAction.Read), user);
71 MapDeploymentFlavorEntityDeploymentFlavorToListResponse mapper = new
72 MapDeploymentFlavorEntityDeploymentFlavorToListResponse();
73 GenericCollectionWrapper<DeploymentFlavorListResponseDto> results = new GenericCollectionWrapper<>();
74 for (DeploymentFlavorEntity deploymentFlavor : deploymentFlavors) {
75 results.add(mapper.applyMapping(deploymentFlavor, DeploymentFlavorListResponseDto.class));
77 return Response.ok(results).build();
81 public Response get(String vspId, String version, String deploymentFlavorId, String user) {
82 MdcUtil.initMdc(LoggerServiceName.Get_Deployment_flavor.toString());
83 CompositionEntityResponse<DeploymentFlavor> response = deploymentFlavorManager
84 .getDeploymentFlavor(vspId, resolveVspVersion(vspId, version, user,
85 VersionableEntityAction.Read), deploymentFlavorId, user);
87 CompositionEntityResponseDto<DeploymentFlavorDto> responseDto = new
88 CompositionEntityResponseDto<>();
89 new MapCompositionEntityResponseToDto<>(new MapDeploymentFlavorToDeploymentDto(), DeploymentFlavorDto.class)
90 .doMapping(response, responseDto);
91 return Response.ok(responseDto).build();
95 public Response getSchema(String vspId, String version, String user) {
96 MdcUtil.initMdc(LoggerServiceName.Get_Deployment_flavor.toString());
97 CompositionEntityResponse<DeploymentFlavor> response = deploymentFlavorManager
98 .getDeploymentFlavorSchema(vspId, Version.valueOf(version), user);
99 return Response.ok(response).build();
103 public Response delete(String vspId, String versionId, String deploymentFlavorId, String user) {
104 MdcUtil.initMdc(LoggerServiceName.Delete_Deployment_flavor.toString());
105 Version version = resolveVspVersion(vspId, null, user, VersionableEntityAction.Write);
106 deploymentFlavorManager.deleteDeploymentFlavor(vspId, version, deploymentFlavorId, user);
107 return Response.ok().build();
111 public Response update(DeploymentFlavorRequestDto request, String vspId, String versionId,
112 String deploymentFlavorId, String user) {
113 MdcUtil.initMdc(LoggerServiceName.Update_Deployment_flavor.toString());
114 DeploymentFlavorEntity deploymentFlavorEntity =
115 new MapDeploymentFlavorRequestDtoToDeploymentFlavorEntity().applyMapping(request,
116 DeploymentFlavorEntity.class);
117 deploymentFlavorEntity.setVspId(vspId);
118 deploymentFlavorEntity.setVersion(resolveVspVersion(vspId, null, user, VersionableEntityAction.Write));
119 deploymentFlavorEntity.setId(deploymentFlavorId);
121 CompositionEntityValidationData validationData =
122 deploymentFlavorManager.updateDeploymentFlavor(deploymentFlavorEntity, user);
123 return validationData != null && CollectionUtils.isNotEmpty(validationData.getErrors())
124 ? Response.status(Response.Status.EXPECTATION_FAILED).entity(
125 new MapCompositionEntityValidationDataToDto().applyMapping(validationData,
126 CompositionEntityValidationDataDto.class)).build() : Response.ok().build();