2  * ============LICENSE_START=======================================================
 
   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
 
  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.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;
 
  38 import javax.inject.Named;
 
  39 import javax.ws.rs.core.Response;
 
  40 import java.util.Collection;
 
  43 @Service("deploymentFlavors")
 
  44 @Scope(value = "prototype")
 
  45 public class DeploymentFlavorsImpl implements DeploymentFlavors {
 
  46   private DeploymentFlavorManager deploymentFlavorManager =
 
  47       DeploymentFlavorManagerFactory.getInstance().createInterface();
 
  50   public Response create(DeploymentFlavorRequestDto request, String vspId, String versionId,
 
  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);
 
  64         .ok(createdDeploymentFlavor != null ? deploymentFlavorCreatedDto : null)
 
  69   public Response list(String vspId, String versionId, String user) {
 
  70     Collection<DeploymentFlavorEntity> deploymentFlavors =
 
  71         deploymentFlavorManager.listDeploymentFlavors(vspId, new Version(versionId));
 
  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));
 
  80     return Response.ok(results).build();
 
  84   public Response get(String vspId, String versionId, String deploymentFlavorId, String user) {
 
  85     CompositionEntityResponse<DeploymentFlavor> response = deploymentFlavorManager
 
  86         .getDeploymentFlavor(vspId, new Version(versionId), deploymentFlavorId);
 
  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();
 
  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();
 
 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();
 
 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);
 
 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();