b777ba881ce934e062b812b44a8c79f43bfb852c
[sdc.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2019 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.apache.commons.collections4.CollectionUtils;
24 import org.openecomp.sdc.vendorsoftwareproduct.DeploymentFlavorManager;
25 import org.openecomp.sdc.vendorsoftwareproduct.DeploymentFlavorManagerFactory;
26 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.DeploymentFlavorEntity;
27 import org.openecomp.sdc.vendorsoftwareproduct.types.CompositionEntityResponse;
28 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityValidationData;
29 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.DeploymentFlavor;
30 import org.openecomp.sdc.versioning.dao.types.Version;
31 import org.openecomp.sdcrests.vendorsoftwareproducts.types.*;
32 import org.openecomp.sdcrests.vsp.rest.DeploymentFlavors;
33 import org.openecomp.sdcrests.vsp.rest.mapping.*;
34 import org.openecomp.sdcrests.wrappers.GenericCollectionWrapper;
35 import org.springframework.context.annotation.Scope;
36 import org.springframework.stereotype.Service;
37
38 import javax.inject.Named;
39 import javax.ws.rs.core.Response;
40 import java.util.Collection;
41
42 @Named
43 @Service("deploymentFlavors")
44 @Scope(value = "prototype")
45 public class DeploymentFlavorsImpl implements DeploymentFlavors {
46   private DeploymentFlavorManager deploymentFlavorManager =
47       DeploymentFlavorManagerFactory.getInstance().createInterface();
48
49   @Override
50   public Response create(DeploymentFlavorRequestDto request, String vspId, String versionId,
51                          String user) {
52     DeploymentFlavorEntity deploymentFlavorEntity =
53         new MapDeploymentFlavorRequestDtoToDeploymentFlavorEntity()
54             .applyMapping(request, DeploymentFlavorEntity.class);
55     deploymentFlavorEntity.setVspId(vspId);
56     deploymentFlavorEntity.setVersion(new Version(versionId));
57     DeploymentFlavorEntity createdDeploymentFlavor =
58         deploymentFlavorManager.createDeploymentFlavor(deploymentFlavorEntity);
59     MapDeploymentFlavorEntityToDeploymentFlavorCreationDto mapping =
60         new MapDeploymentFlavorEntityToDeploymentFlavorCreationDto();
61     DeploymentFlavorCreationDto deploymentFlavorCreatedDto = mapping.applyMapping
62         (createdDeploymentFlavor, DeploymentFlavorCreationDto.class);
63     return Response
64         .ok(createdDeploymentFlavor != null ? deploymentFlavorCreatedDto : null)
65         .build();
66   }
67
68   @Override
69   public Response list(String vspId, String versionId, String user) {
70     Collection<DeploymentFlavorEntity> deploymentFlavors =
71         deploymentFlavorManager.listDeploymentFlavors(vspId, new Version(versionId));
72
73     MapDeploymentFlavorEntityDeploymentFlavorToListResponse mapper = new
74         MapDeploymentFlavorEntityDeploymentFlavorToListResponse();
75     GenericCollectionWrapper<DeploymentFlavorListResponseDto> results =
76         new GenericCollectionWrapper<>();
77     for (DeploymentFlavorEntity deploymentFlavor : deploymentFlavors) {
78       results.add(mapper.applyMapping(deploymentFlavor, DeploymentFlavorListResponseDto.class));
79     }
80     return Response.ok(results).build();
81   }
82
83   @Override
84   public Response get(String vspId, String versionId, String deploymentFlavorId, String user) {
85     CompositionEntityResponse<DeploymentFlavor> response = deploymentFlavorManager
86         .getDeploymentFlavor(vspId, new Version(versionId), deploymentFlavorId);
87
88     CompositionEntityResponseDto<DeploymentFlavorDto> responseDto = new
89         CompositionEntityResponseDto<>();
90     new MapCompositionEntityResponseToDto<>(new MapDeploymentFlavorToDeploymentDto(),
91         DeploymentFlavorDto.class)
92         .doMapping(response, responseDto);
93     return Response.ok(responseDto).build();
94   }
95
96   @Override
97   public Response getSchema(String vspId, String versionId, String user) {
98     CompositionEntityResponse<DeploymentFlavor> response = deploymentFlavorManager
99         .getDeploymentFlavorSchema(vspId, new Version(versionId));
100     return Response.ok(response).build();
101   }
102
103   @Override
104   public Response delete(String vspId, String versionId, String deploymentFlavorId, String user) {
105     Version version = new Version(versionId);
106     deploymentFlavorManager.deleteDeploymentFlavor(vspId, version, deploymentFlavorId);
107     return Response.ok().build();
108   }
109
110   @Override
111   public Response update(DeploymentFlavorRequestDto request, String vspId, String versionId,
112                          String deploymentFlavorId, String user) {
113     DeploymentFlavorEntity deploymentFlavorEntity =
114         new MapDeploymentFlavorRequestDtoToDeploymentFlavorEntity().applyMapping(request,
115             DeploymentFlavorEntity.class);
116     deploymentFlavorEntity.setVspId(vspId);
117     deploymentFlavorEntity.setVersion(new Version(versionId));
118     deploymentFlavorEntity.setId(deploymentFlavorId);
119
120     CompositionEntityValidationData validationData =
121         deploymentFlavorManager.updateDeploymentFlavor(deploymentFlavorEntity);
122     return validationData != null && CollectionUtils.isNotEmpty(validationData.getErrors())
123         ? Response.status(Response.Status.EXPECTATION_FAILED).entity(
124         new MapCompositionEntityValidationDataToDto().applyMapping(validationData,
125             CompositionEntityValidationDataDto.class)).build() : Response.ok().build();
126   }
127 }