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.sdc.versioning.types.VersionableEntityAction;
18 import org.openecomp.sdcrests.vendorsoftwareproducts.types.CompositionEntityValidationDataDto;
19 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ImageCreationDto;
20 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ImageDto;
21 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ImageRequestDto;
22 import org.openecomp.sdcrests.vendorsoftwareproducts.types.QuestionnaireResponseDto;
23 import org.openecomp.sdcrests.vsp.rest.Images;
24 import org.openecomp.sdcrests.vsp.rest.mapping.MapCompositionEntityValidationDataToDto;
25 import org.openecomp.sdcrests.vsp.rest.mapping.MapImageEntityToImageCreationDto;
26 import org.openecomp.sdcrests.vsp.rest.mapping.MapImageEntityToImageDto;
27 import org.openecomp.sdcrests.vsp.rest.mapping.MapImageRequestDtoToImageEntity;
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 java.util.Collection;
34 import javax.inject.Named;
35 import javax.ws.rs.core.Response;
40 @Scope(value = "prototype")
41 public class ImagesImpl implements Images
44 private ImageManager imageManager = ImageManagerFactory.getInstance().createInterface();
45 private ComponentManager componentManager =
46 ComponentManagerFactory.getInstance().createInterface();
49 public Response create(ImageRequestDto request, String vspId, String versionId,String
50 componentId, String user) {
51 MdcUtil.initMdc(LoggerServiceName.Create_Image.toString());
53 new MapImageRequestDtoToImageEntity().applyMapping(request, ImageEntity.class);
54 image.setVspId(vspId);
55 image.setComponentId(componentId);
56 image.setVersion(resolveVspVersion(vspId, null, user, VersionableEntityAction.Write));
57 componentManager.validateComponentExistence(vspId, image.getVersion(), componentId, user);
58 ImageEntity createdImage = imageManager.createImage(image, user);
59 MapImageEntityToImageCreationDto mapping = new MapImageEntityToImageCreationDto();
60 ImageCreationDto createdImageDto = mapping.applyMapping(createdImage, ImageCreationDto.class);
62 .ok(createdImage != null ? createdImageDto : null)
67 public Response getImageSchema(String vspId, String versionId, String componentId, String user) {
68 MdcUtil.initMdc(LoggerServiceName.GET_Image_Schema.toString());
69 CompositionEntityResponse<Image> response =
70 imageManager.getImageSchema(vspId, user);
71 return Response.ok(response).build();
75 public Response get(String vspId, String versionId, String componentId, String imageId, String
77 MdcUtil.initMdc(LoggerServiceName.GET_Image.toString());
78 Version vspVersion = resolveVspVersion(vspId, versionId, user, VersionableEntityAction.Read);
79 componentManager.validateComponentExistence(vspId, vspVersion, componentId, user);
80 CompositionEntityResponse<Image> response = imageManager.getImage(vspId,
81 vspVersion, componentId, imageId, user);
83 return Response.ok(response).build();
87 public Response list(String vspId, String versionId, String componentId, String user) {
88 MdcUtil.initMdc(LoggerServiceName.List_Images.toString());
89 Version vspVersion = resolveVspVersion(vspId, versionId, user, VersionableEntityAction.Read);
90 componentManager.validateComponentExistence(vspId, vspVersion, componentId, user);
91 Collection<ImageEntity> images =
92 imageManager.listImages(vspId, vspVersion, componentId, user);
94 MapImageEntityToImageDto mapper = new MapImageEntityToImageDto();
95 GenericCollectionWrapper<ImageDto> results = new GenericCollectionWrapper<>();
96 for (ImageEntity image : images) {
97 results.add(mapper.applyMapping(image, ImageDto.class));
100 return Response.ok(results).build();
104 public Response delete(String vspId, String versionId, String componentId, String imageId,
106 MdcUtil.initMdc(LoggerServiceName.Delete_Image.toString());
107 Version vspVersion = resolveVspVersion(vspId, null, user, VersionableEntityAction.Write);
108 componentManager.validateComponentExistence(vspId, vspVersion, componentId, user);
109 imageManager.deleteImage(vspId, vspVersion, componentId, imageId, user);
110 return Response.ok().build();
114 public Response update(ImageRequestDto request, String vspId, String versionId, String
118 MdcUtil.initMdc(LoggerServiceName.Update_Image.toString());
119 ImageEntity imageEntity = new MapImageRequestDtoToImageEntity().applyMapping(request,
121 imageEntity.setVspId(vspId);
122 imageEntity.setVersion(resolveVspVersion(vspId, null, user, VersionableEntityAction.Write));
123 imageEntity.setComponentId(componentId);
124 imageEntity.setId(imageId);
125 componentManager.validateComponentExistence(vspId, imageEntity.getVersion(), componentId, user);
127 CompositionEntityValidationData validationData =
128 imageManager.updateImage(imageEntity, user);
129 return validationData != null && CollectionUtils.isNotEmpty(validationData.getErrors())
130 ? Response.status(Response.Status.EXPECTATION_FAILED).entity(
131 new MapCompositionEntityValidationDataToDto()
132 .applyMapping(validationData, CompositionEntityValidationDataDto.class)).build() :
133 Response.ok().build();
137 public Response getQuestionnaire(String vspId, String versionId, String componentId, String
138 imageId, String user) {
139 MdcUtil.initMdc(LoggerServiceName.Get_Questionnaire_Compute.toString());
140 Version vspVersion = resolveVspVersion(vspId, versionId, user, VersionableEntityAction.Read);
141 componentManager.validateComponentExistence(vspId, vspVersion, componentId, user);
142 QuestionnaireResponse questionnaireResponse = imageManager
143 .getImageQuestionnaire(vspId, vspVersion, componentId, imageId,
146 QuestionnaireResponseDto result = new MapQuestionnaireResponseToQuestionnaireResponseDto()
147 .applyMapping(questionnaireResponse, QuestionnaireResponseDto.class);
148 return Response.ok(result).build();
153 public Response updateQuestionnaire(String questionnaireData, String vspId, String
154 versionId,String componentId,String imageId, String user) {
156 .initMdc(LoggerServiceName.Update_Questionnaire_Compute.toString()
158 Version vspVersion = resolveVspVersion(vspId, null, user, VersionableEntityAction.Write);
159 componentManager.validateComponentExistence(vspId, vspVersion, componentId, user);
160 imageManager.updateImageQuestionnaire(vspId, vspVersion, componentId, imageId,
161 questionnaireData, user);
162 return Response.ok().build();