2 * ============LICENSE_START=======================================================
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
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.sdc.vendorsoftwareproduct.impl;
23 import org.apache.commons.collections4.CollectionUtils;
24 import org.openecomp.sdc.common.errors.CoreException;
25 import org.openecomp.sdc.datatypes.error.ErrorLevel;
26 import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
27 import org.openecomp.sdc.logging.context.impl.MdcDataErrorMessage;
28 import org.openecomp.sdc.logging.types.LoggerConstants;
29 import org.openecomp.sdc.logging.types.LoggerErrorCode;
30 import org.openecomp.sdc.logging.types.LoggerTragetServiceName;
31 import org.openecomp.sdc.vendorsoftwareproduct.NetworkManager;
32 import org.openecomp.sdc.vendorsoftwareproduct.NicManager;
33 import org.openecomp.sdc.vendorsoftwareproduct.dao.NicDao;
34 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NetworkEntity;
35 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NicEntity;
36 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
37 import org.openecomp.sdc.vendorsoftwareproduct.errors.CompositionEditNotAllowedErrorBuilder;
38 import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionEntityDataManager;
39 import org.openecomp.sdc.vendorsoftwareproduct.services.schemagenerator.SchemaGenerator;
40 import org.openecomp.sdc.vendorsoftwareproduct.types.CompositionEntityResponse;
41 import org.openecomp.sdc.vendorsoftwareproduct.types.QuestionnaireResponse;
42 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityType;
43 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityValidationData;
44 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.Nic;
45 import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.NicCompositionSchemaInput;
46 import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.SchemaTemplateContext;
47 import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.SchemaTemplateInput;
48 import org.openecomp.sdc.versioning.VersioningUtil;
49 import org.openecomp.sdc.versioning.dao.types.Version;
51 import java.util.Collection;
53 import java.util.stream.Collectors;
55 public class NicManagerImpl implements NicManager {
56 private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
58 private NicDao nicDao;
59 private CompositionEntityDataManager compositionEntityDataManager;
60 private NetworkManager networkManager;
62 public NicManagerImpl(NicDao nicDao,
63 CompositionEntityDataManager compositionEntityDataManager,
64 NetworkManager networkManager) {
66 this.compositionEntityDataManager = compositionEntityDataManager;
67 this.networkManager = networkManager;
71 public Collection<NicEntity> listNics(String vspId, Version version, String componentId,
73 mdcDataDebugMessage.debugEntryMessage("VSP id, component id", vspId, componentId);
75 Collection<NicEntity> nics = nicDao.list(new NicEntity(vspId, version, componentId, null));
77 if (!nics.isEmpty()) {
78 Map<String, String> networksNameById = listNetworksNameById(vspId, version, user);
79 nics.forEach(nicEntity -> {
80 Nic nic = nicEntity.getNicCompositionData();
81 nic.setNetworkName(networksNameById.get(nic.getNetworkId()));
82 nicEntity.setNicCompositionData(nic);
86 mdcDataDebugMessage.debugExitMessage("VSP id, component id", vspId, componentId);
91 private Map<String, String> listNetworksNameById(String vspId, Version version, String user) {
92 Collection<NetworkEntity> networks = networkManager.listNetworks(vspId, version, user);
93 return networks.stream().collect(Collectors.toMap(NetworkEntity::getId,
94 networkEntity -> networkEntity.getNetworkCompositionData().getName()));
98 public NicEntity createNic(NicEntity nic, String user) {
99 mdcDataDebugMessage.debugEntryMessage("VSP id, component id", nic.getVspId(),
100 nic.getComponentId());
102 if (!isManual(nic.getVspId(), nic.getVersion())) {
103 MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
104 LoggerTragetServiceName.CREATE_NIC, ErrorLevel.ERROR.name(),
105 LoggerErrorCode.PERMISSION_ERROR.getErrorCode(), "Can't create nic");
106 throw new CoreException(
107 new CompositionEditNotAllowedErrorBuilder(nic.getVspId(), nic.getVersion()).build());
110 //nicDao.updateVspLatestModificationTime(nic.getVspId(), nic.getVersion());
113 .debugExitMessage("VSP id, component id", nic.getVspId(), nic.getComponentId());
119 public CompositionEntityResponse<Nic> getNic(String vspId, Version version, String componentId,
120 String nicId, String user) {
122 .debugEntryMessage("VSP id, component id, nic id", vspId, componentId, nicId);
124 NicEntity nicEntity = getNic(vspId, version, componentId, nicId);
125 Nic nic = nicEntity.getNicCompositionData();
127 NicCompositionSchemaInput schemaInput = new NicCompositionSchemaInput();
128 schemaInput.setManual(isManual(vspId, version));
129 schemaInput.setNic(nic);
130 Map<String, String> networksNameById = listNetworksNameById(vspId, version, user);
131 nic.setNetworkName(networksNameById.get(nic.getNetworkId()));
132 schemaInput.setNetworkIds(networksNameById.keySet());
134 CompositionEntityResponse<Nic> response = new CompositionEntityResponse<>();
135 response.setId(nicId);
136 response.setData(nic);
137 response.setSchema(getNicCompositionSchema(schemaInput));
140 .debugExitMessage("VSP id, component id", vspId, componentId, nicId);
146 private NicEntity getNic(String vspId, Version version, String componentId, String nicId) {
147 NicEntity retrieved = nicDao.get(new NicEntity(vspId, version, componentId, nicId));
149 .validateEntityExistence(retrieved, new NicEntity(vspId, version, componentId, nicId),
150 VspDetails.ENTITY_TYPE);
155 public void deleteNic(String vspId, Version version, String componentId, String nicId,
158 .debugEntryMessage("VSP id, component id", vspId, componentId, nicId);
160 if (!isManual(vspId, version)) {
161 MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
162 LoggerTragetServiceName.DELETE_NIC, ErrorLevel.ERROR.name(),
163 LoggerErrorCode.PERMISSION_ERROR.getErrorCode(), "Can't delete nic");
164 throw new CoreException(
165 new CompositionEditNotAllowedErrorBuilder(vspId, version).build());
168 //nicDao.updateVspLatestModificationTime(vspId, version);
171 .debugExitMessage("VSP id, component id", vspId, componentId, nicId);
175 public CompositionEntityValidationData updateNic(NicEntity nic, String user) {
177 .debugEntryMessage("VSP id, component id", nic.getVspId(), nic.getComponentId(),
180 NicEntity retrieved =
181 getNic(nic.getVspId(), nic.getVersion(), nic.getComponentId(), nic.getId());
183 NicCompositionSchemaInput schemaInput = new NicCompositionSchemaInput();
184 schemaInput.setManual(isManual(nic.getVspId(), nic.getVersion()));
185 schemaInput.setNic(retrieved.getNicCompositionData());
187 CompositionEntityValidationData validationData = compositionEntityDataManager
188 .validateEntity(nic, SchemaTemplateContext.composition, schemaInput);
189 if (CollectionUtils.isEmpty(validationData.getErrors())) {
193 //nicDao.updateVspLatestModificationTime(nic.getVspId(), nic.getVersion());
196 .debugExitMessage("VSP id, component id", nic.getVspId(), nic.getComponentId(),
199 return validationData;
203 public QuestionnaireResponse getNicQuestionnaire(String vspId, Version version,
204 String componentId, String nicId, String user) {
206 .debugEntryMessage("VSP id, component id", vspId, componentId, nicId);
208 QuestionnaireResponse questionnaireResponse = new QuestionnaireResponse();
209 NicEntity nicQuestionnaire = nicDao.getQuestionnaireData(vspId, version, componentId, nicId);
210 VersioningUtil.validateEntityExistence(nicQuestionnaire,
211 new NicEntity(vspId, version, componentId, nicId), VspDetails.ENTITY_TYPE);
213 questionnaireResponse.setData(nicQuestionnaire.getQuestionnaireData());
214 questionnaireResponse.setSchema(getNicQuestionnaireSchema(null));
217 .debugExitMessage("VSP id, component id", vspId, componentId, nicId);
219 return questionnaireResponse;
223 public void updateNicQuestionnaire(String vspId, Version version, String componentId,
224 String nicId, String questionnaireData, String user) {
225 mdcDataDebugMessage.debugEntryMessage("VSP id, component id", vspId, componentId, nicId);
227 getNic(vspId, version, componentId, nicId);
229 nicDao.updateQuestionnaireData(vspId, version, componentId, nicId, questionnaireData);
231 //nicDao.updateVspLatestModificationTime(vspId, version);
233 mdcDataDebugMessage.debugExitMessage("VSP id, component id", vspId, componentId, nicId);
236 protected String getNicQuestionnaireSchema(SchemaTemplateInput schemaInput) {
237 return SchemaGenerator
238 .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.nic, schemaInput);
241 protected String getNicCompositionSchema(NicCompositionSchemaInput schemaInput) {
242 return SchemaGenerator
243 .generate(SchemaTemplateContext.composition, CompositionEntityType.nic, schemaInput);
245 // todo *************************** move to reusable place! *************************
247 private boolean isManual(String vspId, Version version) {