fcaf038dc089d05f7702cf21f482a52263d867d1
[sdc.git] /
1 package org.openecomp.sdcrests.vsp.rest.services;
2
3
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;
32
33 import java.util.Collection;
34 import javax.inject.Named;
35 import javax.ws.rs.core.Response;
36
37
38 @Named
39 @Service("images")
40 @Scope(value = "prototype")
41 public class ImagesImpl implements Images
42  {
43
44   private ImageManager imageManager = ImageManagerFactory.getInstance().createInterface();
45   private ComponentManager componentManager =
46       ComponentManagerFactory.getInstance().createInterface();
47
48   @Override
49   public Response create(ImageRequestDto request, String vspId, String versionId,String
50       componentId, String user) {
51     MdcUtil.initMdc(LoggerServiceName.Create_Image.toString());
52     ImageEntity image =
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);
61     return Response
62         .ok(createdImage != null ? createdImageDto : null)
63         .build();
64   }
65
66   @Override
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();
72   }
73
74   @Override
75   public Response get(String vspId, String versionId, String componentId, String imageId, String
76       user) {
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);
82
83     return Response.ok(response).build();
84   }
85
86   @Override
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);
93
94     MapImageEntityToImageDto mapper = new MapImageEntityToImageDto();
95     GenericCollectionWrapper<ImageDto> results = new GenericCollectionWrapper<>();
96     for (ImageEntity image : images) {
97       results.add(mapper.applyMapping(image, ImageDto.class));
98     }
99
100     return Response.ok(results).build();
101   }
102
103   @Override
104   public Response delete(String vspId, String versionId, String componentId, String imageId,
105                          String user) {
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();
111   }
112
113   @Override
114   public Response update(ImageRequestDto request, String vspId, String versionId, String
115                          componentId,
116                          String imageId,
117                          String user) {
118     MdcUtil.initMdc(LoggerServiceName.Update_Image.toString());
119     ImageEntity imageEntity = new MapImageRequestDtoToImageEntity().applyMapping(request,
120         ImageEntity.class);
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);
126
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();
134   }
135
136   @Override
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,
144             user);
145
146     QuestionnaireResponseDto result = new MapQuestionnaireResponseToQuestionnaireResponseDto()
147         .applyMapping(questionnaireResponse, QuestionnaireResponseDto.class);
148     return Response.ok(result).build();
149
150   }
151
152   @Override
153   public Response updateQuestionnaire(String questionnaireData, String vspId, String
154       versionId,String componentId,String imageId, String user) {
155     MdcUtil
156         .initMdc(LoggerServiceName.Update_Questionnaire_Compute.toString()
157         );
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();
163   }
164
165 }