1 package org.openecomp.sdcrests.vsp.rest.services;
3 import org.apache.commons.collections4.CollectionUtils;
4 import org.openecomp.sdc.vendorsoftwareproduct.ComponentManager;
5 import org.openecomp.sdc.vendorsoftwareproduct.ComponentManagerFactory;
6 import org.openecomp.sdc.vendorsoftwareproduct.ComputeManager;
7 import org.openecomp.sdc.vendorsoftwareproduct.ComputeManagerFactory;
8 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComputeEntity;
9 import org.openecomp.sdc.vendorsoftwareproduct.types.CompositionEntityResponse;
10 import org.openecomp.sdc.vendorsoftwareproduct.types.ListComputeResponse;
11 import org.openecomp.sdc.vendorsoftwareproduct.types.QuestionnaireResponse;
12 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityValidationData;
13 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.ComputeData;
14 import org.openecomp.sdc.versioning.dao.types.Version;
15 import org.openecomp.sdcrests.vendorsoftwareproducts.types.CompositionEntityResponseDto;
16 import org.openecomp.sdcrests.vendorsoftwareproducts.types.CompositionEntityValidationDataDto;
17 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ComputeCreationDto;
18 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ComputeDetailsDto;
19 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ComputeDto;
20 import org.openecomp.sdcrests.vendorsoftwareproducts.types.QuestionnaireResponseDto;
21 import org.openecomp.sdcrests.vsp.rest.Compute;
22 import org.openecomp.sdcrests.vsp.rest.mapping.MapCompositionEntityResponseToDto;
23 import org.openecomp.sdcrests.vsp.rest.mapping.MapCompositionEntityValidationDataToDto;
24 import org.openecomp.sdcrests.vsp.rest.mapping.MapComputeDataToComputeDetailsDto;
25 import org.openecomp.sdcrests.vsp.rest.mapping.MapComputeDetailsDtoToComputeEntity;
26 import org.openecomp.sdcrests.vsp.rest.mapping.MapComputeEntityToComputeCreationDto;
27 import org.openecomp.sdcrests.vsp.rest.mapping.MapComputeEntityToComputeDto;
28 import org.openecomp.sdcrests.vsp.rest.mapping.MapQuestionnaireResponseToQuestionnaireResponseDto;
29 import org.openecomp.sdcrests.wrappers.GenericCollectionWrapper;
30 import org.springframework.context.annotation.Scope;
31 import org.springframework.stereotype.Service;
33 import javax.inject.Named;
34 import javax.ws.rs.core.Response;
35 import java.util.Collection;
39 @Scope(value = "prototype")
40 public class ComputeImpl implements Compute {
41 private ComputeManager computetManager =
42 ComputeManagerFactory.getInstance().createInterface();
43 private ComponentManager componentManager =
44 ComponentManagerFactory.getInstance().createInterface();
47 public Response list(String vspId, String versionId, String componentId, String user) {
49 Version version = new Version(versionId);
50 componentManager.validateComponentExistence(vspId, version, componentId);
51 Collection<ListComputeResponse> computes =
52 computetManager.listComputes(vspId, version, componentId);
54 MapComputeEntityToComputeDto mapper = new MapComputeEntityToComputeDto();
55 GenericCollectionWrapper<ComputeDto> results = new GenericCollectionWrapper<>();
56 for (ListComputeResponse compute : computes) {
57 results.add(mapper.applyMapping(compute, ComputeDto.class));
60 return Response.ok(results).build();
64 public Response get(String vspId, String versionId, String componentId, String computeId,
67 Version version = new Version(versionId);
68 componentManager.validateComponentExistence(vspId, version, componentId);
69 CompositionEntityResponse<ComputeData> response =
70 computetManager.getCompute(vspId, version, componentId, computeId);
72 CompositionEntityResponseDto<ComputeDetailsDto> responseDto = new
73 CompositionEntityResponseDto<>();
74 new MapCompositionEntityResponseToDto<>(new MapComputeDataToComputeDetailsDto(),
75 ComputeDetailsDto.class).doMapping(response, responseDto);
76 return Response.ok(responseDto).build();
80 public Response create(ComputeDetailsDto request, String vspId, String versionId,
81 String componentId, String user) {
83 ComputeEntity compute = new MapComputeDetailsDtoToComputeEntity().applyMapping(request,
85 compute.setVspId(vspId);
86 compute.setVersion(new Version(versionId));
87 compute.setComponentId(componentId);
88 componentManager.validateComponentExistence(vspId, compute.getVersion(), componentId);
90 ComputeEntity createdCompute = computetManager.createCompute(compute);
92 MapComputeEntityToComputeCreationDto mapper = new MapComputeEntityToComputeCreationDto();
93 ComputeCreationDto createdComputeDto =
94 mapper.applyMapping(createdCompute, ComputeCreationDto.class);
95 return Response.ok(createdComputeDto != null ? createdComputeDto : null).build();
99 public Response update(ComputeDetailsDto request, String vspId, String versionId,
100 String componentId, String computeFlavorId, String user) {
102 ComputeEntity compute =
103 new MapComputeDetailsDtoToComputeEntity().applyMapping(request, ComputeEntity.class);
104 compute.setVspId(vspId);
105 compute.setVersion(new Version(versionId));
106 compute.setComponentId(componentId);
107 compute.setId(computeFlavorId);
109 componentManager.validateComponentExistence(vspId, compute.getVersion(), componentId);
110 CompositionEntityValidationData validationData = computetManager.updateCompute(compute);
111 return validationData != null && CollectionUtils.isNotEmpty(validationData.getErrors())
112 ? Response.status(Response.Status.EXPECTATION_FAILED).entity(
113 new MapCompositionEntityValidationDataToDto().applyMapping(validationData,
114 CompositionEntityValidationDataDto.class)).build() : Response.ok().build();
118 public Response delete(String vspId, String versionId, String componentId, String computeFlavorId,
121 Version version = new Version(versionId);
122 componentManager.validateComponentExistence(vspId, version, componentId);
123 computetManager.deleteCompute(vspId, version, componentId, computeFlavorId);
124 return Response.ok().build();
128 public Response getQuestionnaire(String vspId, String versionId, String componentId,
129 String computeFlavorId, String user) {
131 Version version = new Version(versionId);
132 componentManager.validateComponentExistence(vspId, version, componentId);
133 QuestionnaireResponse questionnaireResponse =
134 computetManager.getComputeQuestionnaire(vspId, version, componentId, computeFlavorId);
136 QuestionnaireResponseDto result = new MapQuestionnaireResponseToQuestionnaireResponseDto()
137 .applyMapping(questionnaireResponse, QuestionnaireResponseDto.class);
138 return Response.ok(result).build();
142 public Response updateQuestionnaire(String questionnaireData, String vspId, String versionId,
143 String componentId, String computeFlavorId, String user) {
145 Version version = new Version(versionId);
146 componentManager.validateComponentExistence(vspId, version, componentId);
147 computetManager.updateComputeQuestionnaire(vspId, version, componentId, computeFlavorId,
149 return Response.ok().build();