Removed reference to MDC for logging
[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 org.apache.commons.collections.CollectionUtils;
5 import org.openecomp.sdc.vendorsoftwareproduct.ComponentManager;
6 import org.openecomp.sdc.vendorsoftwareproduct.ComponentManagerFactory;
7 import org.openecomp.sdc.vendorsoftwareproduct.ImageManager;
8 import org.openecomp.sdc.vendorsoftwareproduct.ImageManagerFactory;
9 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ImageEntity;
10 import org.openecomp.sdc.vendorsoftwareproduct.types.CompositionEntityResponse;
11 import org.openecomp.sdc.vendorsoftwareproduct.types.QuestionnaireResponse;
12 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityValidationData;
13 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.Image;
14 import org.openecomp.sdc.versioning.dao.types.Version;
15 import org.openecomp.sdcrests.vendorsoftwareproducts.types.CompositionEntityValidationDataDto;
16 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ImageCreationDto;
17 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ImageDto;
18 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ImageRequestDto;
19 import org.openecomp.sdcrests.vendorsoftwareproducts.types.QuestionnaireResponseDto;
20 import org.openecomp.sdcrests.vsp.rest.Images;
21 import org.openecomp.sdcrests.vsp.rest.mapping.MapCompositionEntityValidationDataToDto;
22 import org.openecomp.sdcrests.vsp.rest.mapping.MapImageEntityToImageCreationDto;
23 import org.openecomp.sdcrests.vsp.rest.mapping.MapImageEntityToImageDto;
24 import org.openecomp.sdcrests.vsp.rest.mapping.MapImageRequestDtoToImageEntity;
25 import org.openecomp.sdcrests.vsp.rest.mapping.MapQuestionnaireResponseToQuestionnaireResponseDto;
26 import org.openecomp.sdcrests.wrappers.GenericCollectionWrapper;
27 import org.springframework.context.annotation.Scope;
28 import org.springframework.stereotype.Service;
29
30 import javax.inject.Named;
31 import javax.ws.rs.core.Response;
32 import java.util.Collection;
33
34
35 @Named
36 @Service("images")
37 @Scope(value = "prototype")
38 public class ImagesImpl implements Images {
39
40   private ImageManager imageManager = ImageManagerFactory.getInstance().createInterface();
41   private ComponentManager componentManager =
42       ComponentManagerFactory.getInstance().createInterface();
43
44   @Override
45   public Response create(ImageRequestDto request, String vspId, String versionId,
46                          String componentId, String user) {
47     ImageEntity image =
48         new MapImageRequestDtoToImageEntity().applyMapping(request, ImageEntity.class);
49     image.setVspId(vspId);
50     image.setComponentId(componentId);
51     image.setVersion(new Version(versionId));
52     componentManager.validateComponentExistence(vspId, image.getVersion(), componentId);
53     ImageEntity createdImage = imageManager.createImage(image);
54     MapImageEntityToImageCreationDto mapping = new MapImageEntityToImageCreationDto();
55     ImageCreationDto createdImageDto = mapping.applyMapping(createdImage, ImageCreationDto.class);
56     return Response
57         .ok(createdImage != null ? createdImageDto : null)
58         .build();
59   }
60
61   @Override
62   public Response getImageSchema(String vspId, String versionId, String componentId, String user) {
63     CompositionEntityResponse<Image> response = imageManager.getImageSchema(vspId);
64     return Response.ok(response).build();
65   }
66
67   @Override
68   public Response get(String vspId, String versionId, String componentId, String imageId,
69                       String user) {
70     Version version = new Version(versionId);
71     componentManager.validateComponentExistence(vspId, version, componentId);
72     CompositionEntityResponse<Image> response =
73         imageManager.getImage(vspId, version, componentId, imageId);
74
75     return Response.ok(response).build();
76   }
77
78   @Override
79   public Response list(String vspId, String versionId, String componentId, String user) {
80     Version vspVersion = new Version(versionId);
81     componentManager.validateComponentExistence(vspId, vspVersion, componentId);
82     Collection<ImageEntity> images = imageManager.listImages(vspId, vspVersion, componentId);
83
84     MapImageEntityToImageDto mapper = new MapImageEntityToImageDto();
85     GenericCollectionWrapper<ImageDto> results = new GenericCollectionWrapper<>();
86     for (ImageEntity image : images) {
87       results.add(mapper.applyMapping(image, ImageDto.class));
88     }
89
90     return Response.ok(results).build();
91   }
92
93   @Override
94   public Response delete(String vspId, String versionId, String componentId, String imageId,
95                          String user) {
96     Version vspVersion = new Version(versionId);
97     componentManager.validateComponentExistence(vspId, vspVersion, componentId);
98     imageManager.deleteImage(vspId, vspVersion, componentId, imageId);
99     return Response.ok().build();
100   }
101
102   @Override
103   public Response update(ImageRequestDto request, String vspId, String versionId,
104                          String componentId, String imageId, String user) {
105     ImageEntity imageEntity = new MapImageRequestDtoToImageEntity().applyMapping(request,
106         ImageEntity.class);
107     imageEntity.setVspId(vspId);
108     imageEntity.setVersion(new Version(versionId));
109     imageEntity.setComponentId(componentId);
110     imageEntity.setId(imageId);
111     componentManager.validateComponentExistence(vspId, imageEntity.getVersion(), componentId);
112
113     CompositionEntityValidationData validationData = imageManager.updateImage(imageEntity);
114     return validationData != null && CollectionUtils.isNotEmpty(validationData.getErrors())
115         ? Response.status(Response.Status.EXPECTATION_FAILED).entity(
116         new MapCompositionEntityValidationDataToDto()
117             .applyMapping(validationData, CompositionEntityValidationDataDto.class)).build() :
118         Response.ok().build();
119   }
120
121   @Override
122   public Response getQuestionnaire(String vspId, String versionId, String componentId,
123                                    String imageId, String user) {
124     Version vspVersion = new Version(versionId);
125     componentManager.validateComponentExistence(vspId, vspVersion, componentId);
126     QuestionnaireResponse questionnaireResponse =
127         imageManager.getImageQuestionnaire(vspId, vspVersion, componentId, imageId);
128
129     QuestionnaireResponseDto result = new MapQuestionnaireResponseToQuestionnaireResponseDto()
130         .applyMapping(questionnaireResponse, QuestionnaireResponseDto.class);
131     return Response.ok(result).build();
132
133   }
134
135   @Override
136   public Response updateQuestionnaire(String questionnaireData, String vspId, String versionId,
137                                       String componentId, String imageId, String user) {
138     Version version = new Version(versionId);
139     componentManager.validateComponentExistence(vspId, version, componentId);
140     imageManager.updateImageQuestionnaire(vspId, version, componentId, imageId, questionnaireData);
141     return Response.ok().build();
142   }
143
144 }