push addional 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 / VendorSoftwareProductsImpl.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.openecomp.sdcrests.vsp.rest.services;
22
23 import org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductManager;
24 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.PackageInfo;
25 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
26 import org.openecomp.sdc.vendorsoftwareproduct.types.QuestionnaireResponse;
27 import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse;
28 import org.openecomp.sdc.vendorsoftwareproduct.types.ValidationResponse;
29 import org.openecomp.sdc.vendorsoftwareproduct.types.VersionedVendorSoftwareProductInfo;
30 import org.openecomp.sdc.versioning.dao.types.Version;
31 import org.openecomp.sdcrests.vendorsoftwareproducts.types.PackageInfoDto;
32 import org.openecomp.sdcrests.vendorsoftwareproducts.types.QuestionnaireResponseDto;
33 import org.openecomp.sdcrests.vendorsoftwareproducts.types.UploadFileResponseDto;
34 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ValidationResponseDto;
35 import org.openecomp.sdcrests.vendorsoftwareproducts.types.VersionSoftwareProductActionRequestDto;
36 import org.openecomp.sdcrests.vendorsoftwareproducts.types.VspCreationDto;
37 import org.openecomp.sdcrests.vendorsoftwareproducts.types.VspDescriptionDto;
38 import org.openecomp.sdcrests.vendorsoftwareproducts.types.VspDetailsDto;
39 import org.openecomp.sdcrests.vsp.rest.VendorSoftwareProducts;
40 import org.openecomp.sdcrests.vsp.rest.mapping.MapPackageInfoToPackageInfoDto;
41 import org.openecomp.sdcrests.vsp.rest.mapping.MapQuestionnaireResponseToQuestionnaireResponseDto;
42 import org.openecomp.sdcrests.vsp.rest.mapping.MapUploadFileResponseToUploadFileResponseDto;
43 import org.openecomp.sdcrests.vsp.rest.mapping.MapValidationResponseToDto;
44 import org.openecomp.sdcrests.vsp.rest.mapping.MapVersionedVendorSoftwareProductInfoToVspDetailsDto;
45 import org.openecomp.sdcrests.vsp.rest.mapping.MapVspDescriptionDtoToVspDetails;
46 import org.openecomp.sdcrests.vsp.rest.mapping.MspVspDetailsToVspCreationDto;
47 import org.openecomp.sdcrests.wrappers.GenericCollectionWrapper;
48
49 import org.springframework.beans.factory.annotation.Autowired;
50 import org.springframework.context.annotation.Scope;
51 import org.springframework.stereotype.Service;
52
53 import java.io.File;
54 import java.io.IOException;
55 import java.io.InputStream;
56 import java.util.List;
57 import javax.inject.Named;
58 import javax.ws.rs.core.Response;
59
60 @Named
61 @Service("vendorSoftwareProducts")
62 @Scope(value = "prototype")
63 public class VendorSoftwareProductsImpl implements VendorSoftwareProducts {
64
65   @Autowired
66   private VendorSoftwareProductManager vendorSoftwareProductManager;
67
68   @Override
69   public Response createNewVsp(VspDescriptionDto vspDescriptionDto, String user) {
70     VspDetails vspDetails =
71         new MapVspDescriptionDtoToVspDetails().applyMapping(vspDescriptionDto, VspDetails.class);
72
73     vspDetails = vendorSoftwareProductManager.createNewVsp(vspDetails, user);
74
75     MspVspDetailsToVspCreationDto mapping = new MspVspDetailsToVspCreationDto();
76     VspCreationDto vspCreationDto = mapping.applyMapping(vspDetails, VspCreationDto.class);
77
78     return Response.ok(vspCreationDto).build();
79   }
80
81   @Override
82   public Response getVspList(String versionFilter, String user) {
83     List<VersionedVendorSoftwareProductInfo> vspList =
84         vendorSoftwareProductManager.getVspList(versionFilter, user);
85
86     GenericCollectionWrapper<VspDetailsDto> results = new GenericCollectionWrapper<>();
87     if (!vspList.isEmpty()) {
88       MapVersionedVendorSoftwareProductInfoToVspDetailsDto mapper =
89           new MapVersionedVendorSoftwareProductInfoToVspDetailsDto();
90       for (VersionedVendorSoftwareProductInfo versionedVsp : vspList) {
91         results.add(mapper.applyMapping(versionedVsp, VspDetailsDto.class));
92       }
93     }
94
95     return Response.ok(results).build();
96   }
97
98   @Override
99   public Response getVspDetails(String vspId, String version, String user) {
100     VersionedVendorSoftwareProductInfo vspDetails =
101         vendorSoftwareProductManager.getVspDetails(vspId, Version.valueOf(version), user);
102
103     VspDetailsDto vspDetailsDto = vspDetails == null ? null
104         : new MapVersionedVendorSoftwareProductInfoToVspDetailsDto()
105             .applyMapping(vspDetails, VspDetailsDto.class);
106
107     return Response.ok(vspDetailsDto).build();
108   }
109
110   @Override
111   public Response updateVsp(String vspId, VspDescriptionDto vspDescriptionDto, String user) {
112     VspDetails vspDetails =
113         new MapVspDescriptionDtoToVspDetails().applyMapping(vspDescriptionDto, VspDetails.class);
114     vspDetails.setId(vspId);
115
116     vendorSoftwareProductManager.updateVsp(vspDetails, user);
117
118     return Response.ok().build();
119   }
120
121   @Override
122   public Response deleteVsp(String vspId, String user) {
123     vendorSoftwareProductManager.deleteVsp(vspId, user);
124
125     return Response.ok().build();
126   }
127
128   @Override
129   public Response actOnVendorSoftwareProduct(String vspId,
130                                              VersionSoftwareProductActionRequestDto request,
131                                              String user) throws IOException {
132     switch (request.getAction()) {
133       case Checkout:
134         vendorSoftwareProductManager.checkout(vspId, user);
135         break;
136       case Undo_Checkout:
137         vendorSoftwareProductManager.undoCheckout(vspId, user);
138         break;
139       case Checkin:
140         vendorSoftwareProductManager.checkin(vspId, user);
141         break;
142       case Submit:
143         ValidationResponse validationResponse = vendorSoftwareProductManager.submit(vspId, user);
144         if (!validationResponse.isValid()) {
145           return Response.status(Response.Status.EXPECTATION_FAILED).entity(
146               new MapValidationResponseToDto()
147                   .applyMapping(validationResponse, ValidationResponseDto.class)).build();
148         }
149         break;
150       case Create_Package:
151         PackageInfo packageInfo = vendorSoftwareProductManager.createPackage(vspId, user);
152         return Response.ok(packageInfo == null ? null
153             : new MapPackageInfoToPackageInfoDto().applyMapping(packageInfo, PackageInfoDto.class))
154             .build();
155       default:
156     }
157
158     return Response.ok().build();
159   }
160
161   @Override
162   public Response uploadFile(String uploadVspId, InputStream heatFileToUpload, String user) {
163     UploadFileResponse uploadFileResponse =
164         vendorSoftwareProductManager.uploadFile(uploadVspId, heatFileToUpload, user);
165
166     UploadFileResponseDto uploadFileResponseDto = new MapUploadFileResponseToUploadFileResponseDto()
167         .applyMapping(uploadFileResponse, UploadFileResponseDto.class);
168
169     return Response.ok(uploadFileResponseDto).build();
170   }
171
172   @Override
173   public Response getLatestHeatPackage(String vspId, String user) {
174     File zipFile = vendorSoftwareProductManager.getLatestHeatPackage(vspId, user);
175
176     if (zipFile == null) {
177       return Response.status(Response.Status.NOT_FOUND).build();
178     }
179     Response.ResponseBuilder response = Response.ok(zipFile);
180     response.header("Content-Disposition", "attachment; filename=" + zipFile.getName());
181     return response.build();
182   }
183
184   @Override
185   public Response listPackages(String category, String subCategory, String user) {
186     List<PackageInfo> packageInfoList =
187         vendorSoftwareProductManager.listPackages(category, subCategory);
188
189     GenericCollectionWrapper<PackageInfoDto> results = new GenericCollectionWrapper<>();
190     MapPackageInfoToPackageInfoDto mapper = new MapPackageInfoToPackageInfoDto();
191
192     if (packageInfoList != null) {
193       for (PackageInfo packageInfo : packageInfoList) {
194         results.add(mapper.applyMapping(packageInfo, PackageInfoDto.class));
195       }
196     }
197     return Response.ok(results).build();
198   }
199
200   @Override
201   public Response getTranslatedFile(String vspId, String version, String user) {
202     File zipFile =
203         vendorSoftwareProductManager.getTranslatedFile(vspId, Version.valueOf(version), user);
204
205     Response.ResponseBuilder response = Response.ok(zipFile);
206     if (zipFile == null) {
207       return Response.status(Response.Status.NOT_FOUND).build();
208     }
209     response.header("Content-Disposition", "attachment; filename=" + zipFile.getName());
210     return response.build();
211   }
212
213   @Override
214   public Response getQuestionnaire(String vspId, String version, String user) {
215     QuestionnaireResponse questionnaireResponse =
216         vendorSoftwareProductManager.getVspQuestionnaire(vspId, Version.valueOf(version), user);
217
218     QuestionnaireResponseDto result = new MapQuestionnaireResponseToQuestionnaireResponseDto()
219         .applyMapping(questionnaireResponse, QuestionnaireResponseDto.class);
220     return Response.ok(result).build();
221   }
222
223   @Override
224   public Response updateQuestionnaire(String questionnaireData, String vspId, String user) {
225     vendorSoftwareProductManager.updateVspQuestionnaire(vspId, questionnaireData, user);
226     return Response.ok().build();
227   }
228 }