[SDC] Onboarding 1710 rebase.
[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 / ImagesImpl.java
1 package org.openecomp.sdcrests.vsp.rest.services;
2
3
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;
39
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;
46
47
48 @Named
49 @Service("images")
50 @Scope(value = "prototype")
51 public class ImagesImpl implements Images
52  {
53
54   private ImageManager imageManager = ImageManagerFactory.getInstance().createInterface();
55   private ComponentManager componentManager =
56       ComponentManagerFactory.getInstance().createInterface();
57
58   @Override
59   public Response create(ImageRequestDto request, String vspId, String versionId,String
60       componentId, String user) {
61     MdcUtil.initMdc(LoggerServiceName.Create_Image.toString());
62     ImageEntity image =
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);
71     return Response
72         .ok(createdImage != null ? createdImageDto : null)
73         .build();
74   }
75
76   @Override
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();
82   }
83
84   @Override
85   public Response get(String vspId, String versionId, String componentId, String imageId, String
86       user) {
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);
92
93     return Response.ok(response).build();
94   }
95
96   @Override
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);
103
104     MapImageEntityToImageDto mapper = new MapImageEntityToImageDto();
105     GenericCollectionWrapper<ImageDto> results = new GenericCollectionWrapper<>();
106     for (ImageEntity image : images) {
107       results.add(mapper.applyMapping(image, ImageDto.class));
108     }
109
110     return Response.ok(results).build();
111   }
112
113   @Override
114   public Response delete(String vspId, String versionId, String componentId, String imageId,
115                          String user) {
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();
121   }
122
123   @Override
124   public Response update(ImageRequestDto request, String vspId, String versionId, String
125                          componentId,
126                          String imageId,
127                          String user) {
128     MdcUtil.initMdc(LoggerServiceName.Update_Image.toString());
129     ImageEntity imageEntity = new MapImageRequestDtoToImageEntity().applyMapping(request,
130         ImageEntity.class);
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);
136
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();
144   }
145
146   @Override
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,
154             user);
155
156     QuestionnaireResponseDto result = new MapQuestionnaireResponseToQuestionnaireResponseDto()
157         .applyMapping(questionnaireResponse, QuestionnaireResponseDto.class);
158     return Response.ok(result).build();
159
160   }
161
162   @Override
163   public Response updateQuestionnaire(String questionnaireData, String vspId, String
164       versionId,String componentId,String imageId, String user) {
165     MdcUtil
166         .initMdc(LoggerServiceName.Update_Questionnaire_Compute.toString()
167         );
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();
173   }
174
175 }