2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (c) 2020-2021 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.onap.dcaegen2.platform.mod.web.service.policymodel;
24 import lombok.extern.slf4j.Slf4j;
25 import org.onap.dcaegen2.platform.mod.model.exceptions.ErrorMessages;
26 import org.onap.dcaegen2.platform.mod.model.exceptions.policymodel.PolicyModelConflictException;
27 import org.onap.dcaegen2.platform.mod.model.exceptions.policymodel.PolicyModelDistributionEnvNotFoundException;
28 import org.onap.dcaegen2.platform.mod.model.exceptions.policymodel.PolicyModelNotFoundException;
29 import org.onap.dcaegen2.platform.mod.model.policymodel.DistributionInfo;
30 import org.onap.dcaegen2.platform.mod.model.policymodel.PolicyModel;
31 import org.onap.dcaegen2.platform.mod.model.policymodel.PolicyModelDistributionEnv;
32 import org.onap.dcaegen2.platform.mod.model.restapi.MetadataRequest;
33 import org.onap.dcaegen2.platform.mod.model.restapi.PolicyModelCreateRequest;
34 import org.onap.dcaegen2.platform.mod.model.restapi.PolicyModelUpdateRequest;
35 import org.springframework.beans.factory.annotation.Autowired;
36 import org.springframework.beans.factory.annotation.Value;
37 import org.springframework.stereotype.Service;
38 import org.springframework.transaction.annotation.Transactional;
40 import java.io.BufferedReader;
41 import java.io.InputStream;
42 import java.io.InputStreamReader;
43 import java.util.Date;
44 import java.util.List;
47 * Policy Model Service implementation
53 public class PolicyModelServiceImpl implements PolicyModelService {
55 @Value("${policymodel.dev.server}")
56 private String devServer;
58 @Value("${policymodel.dev.port}")
59 private String devServerPort;
61 @Value("${policymodel.dev.user}")
62 private String devServerUser;
64 @Value("${policymodel.dev.password}")
65 private String devServerPassword;
68 private PolicyModelGateway policyModelGateway;
71 * Lists all Policy Models
76 public List<PolicyModel> getAll() {
77 return policyModelGateway.findAll();
81 * List a Policy Model by policyModel ID
87 public PolicyModel getPolicyModelById(String id) {
88 return policyModelGateway.findById(id).orElseThrow(() -> new PolicyModelNotFoundException(String.format("Policy Model with id %s not found", id)));
92 * creates a Policy Model
99 public PolicyModel createPolicyModel(PolicyModelCreateRequest request, String user) {
100 checkIfPMNameAndVersionAlreadyExists(request.getName(), request.getVersion());
101 PolicyModel policyModel = new PolicyModel();
102 policyModel.setName(request.getName());
103 policyModel.setContent(request.getContent());
104 policyModel.setVersion(request.getVersion());
105 policyModel.setOwner(request.getOwner());
106 policyModel.setMetadata(getMetadataFields(request.getMetadata(), user));
107 return policyModelGateway.save(policyModel);
111 * Update a Policy Model
118 public PolicyModel updatePolicyModel(PolicyModelUpdateRequest request, String modelId, String user) {
119 PolicyModel policyModel = getPolicyModelById(modelId);
120 updateFields(request, policyModel,user);
121 return policyModelGateway.save(policyModel);
127 * Cerifies if a Policy Model Exist
133 private void checkIfPMNameAndVersionAlreadyExists(String pmName, String pmVersion) {
134 if (policyModelGateway.findByNameAndVersion(pmName, pmVersion).isPresent())
135 throw new PolicyModelConflictException(ErrorMessages.POLICYMODEL_NAME_VERSION_CONFLICT_MESSAGE);
139 * creates a Policy Model Metadata
145 private MetadataRequest getMetadataFields(MetadataRequest metadata, String user) {
146 MetadataRequest metadataFields = MetadataRequest.builder().build();
147 metadataFields.setCreatedBy(user);
148 metadataFields.setCreatedOn(new Date());
149 if(metadata != null) {
150 if (metadata.getNotes() != null)
151 metadataFields.setNotes(metadata.getNotes());
152 if (metadata.getLabels() != null)
153 metadataFields.setLabels(metadata.getLabels());
155 return metadataFields;
160 * Updates a Policy Model
167 private void updateFields(PolicyModelUpdateRequest request, PolicyModel policyModel, String user) {
168 String name = request.getName();
169 String version = request.getVersion();
170 if (!(name.equalsIgnoreCase(policyModel.getName()) && version.equalsIgnoreCase(policyModel.getVersion()))) {
171 checkIfPMNameAndVersionAlreadyExists(name, version);
172 policyModel.setName(name);
173 policyModel.setVersion(version);
175 if (request.getOwner() != null) {
176 policyModel.setOwner(request.getOwner());
179 if (request.getContent() != null) {
180 policyModel.setContent(request.getContent());
182 if (request.getMetadata() != null) {
183 updateMetadata(request,user);
184 policyModel.setMetadata(request.getMetadata());
190 * Updates a Policy Model Metadata
196 private void updateMetadata(PolicyModelUpdateRequest request, String user) {
197 MetadataRequest metadataRequest = request.getMetadata();
198 metadataRequest.setUpdatedBy(user);
199 metadataRequest.setUpdatedOn(new Date());