Removed reference to MDC for logging
[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.vendorsoftwareproduct.DeploymentFlavorManager;
5 import org.openecomp.sdc.vendorsoftwareproduct.DeploymentFlavorManagerFactory;
6 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.DeploymentFlavorEntity;
7 import org.openecomp.sdc.vendorsoftwareproduct.types.CompositionEntityResponse;
8 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityValidationData;
9 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.DeploymentFlavor;
10 import org.openecomp.sdc.versioning.dao.types.Version;
11 import org.openecomp.sdcrests.vendorsoftwareproducts.types.CompositionEntityResponseDto;
12 import org.openecomp.sdcrests.vendorsoftwareproducts.types.CompositionEntityValidationDataDto;
13 import org.openecomp.sdcrests.vendorsoftwareproducts.types.DeploymentFlavorCreationDto;
14 import org.openecomp.sdcrests.vendorsoftwareproducts.types.DeploymentFlavorDto;
15 import org.openecomp.sdcrests.vendorsoftwareproducts.types.DeploymentFlavorListResponseDto;
16 import org.openecomp.sdcrests.vendorsoftwareproducts.types.DeploymentFlavorRequestDto;
17 import org.openecomp.sdcrests.vsp.rest.DeploymentFlavors;
18 import org.openecomp.sdcrests.vsp.rest.mapping.MapCompositionEntityResponseToDto;
19 import org.openecomp.sdcrests.vsp.rest.mapping.MapCompositionEntityValidationDataToDto;
20 import org.openecomp.sdcrests.vsp.rest.mapping.MapDeploymentFlavorEntityDeploymentFlavorToListResponse;
21 import org.openecomp.sdcrests.vsp.rest.mapping.MapDeploymentFlavorEntityToDeploymentFlavorCreationDto;
22 import org.openecomp.sdcrests.vsp.rest.mapping.MapDeploymentFlavorRequestDtoToDeploymentFlavorEntity;
23 import org.openecomp.sdcrests.vsp.rest.mapping.MapDeploymentFlavorToDeploymentDto;
24 import org.openecomp.sdcrests.wrappers.GenericCollectionWrapper;
25 import org.springframework.context.annotation.Scope;
26 import org.springframework.stereotype.Service;
27
28 import javax.inject.Named;
29 import javax.ws.rs.core.Response;
30 import java.util.Collection;
31
32 @Named
33 @Service("deploymentFlavors")
34 @Scope(value = "prototype")
35 public class DeploymentFlavorsImpl implements DeploymentFlavors {
36   private DeploymentFlavorManager deploymentFlavorManager =
37       DeploymentFlavorManagerFactory.getInstance().createInterface();
38
39   @Override
40   public Response create(DeploymentFlavorRequestDto request, String vspId, String versionId,
41                          String user) {
42     DeploymentFlavorEntity deploymentFlavorEntity =
43         new MapDeploymentFlavorRequestDtoToDeploymentFlavorEntity()
44             .applyMapping(request, DeploymentFlavorEntity.class);
45     deploymentFlavorEntity.setVspId(vspId);
46     deploymentFlavorEntity.setVersion(new Version(versionId));
47     DeploymentFlavorEntity createdDeploymentFlavor =
48         deploymentFlavorManager.createDeploymentFlavor(deploymentFlavorEntity);
49     MapDeploymentFlavorEntityToDeploymentFlavorCreationDto mapping =
50         new MapDeploymentFlavorEntityToDeploymentFlavorCreationDto();
51     DeploymentFlavorCreationDto deploymentFlavorCreatedDto = mapping.applyMapping
52         (createdDeploymentFlavor, DeploymentFlavorCreationDto.class);
53     return Response
54         .ok(createdDeploymentFlavor != null ? deploymentFlavorCreatedDto : null)
55         .build();
56   }
57
58   @Override
59   public Response list(String vspId, String versionId, String user) {
60     Collection<DeploymentFlavorEntity> deploymentFlavors =
61         deploymentFlavorManager.listDeploymentFlavors(vspId, new Version(versionId));
62
63     MapDeploymentFlavorEntityDeploymentFlavorToListResponse mapper = new
64         MapDeploymentFlavorEntityDeploymentFlavorToListResponse();
65     GenericCollectionWrapper<DeploymentFlavorListResponseDto> results =
66         new GenericCollectionWrapper<>();
67     for (DeploymentFlavorEntity deploymentFlavor : deploymentFlavors) {
68       results.add(mapper.applyMapping(deploymentFlavor, DeploymentFlavorListResponseDto.class));
69     }
70     return Response.ok(results).build();
71   }
72
73   @Override
74   public Response get(String vspId, String versionId, String deploymentFlavorId, String user) {
75     CompositionEntityResponse<DeploymentFlavor> response = deploymentFlavorManager
76         .getDeploymentFlavor(vspId, new Version(versionId), deploymentFlavorId);
77
78     CompositionEntityResponseDto<DeploymentFlavorDto> responseDto = new
79         CompositionEntityResponseDto<>();
80     new MapCompositionEntityResponseToDto<>(new MapDeploymentFlavorToDeploymentDto(),
81         DeploymentFlavorDto.class)
82         .doMapping(response, responseDto);
83     return Response.ok(responseDto).build();
84   }
85
86   @Override
87   public Response getSchema(String vspId, String versionId, String user) {
88     CompositionEntityResponse<DeploymentFlavor> response = deploymentFlavorManager
89         .getDeploymentFlavorSchema(vspId, new Version(versionId));
90     return Response.ok(response).build();
91   }
92
93   @Override
94   public Response delete(String vspId, String versionId, String deploymentFlavorId, String user) {
95     Version version = new Version(versionId);
96     deploymentFlavorManager.deleteDeploymentFlavor(vspId, version, deploymentFlavorId);
97     return Response.ok().build();
98   }
99
100   @Override
101   public Response update(DeploymentFlavorRequestDto request, String vspId, String versionId,
102                          String deploymentFlavorId, String user) {
103     DeploymentFlavorEntity deploymentFlavorEntity =
104         new MapDeploymentFlavorRequestDtoToDeploymentFlavorEntity().applyMapping(request,
105             DeploymentFlavorEntity.class);
106     deploymentFlavorEntity.setVspId(vspId);
107     deploymentFlavorEntity.setVersion(new Version(versionId));
108     deploymentFlavorEntity.setId(deploymentFlavorId);
109
110     CompositionEntityValidationData validationData =
111         deploymentFlavorManager.updateDeploymentFlavor(deploymentFlavorEntity);
112     return validationData != null && CollectionUtils.isNotEmpty(validationData.getErrors())
113         ? Response.status(Response.Status.EXPECTATION_FAILED).entity(
114         new MapCompositionEntityValidationDataToDto().applyMapping(validationData,
115             CompositionEntityValidationDataDto.class)).build() : Response.ok().build();
116   }
117 }