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
index cd1ef0f..1306551 100644 (file)
@@ -1,23 +1,21 @@
 package org.openecomp.sdc.vendorlicense.dao.impl.zusammen;
 
 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement;
-import com.amdocs.zusammen.datatypes.Id;
 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 com.amdocs.zusammen.datatypes.item.ItemVersion;
 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.VersioningManagerFactory;
-import org.openecomp.sdc.versioning.dao.types.Version;
 import org.openecomp.sdc.versioning.types.VersionableEntityMetadata;
 import org.openecomp.sdc.versioning.types.VersionableEntityStoreType;
 
 import java.util.Collection;
-import java.util.Date;
 import java.util.stream.Collectors;
 
 public class VendorLicenseModelDaoZusammenImpl implements VendorLicenseModelDao {
@@ -31,63 +29,91 @@ public class VendorLicenseModelDaoZusammenImpl implements VendorLicenseModelDao
   @Override
   public void registerVersioning(String versionableEntityType) {
     VersionableEntityMetadata metadata =
-        new VersionableEntityMetadata(VersionableEntityStoreType.Zusammen, "vlm", null, null);
+        new VersionableEntityMetadata(VersionableEntityStoreType.Zusammen, "VendorLicenseModel",
+            null, null);
 
     VersioningManagerFactory.getInstance().createInterface()
         .register(versionableEntityType, metadata);
   }
 
   @Override
-  public Collection<VendorLicenseModelEntity> list(VendorLicenseModelEntity entity) {
+  public Collection<VendorLicenseModelEntity> list(
+      VendorLicenseModelEntity vendorLicenseModelEntity) {
+
+    ElementToVLMGeneralConvertor convertor = new ElementToVLMGeneralConvertor();
     return zusammenAdaptor.listItems(ZusammenUtil.createSessionContext()).stream()
-        .map(item -> mapInfoToVlm(
-            item.getId().getValue(), null, item.getInfo(),
-            item.getModificationTime(), item.getCreationTime()))
+        .filter(item -> "VendorLicenseModel".equals(item.getInfo().getProperty("item_type")))
+        .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();
 
-    Id itemId = zusammenAdaptor.createItem(context, mapVlmToZusammenItemInfo(vendorLicenseModel));
-    Id versionId =
-        zusammenAdaptor.createVersion(context, itemId, null, ZusammenUtil.createFirstVersionData());
+    ElementContext elementContext = new ElementContext(vendorLicenseModel.getId(),
+        vendorLicenseModel.getVersion().getId());
 
     ZusammenElement generalElement = mapVlmToZusammenElement(vendorLicenseModel, Action.CREATE);
-    zusammenAdaptor.saveElement(context, new ElementContext(itemId, versionId),
-        generalElement, "Create VSP General Info Element");
 
-    vendorLicenseModel.setId(itemId.getValue());//set id for caller
+    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) {
-    SessionContext context = ZusammenUtil.createSessionContext();
-    Id itemId = new Id(vendorLicenseModel.getId());
-    Id versionId = VlmZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor);
-
-    zusammenAdaptor.updateItem(context, itemId, mapVlmToZusammenItemInfo(vendorLicenseModel));
-
     ZusammenElement generalElement = mapVlmToZusammenElement(vendorLicenseModel, Action.UPDATE);
-    zusammenAdaptor.saveElement(context, new ElementContext(itemId, versionId),
+
+    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();
-    Id itemId = new Id(vendorLicenseModel.getId());
-    ItemVersion itemVersion = VlmZusammenUtil.getFirstVersion(context, itemId, zusammenAdaptor);
-    ElementContext elementContext = new ElementContext(itemId, itemVersion.getId(),
-        VlmZusammenUtil.getVersionTag(vendorLicenseModel.getVersion()));
-
+    ElementContext elementContext =
+        new ElementContext(vendorLicenseModel.getId(), vendorLicenseModel.getVersion().getId());
+    ElementToVLMGeneralConvertor convertor = new ElementToVLMGeneralConvertor();
     return zusammenAdaptor
-        .getElementInfoByName(context, elementContext, null, StructureElement.General.name())
-        .map(generalElementInfo -> mapInfoToVlm(
-            vendorLicenseModel.getId(), vendorLicenseModel.getVersion(),
-            generalElementInfo.getInfo(),
-            itemVersion.getModificationTime(), itemVersion.getCreationTime()))
+        .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);
   }
 
@@ -96,19 +122,19 @@ public class VendorLicenseModelDaoZusammenImpl implements VendorLicenseModelDao
 
   }
 
-  private Info mapVlmToZusammenItemInfo(VendorLicenseModelEntity vendorLicenseModel) {
/* private Info mapVlmToZusammenItemInfo(VendorLicenseModelEntity vendorLicenseModel) {
     Info info = new Info();
     info.setName(vendorLicenseModel.getVendorName());
     info.setDescription(vendorLicenseModel.getDescription());
-    info.addProperty("type", "vlm");
+    info.addProperty("type", "VendorLicenseModel");
     addVlmToInfo(info, vendorLicenseModel);
     return info;
-  }
+  }*/
 
   private ZusammenElement mapVlmToZusammenElement(VendorLicenseModelEntity vendorLicenseModel,
                                                   Action action) {
     ZusammenElement generalElement =
-        VlmZusammenUtil.buildStructuralElement(StructureElement.General, action);
+        ZusammenUtil.buildStructuralElement(ElementType.VendorLicenseModel, action);
     addVlmToInfo(generalElement.getInfo(), vendorLicenseModel);
     return generalElement;
   }
@@ -117,22 +143,21 @@ public class VendorLicenseModelDaoZusammenImpl implements VendorLicenseModelDao
     info.addProperty(InfoPropertyName.name.name(), vendorLicenseModel.getVendorName());
     info.addProperty(InfoPropertyName.description.name(), vendorLicenseModel.getDescription());
     info.addProperty(InfoPropertyName.iconRef.name(), vendorLicenseModel.getIconRef());
+    info.addProperty(InfoPropertyName.oldVersion.name(), vendorLicenseModel.getOldVersion());
   }
 
-  private VendorLicenseModelEntity mapInfoToVlm(String vlmId, Version version, Info info,
-                                                Date modificationTime, Date creationTime) {
+  /*private VendorLicenseModelEntity mapInfoToVlm(String vlmId, Version version, Info info) {
     VendorLicenseModelEntity vendorLicenseModel = new VendorLicenseModelEntity(vlmId, version);
     vendorLicenseModel.setVendorName(info.getProperty(InfoPropertyName.name.name()));
     vendorLicenseModel.setDescription(info.getProperty(InfoPropertyName.description.name()));
     vendorLicenseModel.setIconRef(info.getProperty(InfoPropertyName.iconRef.name()));
-    vendorLicenseModel.setWritetimeMicroSeconds(
-        modificationTime == null ? creationTime.getTime() : modificationTime.getTime());
     return vendorLicenseModel;
-  }
+  }*/
 
-  private enum InfoPropertyName {
+  public enum InfoPropertyName {
     name,
     description,
-    iconRef
+    iconRef,
+    oldVersion
   }
 }