1 package org.openecomp.sdcrests.vsp.rest.services;
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;
28 import javax.inject.Named;
29 import javax.ws.rs.core.Response;
30 import java.util.Collection;
33 @Service("deploymentFlavors")
34 @Scope(value = "prototype")
35 public class DeploymentFlavorsImpl implements DeploymentFlavors {
36 private DeploymentFlavorManager deploymentFlavorManager =
37 DeploymentFlavorManagerFactory.getInstance().createInterface();
40 public Response create(DeploymentFlavorRequestDto request, String vspId, String versionId,
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);
54 .ok(createdDeploymentFlavor != null ? deploymentFlavorCreatedDto : null)
59 public Response list(String vspId, String versionId, String user) {
60 Collection<DeploymentFlavorEntity> deploymentFlavors =
61 deploymentFlavorManager.listDeploymentFlavors(vspId, new Version(versionId));
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));
70 return Response.ok(results).build();
74 public Response get(String vspId, String versionId, String deploymentFlavorId, String user) {
75 CompositionEntityResponse<DeploymentFlavor> response = deploymentFlavorManager
76 .getDeploymentFlavor(vspId, new Version(versionId), deploymentFlavorId);
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();
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();
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();
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);
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();