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 / ComputeImpl.java
1 package org.openecomp.sdcrests.vsp.rest.services;
2
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;
32
33 import javax.inject.Named;
34 import javax.ws.rs.core.Response;
35 import java.util.Collection;
36
37 @Named
38 @Service("computes")
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();
45
46   @Override
47   public Response list(String vspId, String versionId, String componentId, String user) {
48
49     Version version = new Version(versionId);
50     componentManager.validateComponentExistence(vspId, version, componentId);
51     Collection<ListComputeResponse> computes =
52         computetManager.listComputes(vspId, version, componentId);
53
54     MapComputeEntityToComputeDto mapper = new MapComputeEntityToComputeDto();
55     GenericCollectionWrapper<ComputeDto> results = new GenericCollectionWrapper<>();
56     for (ListComputeResponse compute : computes) {
57       results.add(mapper.applyMapping(compute, ComputeDto.class));
58     }
59
60     return Response.ok(results).build();
61   }
62
63   @Override
64   public Response get(String vspId, String versionId, String componentId, String computeId,
65                       String user) {
66
67     Version version = new Version(versionId);
68     componentManager.validateComponentExistence(vspId, version, componentId);
69     CompositionEntityResponse<ComputeData> response =
70         computetManager.getCompute(vspId, version, componentId, computeId);
71
72     CompositionEntityResponseDto<ComputeDetailsDto> responseDto = new
73         CompositionEntityResponseDto<>();
74     new MapCompositionEntityResponseToDto<>(new MapComputeDataToComputeDetailsDto(),
75         ComputeDetailsDto.class).doMapping(response, responseDto);
76     return Response.ok(responseDto).build();
77   }
78
79   @Override
80   public Response create(ComputeDetailsDto request, String vspId, String versionId,
81                          String componentId, String user) {
82
83     ComputeEntity compute = new MapComputeDetailsDtoToComputeEntity().applyMapping(request,
84         ComputeEntity.class);
85     compute.setVspId(vspId);
86     compute.setVersion(new Version(versionId));
87     compute.setComponentId(componentId);
88     componentManager.validateComponentExistence(vspId, compute.getVersion(), componentId);
89
90     ComputeEntity createdCompute = computetManager.createCompute(compute);
91
92     MapComputeEntityToComputeCreationDto mapper = new MapComputeEntityToComputeCreationDto();
93     ComputeCreationDto createdComputeDto =
94         mapper.applyMapping(createdCompute, ComputeCreationDto.class);
95     return Response.ok(createdComputeDto != null ? createdComputeDto : null).build();
96   }
97
98   @Override
99   public Response update(ComputeDetailsDto request, String vspId, String versionId,
100                          String componentId, String computeFlavorId, String user) {
101
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);
108
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();
115   }
116
117   @Override
118   public Response delete(String vspId, String versionId, String componentId, String computeFlavorId,
119                          String user) {
120
121     Version version = new Version(versionId);
122     componentManager.validateComponentExistence(vspId, version, componentId);
123     computetManager.deleteCompute(vspId, version, componentId, computeFlavorId);
124     return Response.ok().build();
125   }
126
127   @Override
128   public Response getQuestionnaire(String vspId, String versionId, String componentId,
129                                    String computeFlavorId, String user) {
130
131     Version version = new Version(versionId);
132     componentManager.validateComponentExistence(vspId, version, componentId);
133     QuestionnaireResponse questionnaireResponse =
134         computetManager.getComputeQuestionnaire(vspId, version, componentId, computeFlavorId);
135
136     QuestionnaireResponseDto result = new MapQuestionnaireResponseToQuestionnaireResponseDto()
137         .applyMapping(questionnaireResponse, QuestionnaireResponseDto.class);
138     return Response.ok(result).build();
139   }
140
141   @Override
142   public Response updateQuestionnaire(String questionnaireData, String vspId, String versionId,
143                                       String componentId, String computeFlavorId, String user) {
144
145     Version version = new Version(versionId);
146     componentManager.validateComponentExistence(vspId, version, componentId);
147     computetManager.updateComputeQuestionnaire(vspId, version, componentId, computeFlavorId,
148         questionnaireData);
149     return Response.ok().build();
150   }
151 }