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