Add collaboration feature
[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 / ComponentDependenciesImpl.java
1 package org.openecomp.sdcrests.vsp.rest.services;
2
3 import org.openecomp.sdc.logging.context.MdcUtil;
4 import org.openecomp.sdc.logging.types.LoggerServiceName;
5 import org.openecomp.sdc.vendorsoftwareproduct.ComponentDependencyModelManager;
6 import org.openecomp.sdc.vendorsoftwareproduct.ComponentDependencyModelManagerFactory;
7 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentDependencyModelEntity;
8 import org.openecomp.sdc.versioning.dao.types.Version;
9 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ComponentDependencyCreationDto;
10 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ComponentDependencyModel;
11 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ComponentDependencyResponseDto;
12 import org.openecomp.sdcrests.vsp.rest.ComponentDependencies;
13 import org.openecomp.sdcrests.vsp.rest.mapping.MapComponentDependencyEntityToCreationDto;
14 import org.openecomp.sdcrests.vsp.rest.mapping.MapComponentDependencyEntityToDto;
15 import org.openecomp.sdcrests.vsp.rest.mapping.MapComponentDependencyModelRequestToEntity;
16 import org.openecomp.sdcrests.wrappers.GenericCollectionWrapper;
17 import org.springframework.context.annotation.Scope;
18 import org.springframework.stereotype.Service;
19
20 import javax.inject.Named;
21 import javax.ws.rs.core.Response;
22 import java.util.ArrayList;
23 import java.util.Collection;
24 import java.util.List;
25
26 @Named
27 @Service("componentDependencies")
28 @Scope(value = "prototype")
29 public class ComponentDependenciesImpl implements ComponentDependencies {
30
31   private ComponentDependencyModelManager componentDependencyModelManager =
32       ComponentDependencyModelManagerFactory.getInstance().createInterface();
33
34   @Override
35   public Response create(ComponentDependencyModel request, String vspId, String versionId,
36                          String user) {
37     MdcUtil.initMdc(LoggerServiceName.CREATE_COMPONENT_DEPENDENCY_MODEL.toString());
38     List<ComponentDependencyModelEntity> modelEntities = new
39         ArrayList<ComponentDependencyModelEntity>();
40
41     final Version version = new Version(versionId);
42
43     ComponentDependencyModelEntity modelEntity =
44         new MapComponentDependencyModelRequestToEntity().applyMapping(request,
45             ComponentDependencyModelEntity.class);
46
47     modelEntity.setVspId(vspId);
48     modelEntity.setVersion(version);
49
50     ComponentDependencyModelEntity componentDependency =
51         componentDependencyModelManager.createComponentDependency(modelEntity, vspId, version);
52
53     MapComponentDependencyEntityToCreationDto mapping =
54         new MapComponentDependencyEntityToCreationDto();
55     ComponentDependencyCreationDto createdComponentDependencyDto = mapping.applyMapping(
56         componentDependency, ComponentDependencyCreationDto.class);
57     return Response.ok(componentDependency != null ? createdComponentDependencyDto : null)
58         .build();
59   }
60
61   @Override
62   public Response list(String vspId, String versionId, String user) {
63     MdcUtil.initMdc(LoggerServiceName.GET_LIST_COMPONENT_DEPENDENCY.toString());
64     Version vspVersion = new Version(versionId);
65
66     Collection<ComponentDependencyModelEntity> componentDependencies =
67         componentDependencyModelManager.list(vspId, vspVersion);
68
69     MapComponentDependencyEntityToDto mapper = new MapComponentDependencyEntityToDto();
70     GenericCollectionWrapper<ComponentDependencyResponseDto> results = new GenericCollectionWrapper
71         <ComponentDependencyResponseDto>();
72     for (ComponentDependencyModelEntity entity : componentDependencies) {
73       results.add(mapper.applyMapping(entity, ComponentDependencyResponseDto.class));
74     }
75
76     return Response.ok(results).build();
77   }
78
79   @Override
80   public Response delete(String vspId, String versionId, String dependencyId, String user) {
81     MdcUtil.initMdc(LoggerServiceName.DELETE_COMPONENT_DEPENDENCY.toString());
82     Version vspVersion = new Version(versionId);
83     componentDependencyModelManager.delete(vspId, vspVersion, dependencyId);
84     return Response.ok().build();
85   }
86
87   @Override
88   public Response update(ComponentDependencyModel request, String vspId, String versionId, String
89       dependencyId, String user) {
90
91     MdcUtil.initMdc(LoggerServiceName.UPDATE_COMPONENT_DEPENDENCY.toString());
92
93     final Version version = new Version(versionId);
94     ComponentDependencyModelEntity modelEntity =
95         new MapComponentDependencyModelRequestToEntity().applyMapping(request,
96             ComponentDependencyModelEntity.class);
97
98     modelEntity.setId(dependencyId);
99     modelEntity.setVspId(vspId);
100     modelEntity.setVersion(version);
101     componentDependencyModelManager.update(modelEntity);
102     return Response.ok().build();
103   }
104
105   @Override
106   public Response get(String vspId, String version, String dependencyId, String user) {
107     MdcUtil.initMdc(LoggerServiceName.GET_COMPONENT_DEPENDENCY.toString());
108     ComponentDependencyModelEntity componentDependencyModelEntity = componentDependencyModelManager
109         .get(vspId, new Version(version), dependencyId);
110
111     MapComponentDependencyEntityToDto mapper = new MapComponentDependencyEntityToDto();
112     ComponentDependencyResponseDto componentDependencyResponseDto =
113         mapper.applyMapping(componentDependencyModelEntity, ComponentDependencyResponseDto.class);
114
115     return Response.ok(componentDependencyModelEntity != null ? componentDependencyResponseDto :
116         null).build();
117   }
118
119 }