1 package org.openecomp.sdcrests.vsp.rest.services;
4 import org.apache.commons.collections.CollectionUtils;
5 import org.openecomp.sdc.logging.context.MdcUtil;
6 import org.openecomp.sdc.logging.types.LoggerServiceName;
7 import org.openecomp.sdc.vendorsoftwareproduct.ComponentManager;
8 import org.openecomp.sdc.vendorsoftwareproduct.ComponentManagerFactory;
9 import org.openecomp.sdc.vendorsoftwareproduct.ImageManager;
10 import org.openecomp.sdc.vendorsoftwareproduct.ImageManagerFactory;
11 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ImageEntity;
12 import org.openecomp.sdc.vendorsoftwareproduct.types.CompositionEntityResponse;
13 import org.openecomp.sdc.vendorsoftwareproduct.types.QuestionnaireResponse;
14 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityValidationData;
15 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.Image;
16 import org.openecomp.sdc.versioning.dao.types.Version;
17 import org.openecomp.sdcrests.vendorsoftwareproducts.types.CompositionEntityValidationDataDto;
18 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ImageCreationDto;
19 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ImageDto;
20 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ImageRequestDto;
21 import org.openecomp.sdcrests.vendorsoftwareproducts.types.QuestionnaireResponseDto;
22 import org.openecomp.sdcrests.vsp.rest.Images;
23 import org.openecomp.sdcrests.vsp.rest.mapping.MapCompositionEntityValidationDataToDto;
24 import org.openecomp.sdcrests.vsp.rest.mapping.MapImageEntityToImageCreationDto;
25 import org.openecomp.sdcrests.vsp.rest.mapping.MapImageEntityToImageDto;
26 import org.openecomp.sdcrests.vsp.rest.mapping.MapImageRequestDtoToImageEntity;
27 import org.openecomp.sdcrests.vsp.rest.mapping.MapQuestionnaireResponseToQuestionnaireResponseDto;
28 import org.openecomp.sdcrests.wrappers.GenericCollectionWrapper;
29 import org.springframework.context.annotation.Scope;
30 import org.springframework.stereotype.Service;
32 import javax.inject.Named;
33 import javax.ws.rs.core.Response;
34 import java.util.Collection;
39 @Scope(value = "prototype")
40 public class ImagesImpl implements Images {
42 private ImageManager imageManager = ImageManagerFactory.getInstance().createInterface();
43 private ComponentManager componentManager =
44 ComponentManagerFactory.getInstance().createInterface();
47 public Response create(ImageRequestDto request, String vspId, String versionId,
48 String componentId, String user) {
49 MdcUtil.initMdc(LoggerServiceName.Create_Image.toString());
51 new MapImageRequestDtoToImageEntity().applyMapping(request, ImageEntity.class);
52 image.setVspId(vspId);
53 image.setComponentId(componentId);
54 image.setVersion(new Version(versionId));
55 componentManager.validateComponentExistence(vspId, image.getVersion(), componentId);
56 ImageEntity createdImage = imageManager.createImage(image);
57 MapImageEntityToImageCreationDto mapping = new MapImageEntityToImageCreationDto();
58 ImageCreationDto createdImageDto = mapping.applyMapping(createdImage, ImageCreationDto.class);
60 .ok(createdImage != null ? createdImageDto : null)
65 public Response getImageSchema(String vspId, String versionId, String componentId, String user) {
66 MdcUtil.initMdc(LoggerServiceName.GET_Image_Schema.toString());
67 CompositionEntityResponse<Image> response = imageManager.getImageSchema(vspId);
68 return Response.ok(response).build();
72 public Response get(String vspId, String versionId, String componentId, String imageId,
74 MdcUtil.initMdc(LoggerServiceName.GET_Image.toString());
75 Version version = new Version(versionId);
76 componentManager.validateComponentExistence(vspId, version, componentId);
77 CompositionEntityResponse<Image> response =
78 imageManager.getImage(vspId, version, componentId, imageId);
80 return Response.ok(response).build();
84 public Response list(String vspId, String versionId, String componentId, String user) {
85 MdcUtil.initMdc(LoggerServiceName.List_Images.toString());
86 Version vspVersion = new Version(versionId);
87 componentManager.validateComponentExistence(vspId, vspVersion, componentId);
88 Collection<ImageEntity> images = imageManager.listImages(vspId, vspVersion, componentId);
90 MapImageEntityToImageDto mapper = new MapImageEntityToImageDto();
91 GenericCollectionWrapper<ImageDto> results = new GenericCollectionWrapper<>();
92 for (ImageEntity image : images) {
93 results.add(mapper.applyMapping(image, ImageDto.class));
96 return Response.ok(results).build();
100 public Response delete(String vspId, String versionId, String componentId, String imageId,
102 MdcUtil.initMdc(LoggerServiceName.Delete_Image.toString());
103 Version vspVersion = new Version(versionId);
104 componentManager.validateComponentExistence(vspId, vspVersion, componentId);
105 imageManager.deleteImage(vspId, vspVersion, componentId, imageId);
106 return Response.ok().build();
110 public Response update(ImageRequestDto request, String vspId, String versionId,
111 String componentId, String imageId, String user) {
112 MdcUtil.initMdc(LoggerServiceName.Update_Image.toString());
113 ImageEntity imageEntity = new MapImageRequestDtoToImageEntity().applyMapping(request,
115 imageEntity.setVspId(vspId);
116 imageEntity.setVersion(new Version(versionId));
117 imageEntity.setComponentId(componentId);
118 imageEntity.setId(imageId);
119 componentManager.validateComponentExistence(vspId, imageEntity.getVersion(), componentId);
121 CompositionEntityValidationData validationData = imageManager.updateImage(imageEntity);
122 return validationData != null && CollectionUtils.isNotEmpty(validationData.getErrors())
123 ? Response.status(Response.Status.EXPECTATION_FAILED).entity(
124 new MapCompositionEntityValidationDataToDto()
125 .applyMapping(validationData, CompositionEntityValidationDataDto.class)).build() :
126 Response.ok().build();
130 public Response getQuestionnaire(String vspId, String versionId, String componentId,
131 String imageId, String user) {
132 MdcUtil.initMdc(LoggerServiceName.Get_Questionnaire_Compute.toString());
133 Version vspVersion = new Version(versionId);
134 componentManager.validateComponentExistence(vspId, vspVersion, componentId);
135 QuestionnaireResponse questionnaireResponse =
136 imageManager.getImageQuestionnaire(vspId, vspVersion, componentId, imageId);
138 QuestionnaireResponseDto result = new MapQuestionnaireResponseToQuestionnaireResponseDto()
139 .applyMapping(questionnaireResponse, QuestionnaireResponseDto.class);
140 return Response.ok(result).build();
145 public Response updateQuestionnaire(String questionnaireData, String vspId, String versionId,
146 String componentId, String imageId, String user) {
147 MdcUtil.initMdc(LoggerServiceName.Update_Questionnaire_Compute.toString());
148 Version version = new Version(versionId);
149 componentManager.validateComponentExistence(vspId, version, componentId);
150 imageManager.updateImageQuestionnaire(vspId, version, componentId, imageId, questionnaireData);
151 return Response.ok().build();