[SDC-29] Amdocs OnBoard 1707 initial commit.
[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.Id;
5 import com.amdocs.zusammen.datatypes.SessionContext;
6 import com.amdocs.zusammen.datatypes.item.Action;
7 import com.amdocs.zusammen.datatypes.item.ElementContext;
8 import com.amdocs.zusammen.datatypes.item.Info;
9 import com.amdocs.zusammen.datatypes.item.ItemVersion;
10 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
11 import org.openecomp.core.zusammen.api.ZusammenUtil;
12 import org.openecomp.sdc.vendorlicense.dao.VendorLicenseModelDao;
13 import org.openecomp.sdc.vendorlicense.dao.types.VendorLicenseModelEntity;
14 import org.openecomp.sdc.versioning.VersioningManagerFactory;
15 import org.openecomp.sdc.versioning.dao.types.Version;
16 import org.openecomp.sdc.versioning.types.VersionableEntityMetadata;
17 import org.openecomp.sdc.versioning.types.VersionableEntityStoreType;
18
19 import java.util.Collection;
20 import java.util.Date;
21 import java.util.stream.Collectors;
22
23 public class VendorLicenseModelDaoZusammenImpl implements VendorLicenseModelDao {
24
25   private ZusammenAdaptor zusammenAdaptor;
26
27   public VendorLicenseModelDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) {
28     this.zusammenAdaptor = zusammenAdaptor;
29   }
30
31   @Override
32   public void registerVersioning(String versionableEntityType) {
33     VersionableEntityMetadata metadata =
34         new VersionableEntityMetadata(VersionableEntityStoreType.Zusammen, "vlm", null, null);
35
36     VersioningManagerFactory.getInstance().createInterface()
37         .register(versionableEntityType, metadata);
38   }
39
40   @Override
41   public Collection<VendorLicenseModelEntity> list(VendorLicenseModelEntity entity) {
42     return zusammenAdaptor.listItems(ZusammenUtil.createSessionContext()).stream()
43         .map(item -> mapInfoToVlm(
44             item.getId().getValue(), null, item.getInfo(),
45             item.getModificationTime(), item.getCreationTime()))
46         .collect(Collectors.toList());
47   }
48
49   @Override
50   public void create(VendorLicenseModelEntity vendorLicenseModel) {
51     SessionContext context = ZusammenUtil.createSessionContext();
52
53     Id itemId = zusammenAdaptor.createItem(context, mapVlmToZusammenItemInfo(vendorLicenseModel));
54     Id versionId =
55         zusammenAdaptor.createVersion(context, itemId, null, ZusammenUtil.createFirstVersionData());
56
57     ZusammenElement generalElement = mapVlmToZusammenElement(vendorLicenseModel, Action.CREATE);
58     zusammenAdaptor.saveElement(context, new ElementContext(itemId, versionId),
59         generalElement, "Create VSP General Info Element");
60
61     vendorLicenseModel.setId(itemId.getValue());//set id for caller
62   }
63
64   @Override
65   public void update(VendorLicenseModelEntity vendorLicenseModel) {
66     SessionContext context = ZusammenUtil.createSessionContext();
67     Id itemId = new Id(vendorLicenseModel.getId());
68     Id versionId = VlmZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor);
69
70     zusammenAdaptor.updateItem(context, itemId, mapVlmToZusammenItemInfo(vendorLicenseModel));
71
72     ZusammenElement generalElement = mapVlmToZusammenElement(vendorLicenseModel, Action.UPDATE);
73     zusammenAdaptor.saveElement(context, new ElementContext(itemId, versionId),
74         generalElement, "Update VSP General Info Element");
75   }
76
77   @Override
78   public VendorLicenseModelEntity get(VendorLicenseModelEntity vendorLicenseModel) {
79     SessionContext context = ZusammenUtil.createSessionContext();
80     Id itemId = new Id(vendorLicenseModel.getId());
81     ItemVersion itemVersion = VlmZusammenUtil.getFirstVersion(context, itemId, zusammenAdaptor);
82     ElementContext elementContext = new ElementContext(itemId, itemVersion.getId(),
83         VlmZusammenUtil.getVersionTag(vendorLicenseModel.getVersion()));
84
85     return zusammenAdaptor
86         .getElementInfoByName(context, elementContext, null, StructureElement.General.name())
87         .map(generalElementInfo -> mapInfoToVlm(
88             vendorLicenseModel.getId(), vendorLicenseModel.getVersion(),
89             generalElementInfo.getInfo(),
90             itemVersion.getModificationTime(), itemVersion.getCreationTime()))
91         .orElse(null);
92   }
93
94   @Override
95   public void delete(VendorLicenseModelEntity entity) {
96
97   }
98
99   private Info mapVlmToZusammenItemInfo(VendorLicenseModelEntity vendorLicenseModel) {
100     Info info = new Info();
101     info.setName(vendorLicenseModel.getVendorName());
102     info.setDescription(vendorLicenseModel.getDescription());
103     info.addProperty("type", "vlm");
104     addVlmToInfo(info, vendorLicenseModel);
105     return info;
106   }
107
108   private ZusammenElement mapVlmToZusammenElement(VendorLicenseModelEntity vendorLicenseModel,
109                                                   Action action) {
110     ZusammenElement generalElement =
111         VlmZusammenUtil.buildStructuralElement(StructureElement.General, action);
112     addVlmToInfo(generalElement.getInfo(), vendorLicenseModel);
113     return generalElement;
114   }
115
116   private void addVlmToInfo(Info info, VendorLicenseModelEntity vendorLicenseModel) {
117     info.addProperty(InfoPropertyName.name.name(), vendorLicenseModel.getVendorName());
118     info.addProperty(InfoPropertyName.description.name(), vendorLicenseModel.getDescription());
119     info.addProperty(InfoPropertyName.iconRef.name(), vendorLicenseModel.getIconRef());
120   }
121
122   private VendorLicenseModelEntity mapInfoToVlm(String vlmId, Version version, Info info,
123                                                 Date modificationTime, Date creationTime) {
124     VendorLicenseModelEntity vendorLicenseModel = new VendorLicenseModelEntity(vlmId, version);
125     vendorLicenseModel.setVendorName(info.getProperty(InfoPropertyName.name.name()));
126     vendorLicenseModel.setDescription(info.getProperty(InfoPropertyName.description.name()));
127     vendorLicenseModel.setIconRef(info.getProperty(InfoPropertyName.iconRef.name()));
128     vendorLicenseModel.setWritetimeMicroSeconds(
129         modificationTime == null ? creationTime.getTime() : modificationTime.getTime());
130     return vendorLicenseModel;
131   }
132
133   private enum InfoPropertyName {
134     name,
135     description,
136     iconRef
137   }
138 }