Add collaboration feature
[sdc.git] / 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
1 package org.openecomp.sdc.vendorlicense.dao.impl.zusammen;
2
3 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement;
4 import com.amdocs.zusammen.datatypes.SessionContext;
5 import com.amdocs.zusammen.datatypes.item.Action;
6 import com.amdocs.zusammen.datatypes.item.ElementContext;
7 import com.amdocs.zusammen.datatypes.item.Info;
8 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
9 import org.openecomp.core.zusammen.api.ZusammenUtil;
10 import org.openecomp.sdc.datatypes.model.ElementType;
11 import org.openecomp.sdc.vendorlicense.dao.VendorLicenseModelDao;
12 import org.openecomp.sdc.vendorlicense.dao.impl.zusammen.convertor.ElementToVLMGeneralConvertor;
13 import org.openecomp.sdc.vendorlicense.dao.types.VendorLicenseModelEntity;
14 import org.openecomp.sdc.versioning.VersioningManagerFactory;
15 import org.openecomp.sdc.versioning.types.VersionableEntityMetadata;
16 import org.openecomp.sdc.versioning.types.VersionableEntityStoreType;
17
18 import java.util.Collection;
19 import java.util.stream.Collectors;
20
21 public class VendorLicenseModelDaoZusammenImpl implements VendorLicenseModelDao {
22
23   private ZusammenAdaptor zusammenAdaptor;
24
25   public VendorLicenseModelDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) {
26     this.zusammenAdaptor = zusammenAdaptor;
27   }
28
29   @Override
30   public void registerVersioning(String versionableEntityType) {
31     VersionableEntityMetadata metadata =
32         new VersionableEntityMetadata(VersionableEntityStoreType.Zusammen, "VendorLicenseModel",
33             null, null);
34
35     VersioningManagerFactory.getInstance().createInterface()
36         .register(versionableEntityType, metadata);
37   }
38
39   @Override
40   public Collection<VendorLicenseModelEntity> list(
41       VendorLicenseModelEntity vendorLicenseModelEntity) {
42
43     ElementToVLMGeneralConvertor convertor = new ElementToVLMGeneralConvertor();
44     return zusammenAdaptor.listItems(ZusammenUtil.createSessionContext()).stream()
45         .filter(item -> "VendorLicenseModel".equals(item.getInfo().getProperty("item_type")))
46         .map(item -> {
47           VendorLicenseModelEntity entity = convertor.convert(item);
48           entity.setId(item.getId().getValue());
49           entity.setVersion(null);
50           return entity;
51         })
52         .collect(Collectors.toList());
53   }
54
55   @Override
56   public void create(VendorLicenseModelEntity vendorLicenseModel) {
57
58     SessionContext context = ZusammenUtil.createSessionContext();
59
60     ElementContext elementContext = new ElementContext(vendorLicenseModel.getId(),
61         vendorLicenseModel.getVersion().getId());
62
63     ZusammenElement generalElement = mapVlmToZusammenElement(vendorLicenseModel, Action.CREATE);
64
65     zusammenAdaptor.saveElement(context, elementContext, generalElement,
66         "Create VLM General Info Element");
67
68     ZusammenElement licenseAgreementsElement =
69         ZusammenUtil.buildStructuralElement(ElementType.LicenseAgreements,  Action.CREATE);
70
71     zusammenAdaptor.saveElement(context, elementContext, licenseAgreementsElement,
72         "Create VLM licenseAgreementsElement");
73
74     ZusammenElement featureGroupsElement =
75         ZusammenUtil.buildStructuralElement(ElementType.FeatureGroups,  Action.CREATE);
76
77     zusammenAdaptor.saveElement(context, elementContext, featureGroupsElement,
78         "Create VLM featureGroupsElement");
79
80     ZusammenElement lkgsElement =
81         ZusammenUtil.buildStructuralElement(ElementType.LicenseKeyGroups,  Action.CREATE);
82
83     zusammenAdaptor.saveElement(context, elementContext, lkgsElement,
84         "Create VLM lkgsElement");
85
86     ZusammenElement entitlementPoolsElement =
87         ZusammenUtil.buildStructuralElement(ElementType.EntitlementPools,  Action.CREATE);
88
89     zusammenAdaptor.saveElement(context, elementContext, entitlementPoolsElement,
90         "Create VLM entitlementPoolsElement");
91   }
92
93   @Override
94   public void update(VendorLicenseModelEntity vendorLicenseModel) {
95     ZusammenElement generalElement = mapVlmToZusammenElement(vendorLicenseModel, Action.UPDATE);
96
97     SessionContext context = ZusammenUtil.createSessionContext();
98     zusammenAdaptor.saveElement(context,
99         new ElementContext(vendorLicenseModel.getId(), vendorLicenseModel.getVersion().getId()),
100         generalElement, "Update VSP General Info Element");
101   }
102
103   @Override
104   public VendorLicenseModelEntity get(VendorLicenseModelEntity vendorLicenseModel) {
105     SessionContext context = ZusammenUtil.createSessionContext();
106     ElementContext elementContext =
107         new ElementContext(vendorLicenseModel.getId(), vendorLicenseModel.getVersion().getId());
108     ElementToVLMGeneralConvertor convertor = new ElementToVLMGeneralConvertor();
109     return zusammenAdaptor
110         .getElementInfoByName(context, elementContext, null, ElementType.VendorLicenseModel.name())
111         .map(generalElementInfo -> {
112           VendorLicenseModelEntity entity = convertor.convert(generalElementInfo);
113           entity.setId(vendorLicenseModel.getId());
114           entity.setVersion(vendorLicenseModel.getVersion());
115           return entity;
116         })
117         .orElse(null);
118   }
119
120   @Override
121   public void delete(VendorLicenseModelEntity entity) {
122
123   }
124
125  /* private Info mapVlmToZusammenItemInfo(VendorLicenseModelEntity vendorLicenseModel) {
126     Info info = new Info();
127     info.setName(vendorLicenseModel.getVendorName());
128     info.setDescription(vendorLicenseModel.getDescription());
129     info.addProperty("type", "VendorLicenseModel");
130     addVlmToInfo(info, vendorLicenseModel);
131     return info;
132   }*/
133
134   private ZusammenElement mapVlmToZusammenElement(VendorLicenseModelEntity vendorLicenseModel,
135                                                   Action action) {
136     ZusammenElement generalElement =
137         ZusammenUtil.buildStructuralElement(ElementType.VendorLicenseModel, action);
138     addVlmToInfo(generalElement.getInfo(), vendorLicenseModel);
139     return generalElement;
140   }
141
142   private void addVlmToInfo(Info info, VendorLicenseModelEntity vendorLicenseModel) {
143     info.addProperty(InfoPropertyName.name.name(), vendorLicenseModel.getVendorName());
144     info.addProperty(InfoPropertyName.description.name(), vendorLicenseModel.getDescription());
145     info.addProperty(InfoPropertyName.iconRef.name(), vendorLicenseModel.getIconRef());
146     info.addProperty(InfoPropertyName.oldVersion.name(), vendorLicenseModel.getOldVersion());
147   }
148
149   /*private VendorLicenseModelEntity mapInfoToVlm(String vlmId, Version version, Info info) {
150     VendorLicenseModelEntity vendorLicenseModel = new VendorLicenseModelEntity(vlmId, version);
151     vendorLicenseModel.setVendorName(info.getProperty(InfoPropertyName.name.name()));
152     vendorLicenseModel.setDescription(info.getProperty(InfoPropertyName.description.name()));
153     vendorLicenseModel.setIconRef(info.getProperty(InfoPropertyName.iconRef.name()));
154     return vendorLicenseModel;
155   }*/
156
157   public enum InfoPropertyName {
158     name,
159     description,
160     iconRef,
161     oldVersion
162   }
163 }