8f974c4df8a90ce19a8d76bd44fc0a25f5d60475
[sdc.git] /
1 /*
2  * Copyright © 2016-2018 European Support Limited
3  *
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
7  *
8  *   http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16 package org.openecomp.sdc.vendorlicense.dao.impl.zusammen;
17
18 import static org.openecomp.sdc.versioning.dao.impl.zusammen.ItemZusammenDaoImpl.ItemInfoProperty.ITEM_TYPE;
19
20 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement;
21 import com.amdocs.zusammen.datatypes.SessionContext;
22 import com.amdocs.zusammen.datatypes.item.Action;
23 import com.amdocs.zusammen.datatypes.item.ElementContext;
24 import com.amdocs.zusammen.datatypes.item.Info;
25 import java.util.Collection;
26 import java.util.stream.Collectors;
27 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
28 import org.openecomp.core.zusammen.api.ZusammenUtil;
29 import org.openecomp.sdc.datatypes.model.ElementType;
30 import org.openecomp.sdc.vendorlicense.dao.VendorLicenseModelDao;
31 import org.openecomp.sdc.vendorlicense.dao.impl.zusammen.convertor.ElementToVLMGeneralConvertor;
32 import org.openecomp.sdc.vendorlicense.dao.types.VendorLicenseModelEntity;
33 import org.openecomp.sdc.versioning.ActionVersioningManagerFactory;
34 import org.openecomp.sdc.versioning.types.VersionableEntityMetadata;
35 import org.openecomp.sdc.versioning.types.VersionableEntityStoreType;
36
37 public class VendorLicenseModelDaoZusammenImpl implements VendorLicenseModelDao {
38
39     private final ZusammenAdaptor zusammenAdaptor;
40
41     public VendorLicenseModelDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) {
42         this.zusammenAdaptor = zusammenAdaptor;
43     }
44
45     @Override
46     public void registerVersioning(String versionableEntityType) {
47         VersionableEntityMetadata metadata = new VersionableEntityMetadata(VersionableEntityStoreType.Zusammen, "VendorLicenseModel", null, null);
48         ActionVersioningManagerFactory.getInstance().createInterface().register(versionableEntityType, metadata);
49     }
50
51     @Override
52     public Collection<VendorLicenseModelEntity> list(VendorLicenseModelEntity vendorLicenseModelEntity) {
53         ElementToVLMGeneralConvertor convertor = new ElementToVLMGeneralConvertor();
54         return zusammenAdaptor.listItems(ZusammenUtil.createSessionContext()).stream()
55             .filter(item -> "VendorLicenseModel".equals(item.getInfo().getProperty(ITEM_TYPE.getName()))).map(item -> {
56                 VendorLicenseModelEntity entity = convertor.convert(item);
57                 entity.setId(item.getId().getValue());
58                 entity.setVersion(null);
59                 return entity;
60             }).collect(Collectors.toList());
61     }
62
63     @Override
64     public void create(VendorLicenseModelEntity vendorLicenseModel) {
65         SessionContext context = ZusammenUtil.createSessionContext();
66         ElementContext elementContext = new ElementContext(vendorLicenseModel.getId(), vendorLicenseModel.getVersion().getId());
67         ZusammenElement generalElement = mapVlmToZusammenElement(vendorLicenseModel, Action.CREATE);
68         zusammenAdaptor.saveElement(context, elementContext, generalElement, "Create VLM General Info Element");
69         ZusammenElement licenseAgreementsElement = ZusammenUtil.buildStructuralElement(ElementType.LicenseAgreements, Action.CREATE);
70         zusammenAdaptor.saveElement(context, elementContext, licenseAgreementsElement, "Create VLM licenseAgreementsElement");
71         ZusammenElement featureGroupsElement = ZusammenUtil.buildStructuralElement(ElementType.FeatureGroups, Action.CREATE);
72         zusammenAdaptor.saveElement(context, elementContext, featureGroupsElement, "Create VLM featureGroupsElement");
73         ZusammenElement lkgsElement = ZusammenUtil.buildStructuralElement(ElementType.LicenseKeyGroups, Action.CREATE);
74         zusammenAdaptor.saveElement(context, elementContext, lkgsElement, "Create VLM lkgsElement");
75         ZusammenElement entitlementPoolsElement = ZusammenUtil.buildStructuralElement(ElementType.EntitlementPools, Action.CREATE);
76         zusammenAdaptor.saveElement(context, elementContext, entitlementPoolsElement, "Create VLM entitlementPoolsElement");
77     }
78
79     @Override
80     public void update(VendorLicenseModelEntity vendorLicenseModel) {
81         ZusammenElement generalElement = mapVlmToZusammenElement(vendorLicenseModel, Action.UPDATE);
82         SessionContext context = ZusammenUtil.createSessionContext();
83         zusammenAdaptor.saveElement(context, new ElementContext(vendorLicenseModel.getId(), vendorLicenseModel.getVersion().getId()), generalElement,
84             "Update VSP General Info Element");
85     }
86
87     @Override
88     public VendorLicenseModelEntity get(VendorLicenseModelEntity vendorLicenseModel) {
89         SessionContext context = ZusammenUtil.createSessionContext();
90         ElementContext elementContext = new ElementContext(vendorLicenseModel.getId(), vendorLicenseModel.getVersion().getId());
91         ElementToVLMGeneralConvertor convertor = new ElementToVLMGeneralConvertor();
92         return zusammenAdaptor.getElementInfoByName(context, elementContext, null, ElementType.VendorLicenseModel.name()).map(generalElementInfo -> {
93             VendorLicenseModelEntity entity = convertor.convert(generalElementInfo);
94             entity.setId(vendorLicenseModel.getId());
95             entity.setVersion(vendorLicenseModel.getVersion());
96             return entity;
97         }).orElse(null);
98     }
99
100     @Override
101     public void delete(VendorLicenseModelEntity entity) {
102         throw new UnsupportedOperationException("Delete vlm version is done using versioning manager");
103     }
104
105     private ZusammenElement mapVlmToZusammenElement(VendorLicenseModelEntity vendorLicenseModel, Action action) {
106         ZusammenElement generalElement = ZusammenUtil.buildStructuralElement(ElementType.VendorLicenseModel, action);
107         addVlmToInfo(generalElement.getInfo(), vendorLicenseModel);
108         return generalElement;
109     }
110
111     private void addVlmToInfo(Info info, VendorLicenseModelEntity vendorLicenseModel) {
112         info.addProperty(InfoPropertyName.name.name(), vendorLicenseModel.getVendorName());
113         info.addProperty(InfoPropertyName.description.name(), vendorLicenseModel.getDescription());
114         info.addProperty(InfoPropertyName.iconRef.name(), vendorLicenseModel.getIconRef());
115     }
116
117     public enum InfoPropertyName {name, description, iconRef,}
118 }