Add collaboration feature
[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.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;
29
30 import javax.inject.Named;
31 import javax.ws.rs.core.Response;
32 import java.util.Collection;
33
34 @Named
35 @Service("deploymentFlavors")
36 @Scope(value = "prototype")
37 public class DeploymentFlavorsImpl implements DeploymentFlavors {
38   private DeploymentFlavorManager deploymentFlavorManager =
39       DeploymentFlavorManagerFactory.getInstance().createInterface();
40
41   @Override
42   public Response create(DeploymentFlavorRequestDto request, String vspId, String versionId,
43                          String user) {
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);
56     return Response
57         .ok(createdDeploymentFlavor != null ? deploymentFlavorCreatedDto : null)
58         .build();
59   }
60
61   @Override
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));
66
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));
73     }
74     return Response.ok(results).build();
75   }
76
77   @Override
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);
82
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();
89   }
90
91   @Override
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();
97   }
98
99   @Override
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();
105   }
106
107   @Override
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);
117
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();
124   }
125 }