aboutsummaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen
diff options
context:
space:
mode:
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen')
-rw-r--r--openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ComponentDaoZusammenImpl.java244
-rw-r--r--openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ComponentDependencyModelDaoZusammenImpl.java201
-rw-r--r--openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ElementPropertyName.java6
-rw-r--r--openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ElementType.java9
-rw-r--r--openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/MibDaoZusammenImpl.java171
-rw-r--r--openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/NetworkDaoZusammenImpl.java150
-rw-r--r--openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/NicDaoZusammenImpl.java257
-rw-r--r--openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/OrchestrationTemplateCandidateDaoZusammenImpl.java134
-rw-r--r--openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/OrchestrationTemplateDaoZusammenImpl.java111
-rw-r--r--openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ProcessDaoZusammenImpl.java229
-rw-r--r--openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/StructureElement.java20
-rw-r--r--openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/VendorSoftwareProductInfoDaoZusammenImpl.java228
-rw-r--r--openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/VspZusammenUtil.java61
13 files changed, 1821 insertions, 0 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ComponentDaoZusammenImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ComponentDaoZusammenImpl.java
new file mode 100644
index 0000000000..8ef09ada7b
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ComponentDaoZusammenImpl.java
@@ -0,0 +1,244 @@
+package org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen;
+
+import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element;
+import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo;
+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 org.openecomp.core.utilities.file.FileUtils;
+import org.openecomp.core.zusammen.api.ZusammenAdaptor;
+import org.openecomp.core.zusammen.api.ZusammenUtil;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity;
+import org.openecomp.sdc.versioning.dao.types.Version;
+
+import java.io.ByteArrayInputStream;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+public class ComponentDaoZusammenImpl implements ComponentDao {
+
+ private ZusammenAdaptor zusammenAdaptor;
+
+ public ComponentDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) {
+ this.zusammenAdaptor = zusammenAdaptor;
+ }
+
+ @Override
+ public void registerVersioning(String versionableEntityType) {
+ }
+
+ @Override
+ public Collection<ComponentEntity> list(ComponentEntity component) {
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(component.getVspId());
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
+ VspZusammenUtil.getVersionTag(component.getVersion()));
+
+ return listComponents(zusammenAdaptor, context, elementContext, component.getVspId(),
+ component.getVersion());
+ }
+
+ static Collection<ComponentEntity> listComponents(ZusammenAdaptor zusammenAdaptor,
+ SessionContext context,
+ ElementContext elementContext,
+ String vspId, Version version) {
+ return zusammenAdaptor
+ .listElementsByName(context, elementContext, null, StructureElement.Components.name())
+ .stream().map(elementInfo -> mapElementInfoToComponent(vspId, version, elementInfo))
+ .collect(Collectors.toList());
+ }
+
+ private static ComponentEntity mapElementInfoToComponent(String vspId, Version version,
+ ElementInfo elementInfo) {
+ ComponentEntity componentEntity =
+ new ComponentEntity(vspId, version, elementInfo.getId().getValue());
+ componentEntity.setCompositionData(
+ elementInfo.getInfo().getProperty(ElementPropertyName.compositionData.name()));
+ return componentEntity;
+ }
+
+ @Override
+ public void create(ComponentEntity component) {
+ ZusammenElement componentElement = componentToZusammen(component, Action.CREATE);
+ ZusammenElement componentsElement =
+ VspZusammenUtil.buildStructuralElement(StructureElement.Components, null);
+ componentsElement.getSubElements().add(componentElement);
+
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(component.getVspId());
+ Optional<Element> savedElement = zusammenAdaptor.saveElement(context,
+ new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor)),
+ componentsElement, "Create component");
+ savedElement.ifPresent(element ->
+ component.setId(element.getSubElements().iterator().next().getElementId().getValue()));
+ }
+
+ @Override
+ public void update(ComponentEntity component) {
+ ZusammenElement componentElement = componentToZusammen(component, Action.UPDATE);
+
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(component.getVspId());
+ zusammenAdaptor.saveElement(context,
+ new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor)),
+ componentElement, String.format("Update component with id %s", component.getId()));
+ }
+
+ @Override
+ public ComponentEntity get(ComponentEntity component) {
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(component.getVspId());
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
+ VspZusammenUtil.getVersionTag(component.getVersion()));
+
+ Optional<Element> element =
+ zusammenAdaptor.getElement(context, elementContext, component.getId());
+
+ if (element.isPresent()) {
+ component.setCompositionData(new String(FileUtils.toByteArray(element.get().getData())));
+ return component;
+ }
+ return null;
+ }
+
+ @Override
+ public void delete(ComponentEntity component) {
+ ZusammenElement componentElement = new ZusammenElement();
+ componentElement.setElementId(new Id(component.getId()));
+ componentElement.setAction(Action.DELETE);
+
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(component.getVspId());
+ zusammenAdaptor.saveElement(context,
+ new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor)),
+ componentElement, String.format("Delete component with id %s", component.getId()));
+ }
+
+ @Override
+ public ComponentEntity getQuestionnaireData(String vspId, Version version, String componentId) {
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(vspId);
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
+ VspZusammenUtil.getVersionTag(version));
+
+ return getQuestionnaire(context, elementContext,
+ new ComponentEntity(vspId, version, componentId));
+ }
+
+ private ComponentEntity getQuestionnaire(SessionContext context, ElementContext elementContext,
+ ComponentEntity component) {
+ Optional<Element> questionnaireElement = zusammenAdaptor
+ .getElementByName(context, elementContext, new Id(component.getId()),
+ StructureElement.Questionnaire.name());
+ return questionnaireElement.map(
+ element -> element.getData() == null
+ ? null
+ : new String(FileUtils.toByteArray(element.getData())))
+ .map(questionnaireData -> {
+ component.setQuestionnaireData(questionnaireData);
+ return component;
+ })
+ .orElse(null);
+ }
+
+ @Override
+ public void updateQuestionnaireData(String vspId, Version version, String componentId,
+ String questionnaireData) {
+ ZusammenElement questionnaireElement =
+ componentQuestionnaireToZusammen(questionnaireData, Action.UPDATE);
+
+ ZusammenElement componentElement = new ZusammenElement();
+ componentElement.setAction(Action.IGNORE);
+ componentElement.setElementId(new Id(componentId));
+ componentElement.setSubElements(Collections.singletonList(questionnaireElement));
+
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(vspId);
+ zusammenAdaptor.saveElement(context,
+ new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor)),
+ componentElement, "Update component questionnaire");
+ }
+
+ @Override
+ public Collection<ComponentEntity> listQuestionnaires(String vspId, Version version) {
+ return listCompositionAndQuestionnaire(vspId, version);
+ }
+
+ @Override
+ public Collection<ComponentEntity> listCompositionAndQuestionnaire(String vspId,
+ Version version) {
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(vspId);
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
+ VspZusammenUtil.getVersionTag(version));
+
+ Collection<ComponentEntity> components =
+ listComponents(zusammenAdaptor, context, elementContext, vspId, version);
+
+ components.forEach(component -> getQuestionnaire(context, elementContext, component));
+ return components;
+ }
+
+ @Override
+ public void deleteAll(String vspId, Version version) {
+ ZusammenElement componentsElement =
+ VspZusammenUtil.buildStructuralElement(StructureElement.Components, Action.DELETE);
+
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(vspId);
+ zusammenAdaptor.saveElement(context,
+ new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor)),
+ componentsElement, "Delete all components");
+ }
+
+ private ZusammenElement componentToZusammen(ComponentEntity component, Action action) {
+ ZusammenElement componentElement = buildComponentElement(component, action);
+ if (action == Action.CREATE) {
+ componentElement
+ .setSubElements(Arrays.asList(
+ componentQuestionnaireToZusammen(component.getQuestionnaireData(), Action.CREATE),
+ VspZusammenUtil.buildStructuralElement(StructureElement.Nics, Action.CREATE),
+ VspZusammenUtil.buildStructuralElement(StructureElement.Processes, Action.CREATE),
+ VspZusammenUtil.buildStructuralElement(StructureElement.Mibs, Action.CREATE)));
+ }
+ return componentElement;
+ }
+
+ private ZusammenElement componentQuestionnaireToZusammen(String questionnaireData,
+ Action action) {
+ ZusammenElement questionnaireElement =
+ VspZusammenUtil.buildStructuralElement(StructureElement.Questionnaire, action);
+ questionnaireElement.setData(new ByteArrayInputStream(questionnaireData.getBytes()));
+ return questionnaireElement;
+ }
+
+ private ZusammenElement buildComponentElement(ComponentEntity component, Action action) {
+ ZusammenElement componentElement = new ZusammenElement();
+ componentElement.setAction(action);
+ if (component.getId() != null) {
+ componentElement.setElementId(new Id(component.getId()));
+ }
+ Info info = new Info();
+ info.addProperty(ElementPropertyName.type.name(), ElementType.Component);
+ info.addProperty(ElementPropertyName.compositionData.name(), component.getCompositionData());
+ componentElement.setInfo(info);
+ componentElement.setData(new ByteArrayInputStream(component.getCompositionData().getBytes()));
+ return componentElement;
+ }
+}
diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ComponentDependencyModelDaoZusammenImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ComponentDependencyModelDaoZusammenImpl.java
new file mode 100644
index 0000000000..e36b6c7743
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ComponentDependencyModelDaoZusammenImpl.java
@@ -0,0 +1,201 @@
+package org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen;
+
+import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element;
+import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo;
+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 org.openecomp.core.zusammen.api.ZusammenAdaptor;
+import org.openecomp.core.zusammen.api.ZusammenUtil;
+import org.openecomp.sdc.logging.api.Logger;
+import org.openecomp.sdc.logging.api.LoggerFactory;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDependencyModelDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentDependencyModelEntity;
+import org.openecomp.sdc.versioning.dao.types.Version;
+
+import java.util.Collection;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+/**
+ * Created by ayalaben on 5/16/2017.
+ */
+public class ComponentDependencyModelDaoZusammenImpl implements ComponentDependencyModelDao {
+
+ private static final Logger logger =
+ LoggerFactory.getLogger(OrchestrationTemplateCandidateDaoZusammenImpl.class);
+
+ private ZusammenAdaptor zusammenAdaptor;
+
+ public ComponentDependencyModelDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) {
+ this.zusammenAdaptor = zusammenAdaptor;
+ }
+
+ @Override
+ public ComponentDependencyModelEntity get(ComponentDependencyModelEntity entity) {
+
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(entity.getVspId()); // entity.getId()?
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
+ VspZusammenUtil.getVersionTag(entity.getVersion()));
+
+ Optional<ElementInfo> componentDependencyElement =
+ zusammenAdaptor.getElementInfo(context, elementContext, new Id(entity.getId()));
+
+ if (componentDependencyElement.isPresent()) {
+ addComponentDependencyData(entity, componentDependencyElement.get());
+ return entity;
+ }
+
+ return null;
+ }
+
+ @Override
+ public void create(ComponentDependencyModelEntity entity) {
+
+ ZusammenElement componentDependencies =
+ VspZusammenUtil.buildStructuralElement(StructureElement.ComponentDependencies, null);
+
+ ZusammenElement componentDependency = buildComponentDependencyElement(entity);
+ componentDependency.setAction(Action.CREATE);
+
+ Id itemId = new Id(entity.getVspId());
+ SessionContext context = ZusammenUtil.createSessionContext();
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
+
+ Optional<Element> savedElement = zusammenAdaptor.saveElement(context, elementContext,
+ VspZusammenUtil.aggregateElements(componentDependencies, componentDependency),
+ "Create component dependency model");
+
+ savedElement.ifPresent(element ->
+ entity.setId(element.getSubElements().iterator().next().getElementId().getValue()));
+ }
+
+ @Override
+ public void update(ComponentDependencyModelEntity entity) {
+ ZusammenElement componentDependencyElement = buildComponentDependencyElement(entity);
+ componentDependencyElement.setAction(Action.UPDATE);
+
+ Id itemId = new Id(entity.getVspId());
+ SessionContext context = ZusammenUtil.createSessionContext();
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
+
+ zusammenAdaptor.saveElement(context, elementContext,
+ componentDependencyElement,
+ String.format("Update component dependency model with id %s", entity.getId()));
+ }
+
+ @Override
+ public void delete(ComponentDependencyModelEntity entity) {
+ ZusammenElement componentDependencyElement = new ZusammenElement();
+ componentDependencyElement.setElementId(new Id(entity.getId()));
+ componentDependencyElement.setAction(Action.DELETE);
+
+ Id itemId = new Id(entity.getVspId());
+ SessionContext context = ZusammenUtil.createSessionContext();
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
+
+
+ zusammenAdaptor.saveElement(context, elementContext,
+ componentDependencyElement,
+ String.format("Delete component dependency model with id %s", entity.getId()));
+ }
+
+ @Override
+ public void deleteAll(String vspId, Version version) {
+ ZusammenElement componentDependenciesElement =
+ VspZusammenUtil
+ .buildStructuralElement(StructureElement.ComponentDependencies, Action.DELETE);
+
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(vspId);
+ zusammenAdaptor.saveElement(context, new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor)),
+ componentDependenciesElement, "Delete all component dependencies");
+ }
+
+ @Override
+ public void registerVersioning(String versionableEntityType) {
+ //not implemented?
+ }
+
+ @Override
+ public Collection<ComponentDependencyModelEntity> list(ComponentDependencyModelEntity entity) {
+
+ Id itemId = new Id(entity.getVspId());
+ SessionContext context = ZusammenUtil.createSessionContext();
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
+ VspZusammenUtil.getVersionTag(entity.getVersion()));
+
+ return zusammenAdaptor.listElementsByName(context, elementContext,
+ null, StructureElement.ComponentDependencies.name())
+ .stream().map(elementInfo -> mapElementInfoToComponentDependencyModel(entity.getVspId(),
+ entity.getVersion(), elementInfo))
+ .collect(Collectors.toList());
+ }
+
+ private static ComponentDependencyModelEntity mapElementInfoToComponentDependencyModel(
+ String vspId, Version version,
+ ElementInfo elementInfo) {
+ ComponentDependencyModelEntity componentDependencyModelEntity =
+ new ComponentDependencyModelEntity(vspId, version, elementInfo.getId().getValue());
+ componentDependencyModelEntity.setSourceComponentId(elementInfo.getInfo()
+ .getProperty(ComponentDependencyModelPropertyName.sourcecomponent_id.name()));
+ componentDependencyModelEntity.setTargetComponentId(elementInfo.getInfo()
+ .getProperty(ComponentDependencyModelPropertyName.targetcomponent_id.name()));
+ componentDependencyModelEntity.setRelation(elementInfo.getInfo()
+ .getProperty(ComponentDependencyModelPropertyName.relation.name()));
+
+ return componentDependencyModelEntity;
+ }
+
+
+ private ZusammenElement buildComponentDependencyElement(ComponentDependencyModelEntity entity) {
+ ZusammenElement componentDependencyElement = new ZusammenElement();
+
+ if (entity.getId() != null) {
+ componentDependencyElement.setElementId(new Id(entity.getId()));
+ }
+
+ Info info = new Info();
+ info.addProperty(ComponentDependencyModelPropertyName.id.name(), entity.getId());
+ info.addProperty(ComponentDependencyModelPropertyName.relation.name(), entity.getRelation());
+ info.addProperty(ComponentDependencyModelPropertyName.sourcecomponent_id.name(),
+ entity.getSourceComponentId());
+ info.addProperty(ComponentDependencyModelPropertyName.targetcomponent_id.name(),
+ entity.getTargetComponentId());
+
+ componentDependencyElement.setInfo(info);
+
+ return componentDependencyElement;
+ }
+
+ private void addComponentDependencyData(ComponentDependencyModelEntity componentDependency,
+ ElementInfo componentDependencyElement) {
+ componentDependency.setId(componentDependencyElement.getInfo()
+ .getProperty(ComponentDependencyModelPropertyName.id.name()));
+ componentDependency.setRelation(componentDependencyElement.getInfo()
+ .getProperty(ComponentDependencyModelPropertyName.id.name()));
+ componentDependency.setSourceComponentId(componentDependencyElement.getInfo()
+ .getProperty(ComponentDependencyModelPropertyName.sourcecomponent_id.name()));
+ componentDependency.setTargetComponentId(componentDependencyElement.getInfo()
+ .getProperty(ComponentDependencyModelPropertyName.targetcomponent_id.name()));
+ }
+
+
+ private enum ComponentDependencyModelPropertyName {
+ id,
+ relation,
+ sourcecomponent_id,
+ targetcomponent_id,
+ }
+
+}
diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ElementPropertyName.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ElementPropertyName.java
new file mode 100644
index 0000000000..9ca0bf721a
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ElementPropertyName.java
@@ -0,0 +1,6 @@
+package org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen;
+
+public enum ElementPropertyName {
+ type,
+ compositionData
+}
diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ElementType.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ElementType.java
new file mode 100644
index 0000000000..b0313f5b14
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ElementType.java
@@ -0,0 +1,9 @@
+package org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen;
+
+public enum ElementType {
+ Network,
+ Component,
+ Nic,
+ Process,
+ LKG
+}
diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/MibDaoZusammenImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/MibDaoZusammenImpl.java
new file mode 100644
index 0000000000..10cdfbd9da
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/MibDaoZusammenImpl.java
@@ -0,0 +1,171 @@
+package org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen;
+
+import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element;
+import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo;
+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 org.openecomp.core.enrichment.types.ArtifactType;
+import org.openecomp.core.utilities.file.FileUtils;
+import org.openecomp.core.zusammen.api.ZusammenAdaptor;
+import org.openecomp.core.zusammen.api.ZusammenUtil;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.MibDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.MibEntity;
+import org.openecomp.sdc.versioning.dao.types.Version;
+
+import java.io.ByteArrayInputStream;
+import java.nio.ByteBuffer;
+import java.util.Collection;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+/**
+ * @author Avrahamg.
+ * @since March 21, 2017
+ */
+public class MibDaoZusammenImpl implements MibDao {
+
+ private static final String ARTIFACT_NAME = "name";
+
+ private ZusammenAdaptor zusammenAdaptor;
+
+ public MibDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) {
+ this.zusammenAdaptor = zusammenAdaptor;
+ }
+
+ @Override
+ public void registerVersioning(String versionableEntityType) {
+
+ }
+
+ @Override
+ public Optional<MibEntity> getByType(MibEntity mibEntity) {
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(mibEntity.getVspId());
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
+ VspZusammenUtil.getVersionTag(mibEntity.getVersion()));
+
+ Optional<Element> mibsElement =
+ zusammenAdaptor.getElementByName(context, elementContext, new Id(mibEntity
+ .getComponentId()), StructureElement.Mibs.toString());
+ if (mibsElement.isPresent()) {
+ Optional<Element> mibElement = zusammenAdaptor
+ .getElementByName(context, elementContext, mibsElement.get().getElementId(),
+ getMibStructuralElement(mibEntity.getType()).toString());
+ if (mibElement.isPresent()) {
+ mibEntity.setId(mibElement.get().getElementId().getValue());
+ mibEntity.setArtifactName((String) mibElement.get().getInfo().getProperties().get(ARTIFACT_NAME));
+ mibEntity.setArtifact(ByteBuffer.wrap(FileUtils.toByteArray(mibElement.get().getData())));
+ return Optional.of(mibEntity);
+ }
+ }
+
+ return Optional.empty();
+ }
+
+ @Override
+ public void create(MibEntity mibEntity) {
+ ZusammenElement mibElement = buildMibElement(mibEntity);
+
+ ZusammenElement mibsElement =
+ VspZusammenUtil.buildStructuralElement(StructureElement.Mibs, null);
+
+ ZusammenElement componentElement = buildComponentElement(mibEntity);
+
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(mibEntity.getVspId());
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
+
+ Optional<Element> savedElement = zusammenAdaptor.saveElement(context, elementContext,
+ VspZusammenUtil.aggregateElements(componentElement, mibsElement, mibElement),
+ "Create mib");
+ savedElement.ifPresent(element ->
+ mibEntity.setId(element.getSubElements().iterator().next()
+ .getSubElements().iterator().next().getElementId().getValue()));
+ }
+
+ @Override
+ public void delete(MibEntity mibEntity) {
+ ZusammenElement mibElement = new ZusammenElement();
+ mibElement.setElementId(new Id(mibEntity.getId()));
+ mibElement.setAction(Action.DELETE);
+
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(mibEntity.getVspId());
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
+
+ zusammenAdaptor.saveElement(context, elementContext, mibElement,
+ String.format("Delete mib with id %s", mibEntity.getId()));
+ }
+
+ @Override
+ public Collection<MibEntity> list(MibEntity mib) {
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(mib.getVspId());
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
+ VspZusammenUtil.getVersionTag(mib.getVersion()));
+
+ return zusammenAdaptor.listElementsByName(context, elementContext, new Id(mib.getComponentId()),
+ StructureElement.Mibs.toString()).stream()
+ .map(elementInfo ->
+ mapElementInfoToMib(mib.getVspId(), mib.getVersion(), mib.getComponentId(),
+ elementInfo))
+ .collect(Collectors.toList());
+ }
+
+ @Override
+ public void deleteAll(MibEntity mibEntity) {
+ ZusammenElement mibsElement =
+ VspZusammenUtil.buildStructuralElement(StructureElement.Mibs, Action.DELETE);
+
+ ZusammenElement componentElement = buildComponentElement(mibEntity);
+
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(mibEntity.getVspId());
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
+
+ zusammenAdaptor.saveElement(context, elementContext,
+ VspZusammenUtil.aggregateElements(componentElement, mibsElement), "Delete mibs");
+ }
+
+ private ZusammenElement buildComponentElement(MibEntity mibEntity) {
+ ZusammenElement componentElement = new ZusammenElement();
+ componentElement.setElementId(new Id(mibEntity.getComponentId()));
+ componentElement.setAction(Action.IGNORE);
+ return componentElement;
+ }
+
+ private ZusammenElement buildMibElement(MibEntity mib) {
+ ZusammenElement mibElement = VspZusammenUtil
+ .buildStructuralElement(getMibStructuralElement(mib.getType()), Action.UPDATE);
+ mibElement.getInfo().getProperties().put(ARTIFACT_NAME, mib.getArtifactName());
+ mibElement.setData(new ByteArrayInputStream(mib.getArtifact().array()));
+ return mibElement;
+ }
+
+ private MibEntity mapElementInfoToMib(String vspId, Version version, String componentId,
+ ElementInfo elementInfo) {
+ MibEntity mib = new MibEntity(vspId, version, componentId, elementInfo.getId().getValue());
+ mib.setArtifactName((String) elementInfo.getInfo().getProperties().get(ARTIFACT_NAME));
+ mib.setType(ArtifactType.valueOf(elementInfo.getInfo().getName()));
+ return mib;
+ }
+
+ private StructureElement getMibStructuralElement(ArtifactType type) {
+ switch (type) {
+ case SNMP_POLL:
+ return StructureElement.SNMP_POLL;
+ case SNMP_TRAP:
+ return StructureElement.SNMP_TRAP;
+ default:
+ throw new IllegalArgumentException();
+ }
+ }
+}
diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/NetworkDaoZusammenImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/NetworkDaoZusammenImpl.java
new file mode 100644
index 0000000000..898ee434e8
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/NetworkDaoZusammenImpl.java
@@ -0,0 +1,150 @@
+package org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen;
+
+import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element;
+import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo;
+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 org.openecomp.core.utilities.file.FileUtils;
+import org.openecomp.core.zusammen.api.ZusammenAdaptor;
+import org.openecomp.core.zusammen.api.ZusammenUtil;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.NetworkDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NetworkEntity;
+import org.openecomp.sdc.versioning.dao.types.Version;
+import org.openecomp.sdc.versioning.dao.types.VersionStatus;
+
+import java.io.ByteArrayInputStream;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+public class NetworkDaoZusammenImpl implements NetworkDao {
+
+ private ZusammenAdaptor zusammenAdaptor;
+
+ public NetworkDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) {
+ this.zusammenAdaptor = zusammenAdaptor;
+ }
+
+ @Override
+ public void registerVersioning(String versionableEntityType) {
+
+ }
+
+ @Override
+ public Collection<NetworkEntity> list(NetworkEntity network) {
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(network.getVspId());
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
+ VspZusammenUtil.getVersionTag(network.getVersion()));
+
+ return zusammenAdaptor
+ .listElementsByName(context, elementContext, null, StructureElement.Networks.name())
+ .stream().map(elementInfo ->
+ mapElementInfoToNetwork(network.getVspId(), network.getVersion(), elementInfo))
+ .collect(Collectors.toList());
+ }
+
+ private NetworkEntity mapElementInfoToNetwork(String vspId, Version version,
+ ElementInfo elementInfo) {
+ NetworkEntity networkEntity =
+ new NetworkEntity(vspId, version, elementInfo.getId().getValue());
+ networkEntity.setCompositionData(
+ elementInfo.getInfo().getProperty(ElementPropertyName.compositionData.name()));
+ return networkEntity;
+ }
+
+ @Override
+ public void create(NetworkEntity network) {
+ ZusammenElement networkElement = buildNetworkElement(network, Action.CREATE);
+ ZusammenElement networksElement =
+ VspZusammenUtil.buildStructuralElement(StructureElement.Networks, null);
+ networksElement.setSubElements(Collections.singletonList(networkElement));
+
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(network.getVspId());
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
+ Optional<Element> savedElement =
+ zusammenAdaptor.saveElement(context, elementContext, networksElement, "Create network");
+ savedElement.ifPresent(element ->
+ network.setId(element.getSubElements().iterator().next().getElementId().getValue()));
+ }
+
+ @Override
+ public void update(NetworkEntity network) {
+ ZusammenElement networkElement = buildNetworkElement(network, Action.UPDATE);
+
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(network.getVspId());
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
+ zusammenAdaptor.saveElement(context, elementContext, networkElement,
+ String.format("Update network with id %s", network.getId()));
+ }
+
+ @Override
+ public NetworkEntity get(NetworkEntity network) {
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(network.getVspId());
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
+ VspZusammenUtil.getVersionTag(network.getVersion()));
+
+ Optional<Element> element =
+ zusammenAdaptor.getElement(context, elementContext, network.getId());
+
+ if (element.isPresent()) {
+ network.setCompositionData(new String(FileUtils.toByteArray(element.get().getData())));
+ return network;
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ public void delete(NetworkEntity network) {
+ ZusammenElement networkElement = new ZusammenElement();
+ networkElement.setElementId(new Id(network.getId()));
+ networkElement.setAction(Action.DELETE);
+
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(network.getVspId());
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
+ zusammenAdaptor.saveElement(context, elementContext,
+ networkElement, String.format("Delete network with id %s", network.getId()));
+ }
+
+
+ @Override
+ public void deleteAll(String vspId, Version version) {
+ ZusammenElement networksElement =
+ VspZusammenUtil.buildStructuralElement(StructureElement.Networks, Action.DELETE);
+
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(vspId);
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
+ zusammenAdaptor.saveElement(context, elementContext, networksElement, "Delete all networks");
+ }
+
+ private ZusammenElement buildNetworkElement(NetworkEntity network, Action action) {
+ ZusammenElement networkElement = new ZusammenElement();
+ networkElement.setAction(action);
+ if (network.getId() != null) {
+ networkElement.setElementId(new Id(network.getId()));
+ }
+ Info info = new Info();
+ info.addProperty(ElementPropertyName.type.name(), ElementType.Network);
+ info.addProperty(ElementPropertyName.compositionData.name(), network.getCompositionData());
+ networkElement.setInfo(info);
+ networkElement.setData(new ByteArrayInputStream(network.getCompositionData().getBytes()));
+ return networkElement;
+ }
+}
diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/NicDaoZusammenImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/NicDaoZusammenImpl.java
new file mode 100644
index 0000000000..e597068d87
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/NicDaoZusammenImpl.java
@@ -0,0 +1,257 @@
+package org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen;
+
+import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element;
+import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo;
+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 org.openecomp.core.utilities.file.FileUtils;
+import org.openecomp.core.zusammen.api.ZusammenAdaptor;
+import org.openecomp.core.zusammen.api.ZusammenUtil;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.NicDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NicEntity;
+import org.openecomp.sdc.versioning.dao.types.Version;
+
+import java.io.ByteArrayInputStream;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+public class NicDaoZusammenImpl implements NicDao {
+
+ private ZusammenAdaptor zusammenAdaptor;
+
+ public NicDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) {
+ this.zusammenAdaptor = zusammenAdaptor;
+ }
+
+ @Override
+ public void registerVersioning(String versionableEntityType) {
+
+ }
+
+ @Override
+ public Collection<NicEntity> list(NicEntity nic) {
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(nic.getVspId());
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
+ VspZusammenUtil.getVersionTag(nic.getVersion()));
+
+ return listNics(context, elementContext, nic);
+ }
+
+ private Collection<NicEntity> listNics(SessionContext context, ElementContext elementContext,
+ NicEntity nic) {
+ return zusammenAdaptor
+ .listElementsByName(context, elementContext, new Id(nic.getComponentId()),
+ StructureElement.Nics.name())
+ .stream().map(elementInfo -> mapElementInfoToNic(
+ nic.getVspId(), nic.getVersion(), nic.getComponentId(), elementInfo))
+ .collect(Collectors.toList());
+ }
+
+ private NicEntity mapElementInfoToNic(String vspId, Version version,
+ String componentId, ElementInfo elementInfo) {
+ NicEntity nicEntity =
+ new NicEntity(vspId, version, componentId, elementInfo.getId().getValue());
+ nicEntity.setCompositionData(
+ elementInfo.getInfo().getProperty(ElementPropertyName.compositionData.name()));
+ return nicEntity;
+ }
+
+ @Override
+ public void create(NicEntity nic) {
+ ZusammenElement nicElement = nicToZusammen(nic, Action.CREATE);
+
+ ZusammenElement nicsElement =
+ VspZusammenUtil.buildStructuralElement(StructureElement.Nics, null);
+ nicsElement.setSubElements(Collections.singletonList(nicElement));
+
+ ZusammenElement componentElement =
+ buildZusammenElement(new Id(nic.getComponentId()), Action.IGNORE);
+ componentElement.setSubElements(Collections.singletonList(nicsElement));
+
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(nic.getVspId());
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
+
+ Optional<Element> savedElement =
+ zusammenAdaptor.saveElement(context, elementContext, componentElement, "Create nic");
+ savedElement.ifPresent(element ->
+ nic.setId(element.getSubElements().iterator().next()
+ .getSubElements().iterator().next().getElementId().getValue()));
+ }
+
+ @Override
+ public void update(NicEntity nic) {
+ ZusammenElement nicElement = nicToZusammen(nic, Action.UPDATE);
+
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(nic.getVspId());
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
+ zusammenAdaptor.saveElement(context, elementContext, nicElement,
+ String.format("Update nic with id %s", nic.getId()));
+ }
+
+ @Override
+ public NicEntity get(NicEntity nic) {
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(nic.getVspId());
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
+ VspZusammenUtil.getVersionTag(nic.getVersion()));
+ Optional<Element> element = zusammenAdaptor.getElement(context, elementContext, nic.getId());
+
+ if (element.isPresent()) {
+ nic.setCompositionData(new String(FileUtils.toByteArray(element.get().getData())));
+ return nic;
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ public void delete(NicEntity nic) {
+ ZusammenElement nicElement = buildZusammenElement(new Id(nic.getId()), Action.DELETE);
+
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(nic.getVspId());
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
+ zusammenAdaptor.saveElement(context, elementContext, nicElement,
+ String.format("Delete nic with id %s", nic.getId()));
+ }
+
+ @Override
+ public NicEntity getQuestionnaireData(String vspId, Version version, String componentId,
+ String nicId) {
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(vspId);
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
+ VspZusammenUtil.getVersionTag(version));
+
+ return getQuestionnaire(context, elementContext,
+ new NicEntity(vspId, version, componentId, nicId));
+ }
+
+ private NicEntity getQuestionnaire(SessionContext context, ElementContext elementContext,
+ NicEntity nic) {
+ Optional<Element> questionnaireElement = zusammenAdaptor
+ .getElementByName(context, elementContext, new Id(nic.getId()),
+ StructureElement.Questionnaire.name());
+ return questionnaireElement.map(
+ element -> element.getData() == null
+ ? null
+ : new String(FileUtils.toByteArray(element.getData())))
+ .map(questionnaireData -> {
+ nic.setQuestionnaireData(questionnaireData);
+ return nic;
+ })
+ .orElse(null);
+ }
+
+ @Override
+ public void updateQuestionnaireData(String vspId, Version version, String componentId,
+ String nicId, String questionnaireData) {
+ ZusammenElement questionnaireElement =
+ nicQuestionnaireToZusammen(questionnaireData, Action.UPDATE);
+
+ ZusammenElement nicElement = new ZusammenElement();
+ nicElement.setAction(Action.IGNORE);
+ nicElement.setElementId(new Id(nicId));
+ nicElement.setSubElements(Collections.singletonList(questionnaireElement));
+
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(vspId);
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
+ zusammenAdaptor.saveElement(context, elementContext, nicElement, "Update nic questionnaire");
+ }
+
+ @Override
+ public Collection<NicEntity> listByVsp(String vspId, Version version) {
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(vspId);
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
+ VspZusammenUtil.getVersionTag(version));
+
+ Collection<ComponentEntity> components = ComponentDaoZusammenImpl
+ .listComponents(zusammenAdaptor, context, elementContext, vspId, version);
+
+ return components.stream()
+ .map(component ->
+ listNics(context, elementContext,
+ new NicEntity(vspId, version, component.getId(), null)).stream()
+ .map(nic -> getQuestionnaire(context, elementContext, nic))
+ .collect(Collectors.toList()))
+ .flatMap(Collection::stream)
+ .collect(Collectors.toList());
+ }
+
+ @Override
+ public void deleteByComponentId(String vspId, Version version, String componentId) {
+ ZusammenElement componentElement = buildZusammenElement(new Id(componentId), Action.IGNORE);
+ componentElement.setSubElements(Collections.singletonList(
+ VspZusammenUtil.buildStructuralElement(StructureElement.Nics, Action.DELETE)));
+
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(vspId);
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
+ zusammenAdaptor.saveElement(context, elementContext, componentElement,
+ String.format("Delete all nics of component %s", componentId));
+ }
+
+ @Override
+ public void deleteByVspId(String vspId, Version version) {
+
+ }
+
+ private ZusammenElement nicToZusammen(NicEntity nic, Action action) {
+ ZusammenElement nicElement = buildNicElement(nic, action);
+ if (action == Action.CREATE) {
+ nicElement.setSubElements(Collections.singletonList(
+ nicQuestionnaireToZusammen(nic.getQuestionnaireData(), Action.CREATE)));
+ }
+ return nicElement;
+ }
+
+ private ZusammenElement nicQuestionnaireToZusammen(String questionnaireData,
+ Action action) {
+ ZusammenElement questionnaireElement =
+ VspZusammenUtil.buildStructuralElement(StructureElement.Questionnaire, action);
+ questionnaireElement.setData(new ByteArrayInputStream(questionnaireData.getBytes()));
+ return questionnaireElement;
+ }
+
+ private ZusammenElement buildZusammenElement(Id elementId, Action action) {
+ ZusammenElement element = new ZusammenElement();
+ element.setElementId(elementId);
+ element.setAction(action);
+ return element;
+ }
+
+ private ZusammenElement buildNicElement(NicEntity nic, Action action) {
+ ZusammenElement nicElement = new ZusammenElement();
+ nicElement.setAction(action);
+ if (nic.getId() != null) {
+ nicElement.setElementId(new Id(nic.getId()));
+ }
+ Info info = new Info();
+ info.addProperty(ElementPropertyName.type.name(), ElementType.Nic);
+ info.addProperty(ElementPropertyName.compositionData.name(), nic.getCompositionData());
+ nicElement.setInfo(info);
+ nicElement.setData(new ByteArrayInputStream(nic.getCompositionData().getBytes()));
+ return nicElement;
+ }
+}
diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/OrchestrationTemplateCandidateDaoZusammenImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/OrchestrationTemplateCandidateDaoZusammenImpl.java
new file mode 100644
index 0000000000..c101955292
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/OrchestrationTemplateCandidateDaoZusammenImpl.java
@@ -0,0 +1,134 @@
+package org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen;
+
+import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element;
+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.utils.fileutils.FileUtils;
+import org.openecomp.core.utilities.json.JsonUtil;
+import org.openecomp.core.zusammen.api.ZusammenAdaptor;
+import org.openecomp.core.zusammen.api.ZusammenUtil;
+import org.openecomp.sdc.logging.api.Logger;
+import org.openecomp.sdc.logging.api.LoggerFactory;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateCandidateDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.OrchestrationTemplateCandidateData;
+import org.openecomp.sdc.vendorsoftwareproduct.types.candidateheat.FilesDataStructure;
+import org.openecomp.sdc.versioning.dao.types.Version;
+import org.openecomp.sdc.versioning.dao.types.VersionStatus;
+
+import java.io.ByteArrayInputStream;
+import java.nio.ByteBuffer;
+import java.util.Optional;
+
+public class OrchestrationTemplateCandidateDaoZusammenImpl
+ implements OrchestrationTemplateCandidateDao {
+ private static final Logger logger =
+ LoggerFactory.getLogger(OrchestrationTemplateCandidateDaoZusammenImpl.class);
+
+ private ZusammenAdaptor zusammenAdaptor;
+
+ public OrchestrationTemplateCandidateDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) {
+ this.zusammenAdaptor = zusammenAdaptor;
+ }
+
+ @Override
+ public void registerVersioning(String versionableEntityType) {
+
+ }
+
+ @Override
+ public OrchestrationTemplateCandidateData get(String vspId, Version version) {
+ logger.info("Getting orchestration template for vsp id -> " + vspId);
+
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(vspId);
+ Id versionId = VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor);
+ ElementContext elementContext = new ElementContext(itemId, versionId,
+ VspZusammenUtil.getVersionTag(version));
+
+ Optional<Element> candidateElement =
+ zusammenAdaptor.getElementByName(context, elementContext, null,
+ StructureElement.OrchestrationTemplateCandidate.name());
+ if (candidateElement.isPresent()) {
+ OrchestrationTemplateCandidateData candidateData = new OrchestrationTemplateCandidateData();
+ candidateData.setFilesDataStructure(
+ new String(FileUtils.toByteArray(candidateElement.get().getData())));
+
+ zusammenAdaptor
+ .getElementByName(context, elementContext, candidateElement.get().getElementId(),
+ StructureElement.OrchestrationTemplateCandidateContent.name())
+ .ifPresent(candidateContentElement -> candidateData.setContentData(
+ ByteBuffer.wrap(FileUtils.toByteArray(candidateContentElement.getData()))));
+ logger.info("Finished getting orchestration template for vsp id -> " + vspId);
+ return candidateData;
+ }
+ logger.info(String.format("Orchestration template for vsp id %s does not exist", vspId));
+ return null;
+ }
+
+ @Override
+ public void update(String vspId, OrchestrationTemplateCandidateData candidateData) {
+ logger.info("Uploading candidate data entity for vsp id -> " + vspId);
+
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(vspId);
+ Id versionId = VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor);
+ ElementContext elementContext = new ElementContext(itemId, versionId);
+
+ ZusammenElement candidateElement = VspZusammenUtil
+ .buildStructuralElement(StructureElement.OrchestrationTemplateCandidate, Action.UPDATE);
+ candidateElement
+ .setData(new ByteArrayInputStream(candidateData.getFilesDataStructure().getBytes()));
+ ZusammenElement candidateContentElement = VspZusammenUtil
+ .buildStructuralElement(StructureElement.OrchestrationTemplateCandidateContent, Action.UPDATE);
+ candidateContentElement
+ .setData(new ByteArrayInputStream(candidateData.getContentData().array()));
+ candidateElement.addSubElement(candidateContentElement);
+
+ zusammenAdaptor.saveElement(context, elementContext, candidateElement,
+ "Update Orchestration Template Candidate");
+ logger.info("Finished uploading candidate data entity for vsp id -> " + vspId);
+ }
+
+ @Override
+ public void updateStructure(String vspId, Version version, FilesDataStructure fileDataStructure) {
+ logger.info("Updating orchestration template for VSP id -> " + vspId);
+
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(vspId);
+ Id versionId = VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor);
+ ElementContext elementContext = new ElementContext(itemId, versionId);
+
+ ZusammenElement candidateElement = VspZusammenUtil
+ .buildStructuralElement(StructureElement.OrchestrationTemplateCandidate, Action.UPDATE);
+ candidateElement
+ .setData(new ByteArrayInputStream(JsonUtil.object2Json(fileDataStructure).getBytes()));
+ zusammenAdaptor.saveElement(context, elementContext, candidateElement,
+ "Update Orchestration Template Candidate structure");
+ logger.info("Finished uploading candidate data entity for vsp id -> " + vspId);
+ }
+
+
+ @Override
+ public Optional<String> getStructure(String vspId, Version version) {
+ logger.info("Getting orchestration template structure for vsp id -> " + vspId);
+
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(vspId);
+ Id versionId = VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor);
+ ElementContext elementContext = new ElementContext(itemId, versionId,
+ VspZusammenUtil.getVersionTag(version));
+
+ logger.info("Finished getting orchestration template structure for vsp id -> " + vspId);
+ Optional<Element> element = zusammenAdaptor.getElementByName(context, elementContext, null,
+ StructureElement.OrchestrationTemplateCandidate.name());
+ if (element.isPresent()) {
+ return Optional.of(new String(FileUtils.toByteArray(element.get().getData())));
+ } else {
+ return Optional.empty();
+ }
+
+ }
+}
diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/OrchestrationTemplateDaoZusammenImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/OrchestrationTemplateDaoZusammenImpl.java
new file mode 100644
index 0000000000..83a78bc705
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/OrchestrationTemplateDaoZusammenImpl.java
@@ -0,0 +1,111 @@
+package org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen;
+
+import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element;
+import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo;
+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.ElementContext;
+import com.amdocs.zusammen.utils.fileutils.FileUtils;
+import org.openecomp.core.zusammen.api.ZusammenAdaptor;
+import org.openecomp.core.zusammen.api.ZusammenUtil;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.UploadData;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.UploadDataEntity;
+import org.openecomp.sdc.versioning.dao.types.Version;
+import org.openecomp.sdc.versioning.dao.types.VersionStatus;
+
+import java.io.ByteArrayInputStream;
+import java.nio.ByteBuffer;
+import java.util.Optional;
+
+public class OrchestrationTemplateDaoZusammenImpl implements OrchestrationTemplateDao {
+
+ private ZusammenAdaptor zusammenAdaptor;
+
+ public OrchestrationTemplateDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) {
+ this.zusammenAdaptor = zusammenAdaptor;
+ }
+
+ @Override
+ public void registerVersioning(String versionableEntityType) {
+
+ }
+
+ @Override
+ public String getValidationData(String vspId, Version version) {
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(vspId);
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
+ VspZusammenUtil.getVersionTag(version));
+
+ Optional<ElementInfo> elementInfo = zusammenAdaptor
+ .getElementInfoByName(context, elementContext, null,
+ StructureElement.OrchestrationTemplate.name());
+ if (elementInfo.isPresent()) {
+ Optional<Element> element =
+ zusammenAdaptor.getElementByName(context, elementContext, elementInfo.get().getId(),
+ StructureElement.OrchestrationTemplateValidationData.name());
+ if (element.isPresent()) {
+ return new String(FileUtils.toByteArray(element.get().getData()));
+ }
+ }
+
+ return null;
+ }
+
+ @Override
+ public UploadDataEntity getOrchestrationTemplate(String vspId, Version version) {
+
+ UploadDataEntity uploadData = new UploadDataEntity();
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(vspId);
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
+ VspZusammenUtil.getVersionTag(version));
+
+ Optional<ElementInfo> elementInfo = zusammenAdaptor
+ .getElementInfoByName(context, elementContext, null,
+ StructureElement.OrchestrationTemplate.name());
+ if (elementInfo.isPresent()) {
+ Optional<Element> element =
+ zusammenAdaptor.getElementByName(context, elementContext, elementInfo.get().getId(),
+ StructureElement.OrchestrationTemplateValidationData.name());
+ element.ifPresent(element1 -> uploadData
+ .setValidationData(new String(FileUtils.toByteArray(element1.getData()))));
+ element =
+ zusammenAdaptor.getElementByName(context, elementContext, elementInfo.get().getId(),
+ StructureElement.OrchestrationTemplateContent.name());
+ element.ifPresent(element1 -> uploadData
+ .setContentData(ByteBuffer.wrap(FileUtils.toByteArray(element1.getData()))));
+ }
+ return uploadData;
+ }
+
+ @Override
+ public void updateOrchestrationTemplateData(String vspId, UploadData uploadData) {
+ ZusammenElement orchestrationTemplateElement =
+ VspZusammenUtil.buildStructuralElement(StructureElement.OrchestrationTemplate, null);
+ ZusammenElement orchestrationTemplateValidationDataElement =
+ VspZusammenUtil
+ .buildStructuralElement(StructureElement.OrchestrationTemplateValidationData, null);
+ orchestrationTemplateValidationDataElement.setData(new ByteArrayInputStream(uploadData
+ .getValidationData().getBytes()));
+ ZusammenElement orchestrationTemplateContent =
+ VspZusammenUtil.buildStructuralElement(StructureElement.OrchestrationTemplateContent, null);
+ orchestrationTemplateContent
+ .setData(new ByteArrayInputStream(uploadData.getContentData().array()));
+ orchestrationTemplateElement.addSubElement(orchestrationTemplateValidationDataElement);
+ orchestrationTemplateElement.addSubElement(orchestrationTemplateContent);
+
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(vspId);
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
+
+ zusammenAdaptor.saveElement(context, elementContext, orchestrationTemplateElement, "Update " +
+ "Orchestration Template");
+ }
+
+}
diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ProcessDaoZusammenImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ProcessDaoZusammenImpl.java
new file mode 100644
index 0000000000..ffc9cb2901
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ProcessDaoZusammenImpl.java
@@ -0,0 +1,229 @@
+package org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen;
+
+import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element;
+import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo;
+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 org.openecomp.core.utilities.file.FileUtils;
+import org.openecomp.core.zusammen.api.ZusammenAdaptor;
+import org.openecomp.core.zusammen.api.ZusammenUtil;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.ProcessDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ProcessEntity;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ProcessType;
+import org.openecomp.sdc.versioning.dao.types.Version;
+
+import java.io.ByteArrayInputStream;
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+/**
+ * @author Avrahamg.
+ * @since March 23, 2017
+ */
+public class ProcessDaoZusammenImpl implements ProcessDao {
+
+ private static final String NAME = "name";
+ private static final String ELEMENT_TYPE = "type";
+ private static final String ARTIFACT_NAME = "artifactName";
+ private static final String DESCRIPTION = "description";
+ private static final String PROCESS_TYPE = "processType";
+
+ private ZusammenAdaptor zusammenAdaptor;
+
+ public ProcessDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) {
+ this.zusammenAdaptor = zusammenAdaptor;
+ }
+
+ @Override
+ public void registerVersioning(String versionableEntityType) {
+
+ }
+
+ @Override
+ public void create(ProcessEntity processEntity) {
+ ZusammenElement processElement = buildProcessElement(processEntity, Action.CREATE);
+
+ ZusammenElement processesElement =
+ VspZusammenUtil.buildStructuralElement(StructureElement.Processes, null);
+ ZusammenElement aggregatedElement = VspZusammenUtil.aggregateElements(processesElement,
+ processElement);
+ ZusammenElement componentElement;
+ if (processEntity.getComponentId() != null) {
+ componentElement = createParentElement(processEntity);
+ aggregatedElement =
+ VspZusammenUtil.aggregateElements(componentElement, aggregatedElement);
+ }
+
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(processEntity.getVspId());
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
+
+ Optional<Element> savedElement =
+ zusammenAdaptor.saveElement(context, elementContext, aggregatedElement, "Create process");
+ savedElement.ifPresent(element -> {
+ if (processEntity.getComponentId() == null) {
+ processEntity.setId(element.getSubElements().iterator().next()
+ .getElementId().getValue());
+ } else {
+ processEntity.setId(element.getSubElements().iterator().next()
+ .getSubElements().iterator().next().getElementId().getValue());
+ }
+ });
+ }
+
+ @Override
+ public ProcessEntity get(ProcessEntity process) {
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(process.getVspId());
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
+ VspZusammenUtil.getVersionTag(process.getVersion()));
+
+ Optional<Element> elementOptional =
+ zusammenAdaptor.getElement(context, elementContext, process.getId());
+
+ if (elementOptional.isPresent()) {
+ Element element = elementOptional.get();
+ process.setName(element.getInfo().getProperty(NAME));
+ process.setArtifactName(element.getInfo().getProperty(ARTIFACT_NAME));
+ process.setDescription(element.getInfo().getProperty(DESCRIPTION));
+ process.setType(element.getInfo().getProperty
+ (PROCESS_TYPE) != null ? ProcessType.valueOf(element.getInfo().getProperty
+ (PROCESS_TYPE)) : null);
+
+ process.setArtifact(ByteBuffer.wrap(FileUtils.toByteArray(element.getData())));
+ return process;
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ public void update(ProcessEntity processEntity) {
+ ZusammenElement processElement = buildProcessElement(processEntity, Action.UPDATE);
+
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(processEntity.getVspId());
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
+
+ Optional<Element> element =
+ zusammenAdaptor.saveElement(context, elementContext, processElement, "Create process");
+ System.out.println(element.get().getElementId());
+ }
+
+ @Override
+ public void delete(ProcessEntity processEntity) {
+ ZusammenElement processElement = new ZusammenElement();
+ processElement.setElementId(new Id(processEntity.getId()));
+ processElement.setAction(Action.DELETE);
+
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(processEntity.getVspId());
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
+
+ zusammenAdaptor.saveElement(context, elementContext, processElement,
+ String.format("Delete process with id %s", processEntity.getId()));
+ }
+
+ @Override
+ public void deleteAll(ProcessEntity processEntity) {
+ ZusammenElement aggregatedElement =
+ VspZusammenUtil.buildStructuralElement(StructureElement.Processes, Action.DELETE);
+
+ if (processEntity.getComponentId() != null) {
+ ZusammenElement componentElement = createParentElement(processEntity);
+ aggregatedElement = VspZusammenUtil.aggregateElements(componentElement,
+ aggregatedElement);
+ }
+
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(processEntity.getVspId());
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor));
+ zusammenAdaptor.saveElement(context, elementContext, aggregatedElement, "Delete All processes");
+ }
+
+ @Override
+ public void deleteVspAll(String vspId, Version version) {
+ ProcessEntity processEntity = new ProcessEntity();
+ processEntity.setVersion(version);
+ processEntity.setVspId(vspId);
+ deleteAll(processEntity);
+ }
+
+ @Override
+ public Collection<ProcessEntity> list(ProcessEntity process) {
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(process.getVspId());
+ ElementContext elementContext = new ElementContext(itemId,
+ VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor),
+ VspZusammenUtil.getVersionTag(process.getVersion()));
+
+ Optional<ElementInfo> processesOptional =
+ zusammenAdaptor.getElementInfoByName(context, elementContext,
+ extractParentElementId(process), StructureElement.Processes.name());
+ if (!processesOptional.isPresent()) {
+ return new ArrayList<>();
+ }
+ return zusammenAdaptor.listElements(context, elementContext, processesOptional.get().getId())
+ .stream()
+ .map(elementInfo -> mapElementInfoToProcess(
+ process.getVspId(), process.getVersion(), process.getComponentId(),
+ elementInfo))
+ .collect(Collectors.toList());
+ }
+
+ private Id extractParentElementId(ProcessEntity processEntity) {
+ return processEntity.getComponentId() == null ? null : new Id(processEntity.getComponentId());
+ }
+
+ private ProcessEntity mapElementInfoToProcess(String vspId, Version version,
+ String componentId,
+ ElementInfo elementInfo) {
+ ProcessEntity processEntity = new ProcessEntity(vspId, version, componentId, elementInfo
+ .getId().getValue());
+ processEntity.setName((String) elementInfo.getInfo().getProperties().get(NAME));
+ processEntity
+ .setArtifactName((String) elementInfo.getInfo().getProperties().get(ARTIFACT_NAME));
+ processEntity.setDescription((String) elementInfo.getInfo().getProperties().get(DESCRIPTION));
+ return processEntity;
+ }
+
+ private ZusammenElement buildProcessElement(ProcessEntity process, Action action) {
+
+ Info info = new Info();
+ info.setName(process.getName());
+ info.addProperty(NAME, process.getName());
+ info.addProperty(ELEMENT_TYPE, ElementType.Process);
+ info.addProperty(ARTIFACT_NAME, process.getArtifactName());
+ info.addProperty(DESCRIPTION, process.getDescription());
+ info.addProperty(PROCESS_TYPE, process.getType() != null ? process.getType().name() : null);
+
+ ZusammenElement processElement = new ZusammenElement();
+ processElement.setElementId(new Id(process.getId()));
+ processElement.setAction(action);
+ processElement.setInfo(info);
+ if (Objects.nonNull(process.getArtifact())) {
+ processElement.setData(new ByteArrayInputStream(process.getArtifact().array()));
+ }
+ return processElement;
+ }
+
+ private ZusammenElement createParentElement(ProcessEntity entity) {
+ ZusammenElement componentElement = new ZusammenElement();
+ componentElement.setElementId(new Id(entity.getComponentId()));
+ componentElement.setAction(Action.IGNORE);
+ return componentElement;
+ }
+}
diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/StructureElement.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/StructureElement.java
new file mode 100644
index 0000000000..5d53741ebf
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/StructureElement.java
@@ -0,0 +1,20 @@
+package org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen;
+
+public enum StructureElement {
+ General,
+ OrchestrationTemplateCandidate,
+ OrchestrationTemplate,
+ OrchestrationTemplateValidationData,
+ OrchestrationTemplateContent,
+ OrchestrationTemplateCandidateValidationData,
+ OrchestrationTemplateCandidateContent,
+ Networks,
+ Components,
+ Nics,
+ Processes,
+ Mibs,
+ SNMP_TRAP,
+ SNMP_POLL,
+ Questionnaire,
+ ComponentDependencies,
+}
diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/VendorSoftwareProductInfoDaoZusammenImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/VendorSoftwareProductInfoDaoZusammenImpl.java
new file mode 100644
index 0000000000..65a41330a7
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/VendorSoftwareProductInfoDaoZusammenImpl.java
@@ -0,0 +1,228 @@
+package org.openecomp.sdc.vendorsoftwareproduct.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 com.amdocs.zusammen.utils.fileutils.FileUtils;
+import org.openecomp.core.zusammen.api.ZusammenAdaptor;
+import org.openecomp.core.zusammen.api.ZusammenUtil;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspQuestionnaireEntity;
+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.io.ByteArrayInputStream;
+import java.util.Collection;
+import java.util.Date;
+import java.util.stream.Collectors;
+
+public class VendorSoftwareProductInfoDaoZusammenImpl implements VendorSoftwareProductInfoDao {
+ private ZusammenAdaptor zusammenAdaptor;
+
+ public VendorSoftwareProductInfoDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) {
+ this.zusammenAdaptor = zusammenAdaptor;
+ }
+
+ @Override
+ public void registerVersioning(String versionableEntityType) {
+ VersionableEntityMetadata metadata =
+ new VersionableEntityMetadata(VersionableEntityStoreType.Zusammen, "vsp", null, null);
+
+ VersioningManagerFactory.getInstance().createInterface()
+ .register(versionableEntityType, metadata);
+ }
+
+ @Override
+ public Collection<VspDetails> list(VspDetails entity) {
+ return zusammenAdaptor.listItems(ZusammenUtil.createSessionContext()).stream().filter
+ (vspEntity-> "vsp".equals(vspEntity.getInfo().getProperty("type")))
+ .map(item -> mapInfoToVspDetails(
+ item.getId().getValue(), null, item.getInfo(),
+ item.getModificationTime(), item.getCreationTime()))
+ .collect(Collectors.toList());
+ }
+
+ @Override
+ public void create(VspDetails vspDetails) {
+ SessionContext context = ZusammenUtil.createSessionContext();
+
+ Id itemId = zusammenAdaptor.createItem(context, mapVspDetailsToZusammenItemInfo(vspDetails));
+ Id versionId =
+ zusammenAdaptor.createVersion(context, itemId, null, ZusammenUtil.createFirstVersionData());
+
+ ZusammenElement generalElement = mapVspDetailsToZusammenElement(vspDetails, Action.CREATE);
+ zusammenAdaptor.saveElement(context, new ElementContext(itemId, versionId),
+ generalElement, "Create VSP General Info Element");
+
+ vspDetails.setId(itemId.getValue());//set id for caller
+ }
+
+ @Override
+ public void update(VspDetails vspDetails) {
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(vspDetails.getId());
+ Id versionId = VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor);
+
+ zusammenAdaptor.updateItem(context, itemId, mapVspDetailsToZusammenItemInfo(vspDetails));
+
+ ZusammenElement generalElement = mapVspDetailsToZusammenElement(vspDetails, Action.UPDATE);
+ zusammenAdaptor.saveElement(context, new ElementContext(itemId, versionId),
+ generalElement, "Update VSP General Info Element");
+ }
+
+ @Override
+ public VspDetails get(VspDetails vspDetails) {
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(vspDetails.getId());
+ ItemVersion itemVersion = VspZusammenUtil.getFirstVersion(context, itemId, zusammenAdaptor);
+ ElementContext elementContext = new ElementContext(itemId, itemVersion.getId(),
+ VspZusammenUtil.getVersionTag(vspDetails.getVersion()));
+
+ return zusammenAdaptor
+ .getElementInfoByName(context, elementContext, null, StructureElement.General.name())
+ .map(generalElementInfo -> mapInfoToVspDetails(
+ vspDetails.getId(), vspDetails.getVersion(), generalElementInfo.getInfo(),
+ itemVersion.getModificationTime(), itemVersion.getCreationTime()))
+ .orElse(null);
+ }
+
+
+ @Override
+ public void delete(VspDetails entity) {
+
+ }
+
+ @Override
+ public void updateOldVersionIndication(VspDetails vspDetails) {
+ VspDetails retrieved = get(vspDetails);
+ if (retrieved != null) {
+ retrieved.setOldVersion(vspDetails.getOldVersion());
+ update(retrieved);
+ }
+ }
+
+ @Override
+ public void updateQuestionnaireData(String vspId, Version version, String questionnaireData) {
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(vspId);
+ Id versionId = VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor);
+
+ ZusammenElement questionnaireElement = mapQuestionnaireToZusammenElement(questionnaireData);
+ zusammenAdaptor.saveElement(context, new ElementContext(itemId, versionId),
+ questionnaireElement, "Update VSP Questionnaire");
+ }
+
+
+ @Override
+ public String getQuestionnaireData(String vspId, Version version) {
+ SessionContext context = ZusammenUtil.createSessionContext();
+ Id itemId = new Id(vspId);
+ Id versionId = VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor);
+
+ return zusammenAdaptor.getElementByName(context,
+ new ElementContext(itemId, versionId, VspZusammenUtil.getVersionTag(version)), null,
+ StructureElement.Questionnaire.name())
+ .map(questionnaireElement ->
+ new String(FileUtils.toByteArray(questionnaireElement.getData())))
+ .orElse(null);
+ }
+
+ @Override
+ public VspQuestionnaireEntity getQuestionnaire(String vspId, Version version) {
+ VspQuestionnaireEntity entity = new VspQuestionnaireEntity();
+ entity.setId(vspId);
+ entity.setVersion(version);
+ entity.setQuestionnaireData(getQuestionnaireData(vspId, version));
+ return entity;
+ }
+
+ @Override
+ public void deleteAll(String vspId, Version version) {
+
+ }
+
+ private Info mapVspDetailsToZusammenItemInfo(VspDetails vspDetails) {
+ Info info = new Info();
+ info.setName(vspDetails.getName());
+ info.setDescription(vspDetails.getDescription());
+ info.addProperty("type", "vsp");
+ addVspDetailsToInfo(info, vspDetails);
+ return info;
+ }
+
+ private ZusammenElement mapVspDetailsToZusammenElement(VspDetails vspDetails, Action action) {
+ ZusammenElement generalElement =
+ VspZusammenUtil.buildStructuralElement(StructureElement.General, action);
+ addVspDetailsToInfo(generalElement.getInfo(), vspDetails);
+ return generalElement;
+ }
+
+ private ZusammenElement mapQuestionnaireToZusammenElement(String questionnaireData) {
+ ZusammenElement questionnaireElement =
+ VspZusammenUtil.buildStructuralElement(StructureElement.Questionnaire, Action.UPDATE);
+ questionnaireElement.setData(new ByteArrayInputStream(questionnaireData.getBytes()));
+ return questionnaireElement;
+ }
+
+ private void addVspDetailsToInfo(Info info, VspDetails vspDetails) {
+ info.addProperty(InfoPropertyName.name.name(), vspDetails.getName());
+ info.addProperty(InfoPropertyName.description.name(), vspDetails.getDescription());
+ info.addProperty(InfoPropertyName.icon.name(), vspDetails.getIcon());
+ info.addProperty(InfoPropertyName.category.name(), vspDetails.getCategory());
+ info.addProperty(InfoPropertyName.subCategory.name(), vspDetails.getSubCategory());
+ info.addProperty(InfoPropertyName.vendorId.name(), vspDetails.getVendorId());
+ info.addProperty(InfoPropertyName.vendorName.name(), vspDetails.getVendorName());
+ if (vspDetails.getVlmVersion() != null) {
+ info.addProperty(
+ InfoPropertyName.vendorVersion.name(), vspDetails.getVlmVersion().toString());
+ }
+ info.addProperty(InfoPropertyName.licenseAgreement.name(), vspDetails.getLicenseAgreement());
+ info.addProperty(InfoPropertyName.featureGroups.name(), vspDetails.getFeatureGroups());
+ info.addProperty(InfoPropertyName.oldVersion.name(), vspDetails.getOldVersion());
+ }
+
+ private VspDetails mapInfoToVspDetails(String vspId, Version version, Info info,
+ Date modificationTime, Date creationTime) {
+ VspDetails vspDetails = new VspDetails(vspId, version);
+ vspDetails.setName(info.getProperty(InfoPropertyName.name.name()));
+ vspDetails.setDescription(info.getProperty(InfoPropertyName.description.name()));
+ vspDetails.setCategory(info.getProperty(InfoPropertyName.category.name()));
+ vspDetails.setSubCategory(info.getProperty(InfoPropertyName.subCategory.name()));
+ vspDetails.setVendorId(info.getProperty(InfoPropertyName.vendorId.name()));
+ vspDetails.setVendorName(info.getProperty(InfoPropertyName.vendorName.name()));
+ vspDetails.setVlmVersion(
+ Version.valueOf(info.getProperty(InfoPropertyName.vendorVersion.name())));
+ vspDetails.setLicenseAgreement(info.getProperty(InfoPropertyName.licenseAgreement.name()));
+ vspDetails.setFeatureGroups(info.getProperty(InfoPropertyName.featureGroups.name()));
+ vspDetails.setWritetimeMicroSeconds(
+ modificationTime == null ? creationTime.getTime() : modificationTime.getTime());
+ vspDetails.setVersion(version);
+ String oldVersion = info.getProperty(InfoPropertyName.oldVersion.name());
+
+ //Boolean oldVersion = ind == null || "true".equals( ind.toLowerCase());
+ vspDetails.setOldVersion(oldVersion);
+ return vspDetails;
+ }
+
+ private enum InfoPropertyName {
+ name,
+ description,
+ icon,
+ category,
+ subCategory,
+ vendorId,
+ vendorName,
+ vendorVersion,
+ licenseAgreement,
+ featureGroups,
+ oldVersion
+ }
+
+}
diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/VspZusammenUtil.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/VspZusammenUtil.java
new file mode 100644
index 0000000000..dde3603896
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/VspZusammenUtil.java
@@ -0,0 +1,61 @@
+package org.openecomp.sdc.vendorsoftwareproduct.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.ItemVersion;
+import org.openecomp.core.zusammen.api.ZusammenAdaptor;
+import org.openecomp.core.zusammen.api.ZusammenUtil;
+import org.openecomp.sdc.common.errors.CoreException;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.errors.VendorSoftwareProductNotFoundErrorBuilder;
+import org.openecomp.sdc.versioning.dao.types.Version;
+import org.openecomp.sdc.versioning.dao.types.VersionStatus;
+
+import java.util.Objects;
+import java.util.Optional;
+
+class VspZusammenUtil {
+
+ static ItemVersion getFirstVersion(SessionContext context, Id itemId, ZusammenAdaptor
+ zusammenAdaptor) {
+
+ Optional<ItemVersion> itemVersion = zusammenAdaptor.getFirstVersion(context, itemId);
+
+ if (!itemVersion.isPresent()) {
+ throw new CoreException(
+ new VendorSoftwareProductNotFoundErrorBuilder(itemId.getValue()).build());
+ }
+ return itemVersion.get();
+ }
+
+ static Id getFirstVersionId(SessionContext context, Id itemId, ZusammenAdaptor zusammenAdaptor) {
+ return getFirstVersion(context, itemId, zusammenAdaptor).getId();
+ }
+
+ // TODO: 4/25/2017 remove upon working with more than one single version
+ static String getVersionTag(Version version) {
+ return version.getStatus() == VersionStatus.Locked
+ ? null
+ : version.toString();
+ }
+
+ static ZusammenElement buildStructuralElement(StructureElement structureElement, Action action) {
+ return ZusammenUtil.buildStructuralElement(structureElement.name(), action);
+ }
+
+ static ZusammenElement aggregateElements(ZusammenElement... elements) {
+ ZusammenElement head = null;
+ ZusammenElement father = null;
+ for (ZusammenElement element : elements) {
+ if (Objects.isNull(head)) {
+ head = father = element;
+ } else {
+ father.getSubElements().add(element);
+ father = element;
+ }
+ }
+
+ return head;
+ }
+}