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