1 package org.openecomp.sdc.vendorlicense.dao.impl.zusammen;
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;
19 import java.util.Collection;
20 import java.util.Date;
21 import java.util.stream.Collectors;
23 public class VendorLicenseModelDaoZusammenImpl implements VendorLicenseModelDao {
25 private ZusammenAdaptor zusammenAdaptor;
27 public VendorLicenseModelDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) {
28 this.zusammenAdaptor = zusammenAdaptor;
32 public void registerVersioning(String versionableEntityType) {
33 VersionableEntityMetadata metadata =
34 new VersionableEntityMetadata(VersionableEntityStoreType.Zusammen, "vlm", null, null);
36 VersioningManagerFactory.getInstance().createInterface()
37 .register(versionableEntityType, metadata);
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());
50 public void create(VendorLicenseModelEntity vendorLicenseModel) {
51 SessionContext context = ZusammenUtil.createSessionContext();
53 Id itemId = zusammenAdaptor.createItem(context, mapVlmToZusammenItemInfo(vendorLicenseModel));
55 zusammenAdaptor.createVersion(context, itemId, null, ZusammenUtil.createFirstVersionData());
57 ZusammenElement generalElement = mapVlmToZusammenElement(vendorLicenseModel, Action.CREATE);
58 zusammenAdaptor.saveElement(context, new ElementContext(itemId, versionId),
59 generalElement, "Create VSP General Info Element");
61 vendorLicenseModel.setId(itemId.getValue());//set id for caller
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);
70 zusammenAdaptor.updateItem(context, itemId, mapVlmToZusammenItemInfo(vendorLicenseModel));
72 ZusammenElement generalElement = mapVlmToZusammenElement(vendorLicenseModel, Action.UPDATE);
73 zusammenAdaptor.saveElement(context, new ElementContext(itemId, versionId),
74 generalElement, "Update VSP General Info Element");
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()));
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()))
95 public void delete(VendorLicenseModelEntity entity) {
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);
108 private ZusammenElement mapVlmToZusammenElement(VendorLicenseModelEntity vendorLicenseModel,
110 ZusammenElement generalElement =
111 VlmZusammenUtil.buildStructuralElement(StructureElement.General, action);
112 addVlmToInfo(generalElement.getInfo(), vendorLicenseModel);
113 return generalElement;
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());
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;
133 private enum InfoPropertyName {