aboutsummaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/dao/impl/zusammen/VendorLicenseModelDaoZusammenImpl.java
blob: 8f974c4df8a90ce19a8d76bd44fc0a25f5d60475 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
/*
 * Copyright © 2016-2018 European Support Limited
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.openecomp.sdc.vendorlicense.dao.impl.zusammen;

import static org.openecomp.sdc.versioning.dao.impl.zusammen.ItemZusammenDaoImpl.ItemInfoProperty.ITEM_TYPE;

import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement;
import com.amdocs.zusammen.datatypes.SessionContext;
import com.amdocs.zusammen.datatypes.item.Action;
import com.amdocs.zusammen.datatypes.item.ElementContext;
import com.amdocs.zusammen.datatypes.item.Info;
import java.util.Collection;
import java.util.stream.Collectors;
import org.openecomp.core.zusammen.api.ZusammenAdaptor;
import org.openecomp.core.zusammen.api.ZusammenUtil;
import org.openecomp.sdc.datatypes.model.ElementType;
import org.openecomp.sdc.vendorlicense.dao.VendorLicenseModelDao;
import org.openecomp.sdc.vendorlicense.dao.impl.zusammen.convertor.ElementToVLMGeneralConvertor;
import org.openecomp.sdc.vendorlicense.dao.types.VendorLicenseModelEntity;
import org.openecomp.sdc.versioning.ActionVersioningManagerFactory;
import org.openecomp.sdc.versioning.types.VersionableEntityMetadata;
import org.openecomp.sdc.versioning.types.VersionableEntityStoreType;

public class VendorLicenseModelDaoZusammenImpl implements VendorLicenseModelDao {

    private final ZusammenAdaptor zusammenAdaptor;

    public VendorLicenseModelDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) {
        this.zusammenAdaptor = zusammenAdaptor;
    }

    @Override
    public void registerVersioning(String versionableEntityType) {
        VersionableEntityMetadata metadata = new VersionableEntityMetadata(VersionableEntityStoreType.Zusammen, "VendorLicenseModel", null, null);
        ActionVersioningManagerFactory.getInstance().createInterface().register(versionableEntityType, metadata);
    }

    @Override
    public Collection<VendorLicenseModelEntity> list(VendorLicenseModelEntity vendorLicenseModelEntity) {
        ElementToVLMGeneralConvertor convertor = new ElementToVLMGeneralConvertor();
        return zusammenAdaptor.listItems(ZusammenUtil.createSessionContext()).stream()
            .filter(item -> "VendorLicenseModel".equals(item.getInfo().getProperty(ITEM_TYPE.getName()))).map(item -> {
                VendorLicenseModelEntity entity = convertor.convert(item);
                entity.setId(item.getId().getValue());
                entity.setVersion(null);
                return entity;
            }).collect(Collectors.toList());
    }

    @Override
    public void create(VendorLicenseModelEntity vendorLicenseModel) {
        SessionContext context = ZusammenUtil.createSessionContext();
        ElementContext elementContext = new ElementContext(vendorLicenseModel.getId(), vendorLicenseModel.getVersion().getId());
        ZusammenElement generalElement = mapVlmToZusammenElement(vendorLicenseModel, Action.CREATE);
        zusammenAdaptor.saveElement(context, elementContext, generalElement, "Create VLM General Info Element");
        ZusammenElement licenseAgreementsElement = ZusammenUtil.buildStructuralElement(ElementType.LicenseAgreements, Action.CREATE);
        zusammenAdaptor.saveElement(context, elementContext, licenseAgreementsElement, "Create VLM licenseAgreementsElement");
        ZusammenElement featureGroupsElement = ZusammenUtil.buildStructuralElement(ElementType.FeatureGroups, Action.CREATE);
        zusammenAdaptor.saveElement(context, elementContext, featureGroupsElement, "Create VLM featureGroupsElement");
        ZusammenElement lkgsElement = ZusammenUtil.buildStructuralElement(ElementType.LicenseKeyGroups, Action.CREATE);
        zusammenAdaptor.saveElement(context, elementContext, lkgsElement, "Create VLM lkgsElement");
        ZusammenElement entitlementPoolsElement = ZusammenUtil.buildStructuralElement(ElementType.EntitlementPools, Action.CREATE);
        zusammenAdaptor.saveElement(context, elementContext, entitlementPoolsElement, "Create VLM entitlementPoolsElement");
    }

    @Override
    public void update(VendorLicenseModelEntity vendorLicenseModel) {
        ZusammenElement generalElement = mapVlmToZusammenElement(vendorLicenseModel, Action.UPDATE);
        SessionContext context = ZusammenUtil.createSessionContext();
        zusammenAdaptor.saveElement(context, new ElementContext(vendorLicenseModel.getId(), vendorLicenseModel.getVersion().getId()), generalElement,
            "Update VSP General Info Element");
    }

    @Override
    public VendorLicenseModelEntity get(VendorLicenseModelEntity vendorLicenseModel) {
        SessionContext context = ZusammenUtil.createSessionContext();
        ElementContext elementContext = new ElementContext(vendorLicenseModel.getId(), vendorLicenseModel.getVersion().getId());
        ElementToVLMGeneralConvertor convertor = new ElementToVLMGeneralConvertor();
        return zusammenAdaptor.getElementInfoByName(context, elementContext, null, ElementType.VendorLicenseModel.name()).map(generalElementInfo -> {
            VendorLicenseModelEntity entity = convertor.convert(generalElementInfo);
            entity.setId(vendorLicenseModel.getId());
            entity.setVersion(vendorLicenseModel.getVersion());
            return entity;
        }).orElse(null);
    }

    @Override
    public void delete(VendorLicenseModelEntity entity) {
        throw new UnsupportedOperationException("Delete vlm version is done using versioning manager");
    }

    private ZusammenElement mapVlmToZusammenElement(VendorLicenseModelEntity vendorLicenseModel, Action action) {
        ZusammenElement generalElement = ZusammenUtil.buildStructuralElement(ElementType.VendorLicenseModel, action);
        addVlmToInfo(generalElement.getInfo(), vendorLicenseModel);
        return generalElement;
    }

    private void addVlmToInfo(Info info, VendorLicenseModelEntity vendorLicenseModel) {
        info.addProperty(InfoPropertyName.name.name(), vendorLicenseModel.getVendorName());
        info.addProperty(InfoPropertyName.description.name(), vendorLicenseModel.getDescription());
        info.addProperty(InfoPropertyName.iconRef.name(), vendorLicenseModel.getIconRef());
    }

    public enum InfoPropertyName {name, description, iconRef,}
}