2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.openecomp.sdcrests.vsp.rest.services;
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;
49 import org.springframework.beans.factory.annotation.Autowired;
50 import org.springframework.context.annotation.Scope;
51 import org.springframework.stereotype.Service;
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;
61 @Service("vendorSoftwareProducts")
62 @Scope(value = "prototype")
63 public class VendorSoftwareProductsImpl implements VendorSoftwareProducts {
66 private VendorSoftwareProductManager vendorSoftwareProductManager;
69 public Response createNewVsp(VspDescriptionDto vspDescriptionDto, String user) {
70 VspDetails vspDetails =
71 new MapVspDescriptionDtoToVspDetails().applyMapping(vspDescriptionDto, VspDetails.class);
73 vspDetails = vendorSoftwareProductManager.createNewVsp(vspDetails, user);
75 MspVspDetailsToVspCreationDto mapping = new MspVspDetailsToVspCreationDto();
76 VspCreationDto vspCreationDto = mapping.applyMapping(vspDetails, VspCreationDto.class);
78 return Response.ok(vspCreationDto).build();
82 public Response getVspList(String versionFilter, String user) {
83 List<VersionedVendorSoftwareProductInfo> vspList =
84 vendorSoftwareProductManager.getVspList(versionFilter, user);
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));
95 return Response.ok(results).build();
99 public Response getVspDetails(String vspId, String version, String user) {
100 VersionedVendorSoftwareProductInfo vspDetails =
101 vendorSoftwareProductManager.getVspDetails(vspId, Version.valueOf(version), user);
103 VspDetailsDto vspDetailsDto = vspDetails == null ? null
104 : new MapVersionedVendorSoftwareProductInfoToVspDetailsDto()
105 .applyMapping(vspDetails, VspDetailsDto.class);
107 return Response.ok(vspDetailsDto).build();
111 public Response updateVsp(String vspId, VspDescriptionDto vspDescriptionDto, String user) {
112 VspDetails vspDetails =
113 new MapVspDescriptionDtoToVspDetails().applyMapping(vspDescriptionDto, VspDetails.class);
114 vspDetails.setId(vspId);
116 vendorSoftwareProductManager.updateVsp(vspDetails, user);
118 return Response.ok().build();
122 public Response deleteVsp(String vspId, String user) {
123 vendorSoftwareProductManager.deleteVsp(vspId, user);
125 return Response.ok().build();
129 public Response actOnVendorSoftwareProduct(String vspId,
130 VersionSoftwareProductActionRequestDto request,
131 String user) throws IOException {
132 switch (request.getAction()) {
134 vendorSoftwareProductManager.checkout(vspId, user);
137 vendorSoftwareProductManager.undoCheckout(vspId, user);
140 vendorSoftwareProductManager.checkin(vspId, user);
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();
151 PackageInfo packageInfo = vendorSoftwareProductManager.createPackage(vspId, user);
152 return Response.ok(packageInfo == null ? null
153 : new MapPackageInfoToPackageInfoDto().applyMapping(packageInfo, PackageInfoDto.class))
158 return Response.ok().build();
162 public Response uploadFile(String uploadVspId, InputStream heatFileToUpload, String user) {
163 UploadFileResponse uploadFileResponse =
164 vendorSoftwareProductManager.uploadFile(uploadVspId, heatFileToUpload, user);
166 UploadFileResponseDto uploadFileResponseDto = new MapUploadFileResponseToUploadFileResponseDto()
167 .applyMapping(uploadFileResponse, UploadFileResponseDto.class);
169 return Response.ok(uploadFileResponseDto).build();
173 public Response getLatestHeatPackage(String vspId, String user) {
174 File zipFile = vendorSoftwareProductManager.getLatestHeatPackage(vspId, user);
176 if (zipFile == null) {
177 return Response.status(Response.Status.NOT_FOUND).build();
179 Response.ResponseBuilder response = Response.ok(zipFile);
180 response.header("Content-Disposition", "attachment; filename=" + zipFile.getName());
181 return response.build();
185 public Response listPackages(String category, String subCategory, String user) {
186 List<PackageInfo> packageInfoList =
187 vendorSoftwareProductManager.listPackages(category, subCategory);
189 GenericCollectionWrapper<PackageInfoDto> results = new GenericCollectionWrapper<>();
190 MapPackageInfoToPackageInfoDto mapper = new MapPackageInfoToPackageInfoDto();
192 if (packageInfoList != null) {
193 for (PackageInfo packageInfo : packageInfoList) {
194 results.add(mapper.applyMapping(packageInfo, PackageInfoDto.class));
197 return Response.ok(results).build();
201 public Response getTranslatedFile(String vspId, String version, String user) {
203 vendorSoftwareProductManager.getTranslatedFile(vspId, Version.valueOf(version), user);
205 Response.ResponseBuilder response = Response.ok(zipFile);
206 if (zipFile == null) {
207 return Response.status(Response.Status.NOT_FOUND).build();
209 response.header("Content-Disposition", "attachment; filename=" + zipFile.getName());
210 return response.build();
214 public Response getQuestionnaire(String vspId, String version, String user) {
215 QuestionnaireResponse questionnaireResponse =
216 vendorSoftwareProductManager.getVspQuestionnaire(vspId, Version.valueOf(version), user);
218 QuestionnaireResponseDto result = new MapQuestionnaireResponseToQuestionnaireResponseDto()
219 .applyMapping(questionnaireResponse, QuestionnaireResponseDto.class);
220 return Response.ok(result).build();
224 public Response updateQuestionnaire(String questionnaireData, String vspId, String user) {
225 vendorSoftwareProductManager.updateVspQuestionnaire(vspId, questionnaireData, user);
226 return Response.ok().build();