2 * Copyright © 2016-2017 European Support Limited
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package org.openecomp.sdc.vendorsoftwareproduct.impl;
19 import org.apache.commons.collections4.CollectionUtils;
20 import org.openecomp.sdc.common.errors.CoreException;
21 import org.openecomp.sdc.vendorsoftwareproduct.CompositionEntityDataManager;
22 import org.openecomp.sdc.vendorsoftwareproduct.NetworkManager;
23 import org.openecomp.sdc.vendorsoftwareproduct.dao.NetworkDao;
24 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao;
25 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NetworkEntity;
26 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
27 import org.openecomp.sdc.vendorsoftwareproduct.errors.CompositionEditNotAllowedErrorBuilder;
28 import org.openecomp.sdc.vendorsoftwareproduct.services.schemagenerator.SchemaGenerator;
29 import org.openecomp.sdc.vendorsoftwareproduct.types.CompositionEntityResponse;
30 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityType;
31 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityValidationData;
32 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.Network;
33 import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.NetworkCompositionSchemaInput;
34 import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.SchemaTemplateContext;
35 import org.openecomp.sdc.versioning.VersioningUtil;
36 import org.openecomp.sdc.versioning.dao.types.Version;
38 import java.util.Collection;
40 public class NetworkManagerImpl implements NetworkManager {
41 private final NetworkDao networkDao;
42 private final CompositionEntityDataManager compositionEntityDataManager;
43 private final VendorSoftwareProductInfoDao vspInfoDao;
45 public NetworkManagerImpl(NetworkDao networkDao,
46 CompositionEntityDataManager compositionEntityDataManager,
47 VendorSoftwareProductInfoDao vendorSoftwareProductInfoDao) {
48 this.networkDao = networkDao;
49 this.compositionEntityDataManager = compositionEntityDataManager;
50 this.vspInfoDao = vendorSoftwareProductInfoDao;
54 public Collection<NetworkEntity> listNetworks(String vspId, Version version) {
55 return networkDao.list(new NetworkEntity(vspId, version, null));
59 public NetworkEntity createNetwork(NetworkEntity network) {
60 if (!vspInfoDao.isManual(network.getVspId(), network.getVersion())) {
61 throw new CoreException(
62 new CompositionEditNotAllowedErrorBuilder(network.getVspId(), network.getVersion())
69 public CompositionEntityValidationData updateNetwork(NetworkEntity network) {
70 NetworkEntity retrieved = getValidatedNetwork(network.getVspId(), network.getVersion(), network.getId());
72 NetworkCompositionSchemaInput schemaInput = new NetworkCompositionSchemaInput();
73 schemaInput.setManual(!vspInfoDao.isManual(network.getVspId(), network.getVersion()));
74 schemaInput.setNetwork(retrieved.getNetworkCompositionData());
76 CompositionEntityValidationData validationData = compositionEntityDataManager
77 .validateEntity(network, SchemaTemplateContext.composition, schemaInput);
78 if (CollectionUtils.isEmpty(validationData.getErrors())) {
79 networkDao.update(network);
81 return validationData;
85 public CompositionEntityResponse<Network> getNetwork(String vspId, Version version,
87 NetworkEntity networkEntity = getValidatedNetwork(vspId, version, networkId);
88 Network network = networkEntity.getNetworkCompositionData();
90 NetworkCompositionSchemaInput schemaInput = new NetworkCompositionSchemaInput();
91 schemaInput.setManual(!vspInfoDao.isManual(vspId, version));
92 schemaInput.setNetwork(network);
94 CompositionEntityResponse<Network> response = new CompositionEntityResponse<>();
95 response.setId(networkId);
96 response.setData(network);
97 response.setSchema(getCompositionSchema(schemaInput));
102 private NetworkEntity getValidatedNetwork(String vspId, Version version, String networkId) {
103 NetworkEntity retrieved = networkDao.get(new NetworkEntity(vspId, version, networkId));
104 VersioningUtil.validateEntityExistence(retrieved, new NetworkEntity(vspId, version, networkId),
105 VspDetails.ENTITY_TYPE);
110 public void deleteNetwork(String vspId, Version version, String networkId) {
111 if (!vspInfoDao.isManual(vspId, version)) {
112 throw new CoreException(
113 new CompositionEditNotAllowedErrorBuilder(vspId, version).build());
118 protected String getCompositionSchema(NetworkCompositionSchemaInput schemaInput) {
119 return SchemaGenerator
120 .generate(SchemaTemplateContext.composition, CompositionEntityType.network, schemaInput);