[SDC] Onboarding 1710 rebase.
[sdc.git] / openecomp-be / api / openecomp-sdc-rest-webapp / vendor-software-products-rest / vendor-software-products-rest-services / src / main / java / org / openecomp / sdcrests / vsp / rest / services / DeploymentFlavorsImpl.java
1 package org.openecomp.sdcrests.vsp.rest.services;
2
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.beans.factory.annotation.Autowired;
29 import org.springframework.context.annotation.Scope;
30 import org.springframework.stereotype.Service;
31
32 import java.util.Collection;
33 import javax.inject.Named;
34 import javax.ws.rs.core.Response;
35
36 @Named
37 @Service("deploymentFlavors")
38 @Scope(value = "prototype")
39 public class DeploymentFlavorsImpl implements DeploymentFlavors
40 {
41   private DeploymentFlavorManager deploymentFlavorManager =
42       DeploymentFlavorManagerFactory.getInstance().createInterface();
43
44   @Override
45   public Response create(DeploymentFlavorRequestDto request, String vspId, String versionId,
46                          String user) {
47     MdcUtil.initMdc(LoggerServiceName.Create_Deployment_Flavor.toString());
48     DeploymentFlavorEntity deploymentFlavorEntity =
49         new MapDeploymentFlavorRequestDtoToDeploymentFlavorEntity()
50             .applyMapping(request, DeploymentFlavorEntity.class);
51     deploymentFlavorEntity.setVspId(vspId);
52     deploymentFlavorEntity.setVersion(resolveVspVersion(vspId, null, user,
53         VersionableEntityAction.Write));
54     DeploymentFlavorEntity createdDeploymentFlavor =
55         deploymentFlavorManager.createDeploymentFlavor(deploymentFlavorEntity, user);
56     MapDeploymentFlavorEntityToDeploymentFlavorCreationDto mapping =
57         new MapDeploymentFlavorEntityToDeploymentFlavorCreationDto();
58     DeploymentFlavorCreationDto deploymentFlavorCreatedDto= mapping.applyMapping
59         (createdDeploymentFlavor,DeploymentFlavorCreationDto.class);
60     return Response
61         .ok(createdDeploymentFlavor != null ? deploymentFlavorCreatedDto : null)
62         .build();
63   }
64
65   @Override
66   public Response list(String vspId,String version,String user) {
67     MdcUtil.initMdc(LoggerServiceName.Get_List_Deployment_flavor.toString());
68     Collection<DeploymentFlavorEntity> deploymentFlavors =
69         deploymentFlavorManager.listDeploymentFlavors(vspId, resolveVspVersion(vspId, version, user,
70             VersionableEntityAction.Read), user);
71
72     MapDeploymentFlavorEntityDeploymentFlavorToListResponse mapper = new
73         MapDeploymentFlavorEntityDeploymentFlavorToListResponse();
74     GenericCollectionWrapper<DeploymentFlavorListResponseDto> results = new GenericCollectionWrapper<>();
75     for (DeploymentFlavorEntity deploymentFlavor : deploymentFlavors) {
76       results.add(mapper.applyMapping(deploymentFlavor, DeploymentFlavorListResponseDto.class));
77     }
78     return Response.ok(results).build();
79   }
80
81   @Override
82   public Response get(String vspId, String version, String deploymentFlavorId, String user) {
83     MdcUtil.initMdc(LoggerServiceName.Get_Deployment_flavor.toString());
84     CompositionEntityResponse<DeploymentFlavor> response = deploymentFlavorManager
85         .getDeploymentFlavor(vspId, resolveVspVersion(vspId, version, user,
86             VersionableEntityAction.Read), deploymentFlavorId, user);
87
88     CompositionEntityResponseDto<DeploymentFlavorDto> responseDto = new
89         CompositionEntityResponseDto<>();
90     new MapCompositionEntityResponseToDto<>(new MapDeploymentFlavorToDeploymentDto(), DeploymentFlavorDto.class)
91         .doMapping(response, responseDto);
92     return Response.ok(responseDto).build();
93   }
94
95   @Override
96   public Response getSchema(String vspId, String version, String user) {
97     MdcUtil.initMdc(LoggerServiceName.Get_Deployment_flavor.toString());
98     CompositionEntityResponse<DeploymentFlavor> response = deploymentFlavorManager
99         .getDeploymentFlavorSchema(vspId, Version.valueOf(version), user);
100     return Response.ok(response).build();
101   }
102
103   @Override
104   public Response delete(String vspId, String versionId, String deploymentFlavorId, String user) {
105     MdcUtil.initMdc(LoggerServiceName.Delete_Deployment_flavor.toString());
106     Version version = resolveVspVersion(vspId, null, user, VersionableEntityAction.Write);
107     deploymentFlavorManager.deleteDeploymentFlavor(vspId, version, deploymentFlavorId, user);
108     return Response.ok().build();
109   }
110
111   @Override
112   public Response update(DeploymentFlavorRequestDto request, String vspId, String versionId,
113                          String deploymentFlavorId, String user) {
114     MdcUtil.initMdc(LoggerServiceName.Update_Deployment_flavor.toString());
115     DeploymentFlavorEntity deploymentFlavorEntity =
116         new MapDeploymentFlavorRequestDtoToDeploymentFlavorEntity().applyMapping(request,
117             DeploymentFlavorEntity.class);
118     deploymentFlavorEntity.setVspId(vspId);
119     deploymentFlavorEntity.setVersion(resolveVspVersion(vspId, null, user, VersionableEntityAction.Write));
120     deploymentFlavorEntity.setId(deploymentFlavorId);
121
122     CompositionEntityValidationData validationData =
123         deploymentFlavorManager.updateDeploymentFlavor(deploymentFlavorEntity, user);
124     return validationData != null && CollectionUtils.isNotEmpty(validationData.getErrors())
125         ? Response.status(Response.Status.EXPECTATION_FAILED).entity(
126         new MapCompositionEntityValidationDataToDto().applyMapping(validationData,
127             CompositionEntityValidationDataDto.class)).build() : Response.ok().build();
128   }
129 }