13851e72e1fa944d5c76477fe1e17bf9aea38cfc
[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 final DeploymentFlavorManager deploymentFlavorManager;
47
48   public DeploymentFlavorsImpl() {
49     this.deploymentFlavorManager =
50         DeploymentFlavorManagerFactory.getInstance().createInterface();
51   }
52
53   public DeploymentFlavorsImpl(DeploymentFlavorManager deploymentFlavorManager) {
54     this.deploymentFlavorManager = deploymentFlavorManager;
55   }
56
57   @Override
58   public Response create(DeploymentFlavorRequestDto request, String vspId, String versionId,
59                          String user) {
60     DeploymentFlavorEntity deploymentFlavorEntity =
61         new MapDeploymentFlavorRequestDtoToDeploymentFlavorEntity()
62             .applyMapping(request, DeploymentFlavorEntity.class);
63     deploymentFlavorEntity.setVspId(vspId);
64     deploymentFlavorEntity.setVersion(new Version(versionId));
65     DeploymentFlavorEntity createdDeploymentFlavor =
66         deploymentFlavorManager.createDeploymentFlavor(deploymentFlavorEntity);
67     MapDeploymentFlavorEntityToDeploymentFlavorCreationDto mapping =
68         new MapDeploymentFlavorEntityToDeploymentFlavorCreationDto();
69     DeploymentFlavorCreationDto deploymentFlavorCreatedDto = mapping.applyMapping
70         (createdDeploymentFlavor, DeploymentFlavorCreationDto.class);
71     return Response
72         .ok(createdDeploymentFlavor != null ? deploymentFlavorCreatedDto : null)
73         .build();
74   }
75
76   @Override
77   public Response list(String vspId, String versionId, String user) {
78     Collection<DeploymentFlavorEntity> deploymentFlavors =
79         deploymentFlavorManager.listDeploymentFlavors(vspId, new Version(versionId));
80
81     MapDeploymentFlavorEntityDeploymentFlavorToListResponse mapper = new
82         MapDeploymentFlavorEntityDeploymentFlavorToListResponse();
83     GenericCollectionWrapper<DeploymentFlavorListResponseDto> results =
84         new GenericCollectionWrapper<>();
85     for (DeploymentFlavorEntity deploymentFlavor : deploymentFlavors) {
86       results.add(mapper.applyMapping(deploymentFlavor, DeploymentFlavorListResponseDto.class));
87     }
88     return Response.ok(results).build();
89   }
90
91   @Override
92   public Response get(String vspId, String versionId, String deploymentFlavorId, String user) {
93     CompositionEntityResponse<DeploymentFlavor> response = deploymentFlavorManager
94         .getDeploymentFlavor(vspId, new Version(versionId), deploymentFlavorId);
95
96     CompositionEntityResponseDto<DeploymentFlavorDto> responseDto = new
97         CompositionEntityResponseDto<>();
98     new MapCompositionEntityResponseToDto<>(new MapDeploymentFlavorToDeploymentDto(),
99         DeploymentFlavorDto.class)
100         .doMapping(response, responseDto);
101     return Response.ok(responseDto).build();
102   }
103
104   @Override
105   public Response getSchema(String vspId, String versionId, String user) {
106     CompositionEntityResponse<DeploymentFlavor> response = deploymentFlavorManager
107         .getDeploymentFlavorSchema(vspId, new Version(versionId));
108     return Response.ok(response).build();
109   }
110
111   @Override
112   public Response delete(String vspId, String versionId, String deploymentFlavorId, String user) {
113     Version version = new Version(versionId);
114     deploymentFlavorManager.deleteDeploymentFlavor(vspId, version, deploymentFlavorId);
115     return Response.ok().build();
116   }
117
118   @Override
119   public Response update(DeploymentFlavorRequestDto request, String vspId, String versionId,
120                          String deploymentFlavorId, String user) {
121     DeploymentFlavorEntity deploymentFlavorEntity =
122         new MapDeploymentFlavorRequestDtoToDeploymentFlavorEntity().applyMapping(request,
123             DeploymentFlavorEntity.class);
124     deploymentFlavorEntity.setVspId(vspId);
125     deploymentFlavorEntity.setVersion(new Version(versionId));
126     deploymentFlavorEntity.setId(deploymentFlavorId);
127
128     CompositionEntityValidationData validationData =
129         deploymentFlavorManager.updateDeploymentFlavor(deploymentFlavorEntity);
130     return validationData != null && CollectionUtils.isNotEmpty(validationData.getErrors())
131         ? Response.status(Response.Status.EXPECTATION_FAILED).entity(
132         new MapCompositionEntityValidationDataToDto().applyMapping(validationData,
133             CompositionEntityValidationDataDto.class)).build() : Response.ok().build();
134   }
135 }