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