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 / 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.*;
16 import org.openecomp.sdcrests.vsp.rest.Compute;
17 import org.openecomp.sdcrests.vsp.rest.mapping.*;
18 import org.openecomp.sdcrests.wrappers.GenericCollectionWrapper;
19 import org.springframework.context.annotation.Scope;
20 import org.springframework.stereotype.Service;
21
22 import javax.inject.Named;
23 import javax.ws.rs.core.Response;
24 import java.util.Collection;
25
26 @Named
27 @Service("computes")
28 @Scope(value = "prototype")
29 public class ComputeImpl implements Compute {
30   private ComputeManager computetManager =
31       ComputeManagerFactory.getInstance().createInterface();
32   private ComponentManager componentManager =
33       ComponentManagerFactory.getInstance().createInterface();
34
35   @Override
36   public Response list(String vspId, String versionId, String componentId, String user) {
37
38     Version version = new Version(versionId);
39     componentManager.validateComponentExistence(vspId, version, componentId);
40     Collection<ListComputeResponse> computes =
41         computetManager.listComputes(vspId, version, componentId);
42
43     MapComputeEntityToComputeDto mapper = new MapComputeEntityToComputeDto();
44     GenericCollectionWrapper<ComputeDto> results = new GenericCollectionWrapper<>();
45     for (ListComputeResponse compute : computes) {
46       results.add(mapper.applyMapping(compute, ComputeDto.class));
47     }
48
49     return Response.ok(results).build();
50   }
51
52   @Override
53   public Response get(String vspId, String versionId, String componentId, String computeId,
54                       String user) {
55
56     Version version = new Version(versionId);
57     componentManager.validateComponentExistence(vspId, version, componentId);
58     CompositionEntityResponse<ComputeData> response =
59         computetManager.getCompute(vspId, version, componentId, computeId);
60
61     CompositionEntityResponseDto<ComputeDetailsDto> responseDto = new
62         CompositionEntityResponseDto<>();
63     new MapCompositionEntityResponseToDto<>(new MapComputeDataToComputeDetailsDto(),
64         ComputeDetailsDto.class).doMapping(response, responseDto);
65     return Response.ok(responseDto).build();
66   }
67
68   @Override
69   public Response create(ComputeDetailsDto request, String vspId, String versionId,
70                          String componentId, String user) {
71
72     ComputeEntity compute = new MapComputeDetailsDtoToComputeEntity().applyMapping(request,
73         ComputeEntity.class);
74     compute.setVspId(vspId);
75     compute.setVersion(new Version(versionId));
76     compute.setComponentId(componentId);
77     componentManager.validateComponentExistence(vspId, compute.getVersion(), componentId);
78
79     ComputeEntity createdCompute = computetManager.createCompute(compute);
80
81     MapComputeEntityToComputeCreationDto mapper = new MapComputeEntityToComputeCreationDto();
82     ComputeCreationDto createdComputeDto =
83         mapper.applyMapping(createdCompute, ComputeCreationDto.class);
84     return Response.ok(createdComputeDto != null ? createdComputeDto : null).build();
85   }
86
87   @Override
88   public Response update(ComputeDetailsDto request, String vspId, String versionId,
89                          String componentId, String computeFlavorId, String user) {
90
91     ComputeEntity compute =
92         new MapComputeDetailsDtoToComputeEntity().applyMapping(request, ComputeEntity.class);
93     compute.setVspId(vspId);
94     compute.setVersion(new Version(versionId));
95     compute.setComponentId(componentId);
96     compute.setId(computeFlavorId);
97
98     componentManager.validateComponentExistence(vspId, compute.getVersion(), componentId);
99     CompositionEntityValidationData validationData = computetManager.updateCompute(compute);
100     return validationData != null && CollectionUtils.isNotEmpty(validationData.getErrors())
101         ? Response.status(Response.Status.EXPECTATION_FAILED).entity(
102         new MapCompositionEntityValidationDataToDto().applyMapping(validationData,
103             CompositionEntityValidationDataDto.class)).build() : Response.ok().build();
104   }
105
106   @Override
107   public Response delete(String vspId, String versionId, String componentId, String computeFlavorId,
108                          String user) {
109
110     Version version = new Version(versionId);
111     componentManager.validateComponentExistence(vspId, version, componentId);
112     computetManager.deleteCompute(vspId, version, componentId, computeFlavorId);
113     return Response.ok().build();
114   }
115
116   @Override
117   public Response getQuestionnaire(String vspId, String versionId, String componentId,
118                                    String computeFlavorId, String user) {
119
120     Version version = new Version(versionId);
121     componentManager.validateComponentExistence(vspId, version, componentId);
122     QuestionnaireResponse questionnaireResponse =
123         computetManager.getComputeQuestionnaire(vspId, version, componentId, computeFlavorId);
124
125     QuestionnaireResponseDto result = new MapQuestionnaireResponseToQuestionnaireResponseDto()
126         .applyMapping(questionnaireResponse, QuestionnaireResponseDto.class);
127     return Response.ok(result).build();
128   }
129
130   @Override
131   public Response updateQuestionnaire(String questionnaireData, String vspId, String versionId,
132                                       String componentId, String computeFlavorId, String user) {
133
134     Version version = new Version(versionId);
135     componentManager.validateComponentExistence(vspId, version, componentId);
136     computetManager.updateComputeQuestionnaire(vspId, version, componentId, computeFlavorId,
137         questionnaireData);
138     return Response.ok().build();
139   }
140 }