1 package org.openecomp.sdcrests.vsp.rest.services;
4 import io.swagger.annotations.ApiParam;
5 import org.apache.commons.collections.CollectionUtils;
6 import org.openecomp.sdc.logging.context.MdcUtil;
7 import org.openecomp.sdc.logging.types.LoggerServiceName;
8 import org.openecomp.sdc.vendorsoftwareproduct.ComponentManager;
9 import org.openecomp.sdc.vendorsoftwareproduct.ComponentManagerFactory;
10 import org.openecomp.sdc.vendorsoftwareproduct.ImageManager;
11 import org.openecomp.sdc.vendorsoftwareproduct.ImageManagerFactory;
12 import org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductManager;
13 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ImageEntity;
14 import org.openecomp.sdc.vendorsoftwareproduct.types.CompositionEntityResponse;
15 import org.openecomp.sdc.vendorsoftwareproduct.types.QuestionnaireResponse;
16 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityValidationData;
17 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.Image;
18 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.ImageData;
19 import org.openecomp.sdc.versioning.dao.types.Version;
20 import org.openecomp.sdc.versioning.types.VersionableEntityAction;
21 import org.openecomp.sdcrests.vendorsoftwareproducts.types.CompositionEntityResponseDto;
22 import org.openecomp.sdcrests.vendorsoftwareproducts.types.CompositionEntityValidationDataDto;
23 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ImageCreationDto;
24 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ImageDto;
25 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ImageRequestDto;
26 import org.openecomp.sdcrests.vendorsoftwareproducts.types.QuestionnaireResponseDto;
27 import org.openecomp.sdcrests.vsp.rest.Images;
28 import org.openecomp.sdcrests.vsp.rest.mapping.MapCompositionEntityResponseToDto;
29 import org.openecomp.sdcrests.vsp.rest.mapping.MapCompositionEntityValidationDataToDto;
30 import org.openecomp.sdcrests.vsp.rest.mapping.MapImageDataToImageDto;
31 import org.openecomp.sdcrests.vsp.rest.mapping.MapImageEntityToImageCreationDto;
32 import org.openecomp.sdcrests.vsp.rest.mapping.MapImageEntityToImageDto;
33 import org.openecomp.sdcrests.vsp.rest.mapping.MapImageRequestDtoToImageEntity;
34 import org.openecomp.sdcrests.vsp.rest.mapping.MapQuestionnaireResponseToQuestionnaireResponseDto;
35 import org.openecomp.sdcrests.wrappers.GenericCollectionWrapper;
36 import org.springframework.beans.factory.annotation.Autowired;
37 import org.springframework.context.annotation.Scope;
38 import org.springframework.stereotype.Service;
40 import java.util.Collection;
41 import javax.inject.Named;
42 import javax.validation.constraints.NotNull;
43 import javax.validation.constraints.Pattern;
44 import javax.ws.rs.HeaderParam;
45 import javax.ws.rs.core.Response;
50 @Scope(value = "prototype")
51 public class ImagesImpl implements Images
54 private ImageManager imageManager = ImageManagerFactory.getInstance().createInterface();
55 private ComponentManager componentManager =
56 ComponentManagerFactory.getInstance().createInterface();
59 public Response create(ImageRequestDto request, String vspId, String versionId,String
60 componentId, String user) {
61 MdcUtil.initMdc(LoggerServiceName.Create_Image.toString());
63 new MapImageRequestDtoToImageEntity().applyMapping(request, ImageEntity.class);
64 image.setVspId(vspId);
65 image.setComponentId(componentId);
66 image.setVersion(resolveVspVersion(vspId, null, user, VersionableEntityAction.Write));
67 componentManager.validateComponentExistence(vspId, image.getVersion(), componentId, user);
68 ImageEntity createdImage = imageManager.createImage(image, user);
69 MapImageEntityToImageCreationDto mapping = new MapImageEntityToImageCreationDto();
70 ImageCreationDto createdImageDto = mapping.applyMapping(createdImage, ImageCreationDto.class);
72 .ok(createdImage != null ? createdImageDto : null)
77 public Response getImageSchema(String vspId, String versionId, String componentId, String user) {
78 MdcUtil.initMdc(LoggerServiceName.GET_Image_Schema.toString());
79 CompositionEntityResponse<Image> response =
80 imageManager.getImageSchema(vspId, user);
81 return Response.ok(response).build();
85 public Response get(String vspId, String versionId, String componentId, String imageId, String
87 MdcUtil.initMdc(LoggerServiceName.GET_Image.toString());
88 Version vspVersion = resolveVspVersion(vspId, versionId, user, VersionableEntityAction.Read);
89 componentManager.validateComponentExistence(vspId, vspVersion, componentId, user);
90 CompositionEntityResponse<Image> response = imageManager.getImage(vspId,
91 vspVersion, componentId, imageId, user);
93 return Response.ok(response).build();
97 public Response list(String vspId, String versionId, String componentId, String user) {
98 MdcUtil.initMdc(LoggerServiceName.List_Images.toString());
99 Version vspVersion = resolveVspVersion(vspId, versionId, user, VersionableEntityAction.Read);
100 componentManager.validateComponentExistence(vspId, vspVersion, componentId, user);
101 Collection<ImageEntity> images =
102 imageManager.listImages(vspId, vspVersion, componentId, user);
104 MapImageEntityToImageDto mapper = new MapImageEntityToImageDto();
105 GenericCollectionWrapper<ImageDto> results = new GenericCollectionWrapper<>();
106 for (ImageEntity image : images) {
107 results.add(mapper.applyMapping(image, ImageDto.class));
110 return Response.ok(results).build();
114 public Response delete(String vspId, String versionId, String componentId, String imageId,
116 MdcUtil.initMdc(LoggerServiceName.Delete_Image.toString());
117 Version vspVersion = resolveVspVersion(vspId, null, user, VersionableEntityAction.Write);
118 componentManager.validateComponentExistence(vspId, vspVersion, componentId, user);
119 imageManager.deleteImage(vspId, vspVersion, componentId, imageId, user);
120 return Response.ok().build();
124 public Response update(ImageRequestDto request, String vspId, String versionId, String
128 MdcUtil.initMdc(LoggerServiceName.Update_Image.toString());
129 ImageEntity imageEntity = new MapImageRequestDtoToImageEntity().applyMapping(request,
131 imageEntity.setVspId(vspId);
132 imageEntity.setVersion(resolveVspVersion(vspId, null, user, VersionableEntityAction.Write));
133 imageEntity.setComponentId(componentId);
134 imageEntity.setId(imageId);
135 componentManager.validateComponentExistence(vspId, imageEntity.getVersion(), componentId, user);
137 CompositionEntityValidationData validationData =
138 imageManager.updateImage(imageEntity, user);
139 return validationData != null && CollectionUtils.isNotEmpty(validationData.getErrors())
140 ? Response.status(Response.Status.EXPECTATION_FAILED).entity(
141 new MapCompositionEntityValidationDataToDto()
142 .applyMapping(validationData, CompositionEntityValidationDataDto.class)).build() :
143 Response.ok().build();
147 public Response getQuestionnaire(String vspId, String versionId, String componentId, String
148 imageId, String user) {
149 MdcUtil.initMdc(LoggerServiceName.Get_Questionnaire_Compute.toString());
150 Version vspVersion = resolveVspVersion(vspId, versionId, user, VersionableEntityAction.Read);
151 componentManager.validateComponentExistence(vspId, vspVersion, componentId, user);
152 QuestionnaireResponse questionnaireResponse = imageManager
153 .getImageQuestionnaire(vspId, vspVersion, componentId, imageId,
156 QuestionnaireResponseDto result = new MapQuestionnaireResponseToQuestionnaireResponseDto()
157 .applyMapping(questionnaireResponse, QuestionnaireResponseDto.class);
158 return Response.ok(result).build();
163 public Response updateQuestionnaire(String questionnaireData, String vspId, String
164 versionId,String componentId,String imageId, String user) {
166 .initMdc(LoggerServiceName.Update_Questionnaire_Compute.toString()
168 Version vspVersion = resolveVspVersion(vspId, null, user, VersionableEntityAction.Write);
169 componentManager.validateComponentExistence(vspId, vspVersion, componentId, user);
170 imageManager.updateImageQuestionnaire(vspId, vspVersion, componentId, imageId,
171 questionnaireData, user);
172 return Response.ok().build();