[SDC-29] Amdocs OnBoard 1707 initial commit.
[sdc.git] / openecomp-be / api / openecomp-sdc-rest-webapp / vendor-license-rest / vendor-license-rest-services / src / main / java / org / openecomp / sdcrests / vendorlicense / rest / services / LicenseAgreementsImpl.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
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
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.vendorlicense.rest.services;
22
23 import org.openecomp.core.utilities.CommonMethods;
24 import org.openecomp.sdc.logging.context.MdcUtil;
25 import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
26 import org.openecomp.sdc.logging.types.LoggerServiceName;
27 import org.openecomp.sdc.vendorlicense.VendorLicenseManager;
28 import org.openecomp.sdc.vendorlicense.dao.types.FeatureGroupEntity;
29 import org.openecomp.sdc.vendorlicense.dao.types.LicenseAgreementEntity;
30 import org.openecomp.sdc.vendorlicense.dao.types.LicenseAgreementModel;
31 import org.openecomp.sdc.versioning.dao.types.Version;
32 import org.openecomp.sdcrests.vendorlicense.rest.LicenseAgreements;
33 import org.openecomp.sdcrests.vendorlicense.rest.mapping.MapFeatureGroupEntityToFeatureGroupDescriptorDto;
34 import org.openecomp.sdcrests.vendorlicense.rest.mapping.MapLicenseAgreementDescriptorDtoToLicenseAgreementEntity;
35 import org.openecomp.sdcrests.vendorlicense.rest.mapping.MapLicenseAgreementEntityToLicenseAgreementDescriptorDto;
36 import org.openecomp.sdcrests.vendorlicense.types.FeatureGroupEntityDto;
37 import org.openecomp.sdcrests.vendorlicense.types.LicenseAgreementEntityDto;
38 import org.openecomp.sdcrests.vendorlicense.types.LicenseAgreementModelDto;
39 import org.openecomp.sdcrests.vendorlicense.types.LicenseAgreementRequestDto;
40 import org.openecomp.sdcrests.vendorlicense.types.LicenseAgreementUpdateRequestDto;
41 import org.openecomp.sdcrests.wrappers.GenericCollectionWrapper;
42 import org.openecomp.sdcrests.wrappers.StringWrapperResponse;
43 import org.springframework.beans.factory.annotation.Autowired;
44 import org.springframework.context.annotation.Scope;
45 import org.springframework.stereotype.Service;
46
47 import java.util.Collection;
48 import java.util.HashSet;
49 import javax.inject.Named;
50 import javax.ws.rs.core.Response;
51
52 @Named
53 @Service("licenseAgreements")
54 @Scope(value = "prototype")
55 public class LicenseAgreementsImpl implements LicenseAgreements {
56
57   private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
58   @Autowired
59   private VendorLicenseManager vendorLicenseManager;
60
61   /**
62    * List license agreements response.
63    *
64    * @param vlmId   the vlm id
65    * @param versionId the version
66    * @param user    the user
67    * @return the response
68    */
69   public Response listLicenseAgreements(String vlmId, String versionId, String user) {
70
71     mdcDataDebugMessage.debugEntryMessage("VLM id", vlmId);
72
73     MdcUtil.initMdc(LoggerServiceName.List_LA.toString());
74     Collection<LicenseAgreementEntity> licenseAgreements =
75         vendorLicenseManager.listLicenseAgreements(vlmId, Version.valueOf(versionId), user);
76
77     GenericCollectionWrapper<LicenseAgreementEntityDto> results = new GenericCollectionWrapper<>();
78     MapLicenseAgreementEntityToLicenseAgreementDescriptorDto outputMapper =
79         new MapLicenseAgreementEntityToLicenseAgreementDescriptorDto();
80     for (LicenseAgreementEntity lae : licenseAgreements) {
81       LicenseAgreementEntityDto laeDto = new LicenseAgreementEntityDto();
82       laeDto.setId(lae.getId());
83       laeDto.setFeatureGroupsIds(lae.getFeatureGroupIds());
84       outputMapper.doMapping(lae, laeDto);
85       results.add(laeDto);
86     }
87
88     mdcDataDebugMessage.debugExitMessage("VLM id", vlmId);
89
90     return Response.ok(results).build();
91   }
92
93   /**
94    * Create license agreement response.
95    *
96    * @param request the request
97    * @param vlmId   the vlm id
98    * @param user    the user
99    * @return the response
100    */
101   public Response createLicenseAgreement(LicenseAgreementRequestDto request, String vlmId,
102                                          String versionId,String user) {
103
104     mdcDataDebugMessage.debugEntryMessage("VLM id", vlmId);
105
106     MdcUtil.initMdc(LoggerServiceName.Create_LA.toString());
107     LicenseAgreementEntity licenseAgreementEntity =
108         new MapLicenseAgreementDescriptorDtoToLicenseAgreementEntity()
109             .applyMapping(request, LicenseAgreementEntity.class);
110     licenseAgreementEntity.setVendorLicenseModelId(vlmId);
111     licenseAgreementEntity.setVersion(Version.valueOf(versionId));
112     licenseAgreementEntity.setFeatureGroupIds(request.getAddedFeatureGroupsIds());
113
114     LicenseAgreementEntity createdLicenseAgreement =
115         vendorLicenseManager.createLicenseAgreement(licenseAgreementEntity, user);
116     StringWrapperResponse result =
117         createdLicenseAgreement != null ? new StringWrapperResponse(createdLicenseAgreement.getId())
118             : null;
119
120     mdcDataDebugMessage.debugExitMessage("VLM id", vlmId);
121
122     return Response.ok(result).build();
123   }
124
125   /**
126    * Update license agreement response.
127    *
128    * @param request            the request
129    * @param vlmId              the vlm id
130    * @param licenseAgreementId the license agreement id
131    * @param user               the user
132    * @return the response
133    */
134   public Response updateLicenseAgreement(LicenseAgreementUpdateRequestDto request, String vlmId,
135                                          String versionId,String licenseAgreementId, String user) {
136
137     mdcDataDebugMessage.debugEntryMessage("VLM id, LA id", vlmId, licenseAgreementId);
138
139     MdcUtil.initMdc(LoggerServiceName.Update_LA.toString());
140     LicenseAgreementEntity licenseAgreementEntity =
141         new MapLicenseAgreementDescriptorDtoToLicenseAgreementEntity()
142             .applyMapping(request, LicenseAgreementEntity.class);
143     licenseAgreementEntity.setVendorLicenseModelId(vlmId);
144     licenseAgreementEntity.setVersion(Version.valueOf(versionId));
145     licenseAgreementEntity.setId(licenseAgreementId);
146
147     vendorLicenseManager
148         .updateLicenseAgreement(licenseAgreementEntity, request.getAddedFeatureGroupsIds(),
149             request.getRemovedFeatureGroupsIds(), user);
150
151     mdcDataDebugMessage.debugExitMessage("VLM id, LA id", vlmId, licenseAgreementId);
152
153     return Response.ok().build();
154   }
155
156   /**
157    * Gets license agreement.
158    *
159    * @param vlmId              the vlm id
160    * @param versionId            the version
161    * @param licenseAgreementId the license agreement id
162    * @param user               the user
163    * @return the license agreement
164    */
165   public Response getLicenseAgreement(String vlmId, String versionId, String licenseAgreementId,
166                                       String user) {
167
168     mdcDataDebugMessage.debugEntryMessage("VLM id, LA id", vlmId, licenseAgreementId);
169
170     MdcUtil.initMdc(LoggerServiceName.Get_LA.toString());
171     LicenseAgreementModel licenseAgreementModel = vendorLicenseManager
172         .getLicenseAgreementModel(vlmId, Version.valueOf(versionId), licenseAgreementId, user);
173
174     if (licenseAgreementModel == null) {
175       return Response.ok().build();
176     }
177
178     LicenseAgreementModelDto lamDto = new LicenseAgreementModelDto();
179     lamDto.setId(licenseAgreementModel.getLicenseAgreement().getId());
180     new MapLicenseAgreementEntityToLicenseAgreementDescriptorDto()
181         .doMapping(licenseAgreementModel.getLicenseAgreement(), lamDto);
182
183     if (!CommonMethods.isEmpty(licenseAgreementModel.getFeatureGroups())) {
184       lamDto.setFeatureGroups(new HashSet<>());
185
186       MapFeatureGroupEntityToFeatureGroupDescriptorDto fgMapper =
187           new MapFeatureGroupEntityToFeatureGroupDescriptorDto();
188       for (FeatureGroupEntity fg : licenseAgreementModel.getFeatureGroups()) {
189         FeatureGroupEntityDto fgeDto = new FeatureGroupEntityDto();
190         fgeDto.setId(fg.getId());
191         fgeDto.setEntitlementPoolsIds(fg.getEntitlementPoolIds());
192         fgeDto.setLicenseKeyGroupsIds(fg.getLicenseKeyGroupIds());
193         fgMapper.doMapping(fg, fgeDto);
194
195         lamDto.getFeatureGroups().add(fgeDto);
196       }
197     }
198
199     mdcDataDebugMessage.debugExitMessage("VLM id, LA id", vlmId, licenseAgreementId);
200
201     return Response.ok(lamDto).build();
202   }
203
204   /**
205    * Delete license agreement response.
206    *
207    * @param vlmId              the vlm id
208    * @param versionId           the version id
209                                * @param licenseAgreementId the license agreement id
210    * @param user               the user
211    * @return the response
212    */
213   public Response deleteLicenseAgreement(String vlmId,String versionId, String licenseAgreementId,
214                                          String user) {
215
216     mdcDataDebugMessage.debugEntryMessage("VLM id, LA id", vlmId, licenseAgreementId);
217
218     MdcUtil.initMdc(LoggerServiceName.Delete_LA.toString());
219     vendorLicenseManager.deleteLicenseAgreement(vlmId, Version.valueOf(versionId), licenseAgreementId, user);
220
221     mdcDataDebugMessage.debugExitMessage("VLM id, LA id", vlmId, licenseAgreementId);
222
223     return Response.ok().build();
224   }
225 }