1 package org.openecomp.core.migration.store;
3 import com.amdocs.zusammen.datatypes.Id;
4 import com.amdocs.zusammen.datatypes.Namespace;
5 import com.amdocs.zusammen.datatypes.SessionContext;
6 import com.amdocs.zusammen.datatypes.item.Info;
7 import com.amdocs.zusammen.datatypes.item.Relation;
8 import com.amdocs.zusammen.plugin.statestore.cassandra.dao.types.ElementEntityContext;
9 import com.amdocs.zusammen.sdk.collaboration.types.CollaborationElement;
10 import org.openecomp.core.migration.MigrationMain;
11 import org.openecomp.core.model.types.ServiceTemplate;
12 import org.openecomp.core.zusammen.plugin.ZusammenPluginUtil;
13 import org.openecomp.core.zusammen.plugin.dao.impl.CassandraElementRepository;
14 import org.openecomp.core.zusammen.plugin.dao.types.ElementEntity;
15 import org.openecomp.sdc.versioning.dao.types.Version;
16 import org.openecomp.sdc.versioning.dao.types.VersionInfoEntity;
18 import java.io.ByteArrayInputStream;
19 import java.util.ArrayList;
20 import java.util.Collection;
21 import java.util.Collections;
22 import java.util.HashSet;
23 import java.util.List;
26 public class ElementHandler {
28 private static final String GLOBAL_USER = "GLOBAL_USER";
30 public static void save(SessionContext context,
31 CassandraElementRepository cassandraElementRepository,
32 String itemId, Version versionId,
33 CollaborationElement[] elements) {
35 ElementEntityContext elementContext;
36 for (CollaborationElement element : elements) {
38 elementContext = new ElementEntityContext(GLOBAL_USER, new Id(itemId), getVersionId(itemId,
40 ElementEntity elementEntity = ZusammenPluginUtil.getElementEntity(element);
42 cassandraElementRepository.createNamespace(context, elementContext, elementEntity);
44 cassandraElementRepository.create(context, elementContext, elementEntity);
46 if (isActiveVersion(itemId, versionId)) {
48 new ElementEntityContext(GLOBAL_USER, new Id(itemId), new Id(versionId.toString()));
49 cassandraElementRepository.create(context, elementContext, elementEntity);
55 public static CollaborationElement getElementEntity(String itemId,
58 List<String> elementPath,
60 Collection<Relation> relations,
61 List<String> subElements,
63 Namespace namespace = new Namespace();
64 for (String pathElementId : elementPath) {
65 namespace = new Namespace(namespace, new Id(pathElementId));
67 if (namespace.getValue() == null || namespace.getValue().equals("")) {
68 namespace = Namespace.ROOT_NAMESPACE;
70 CollaborationElement elementEntity = new CollaborationElement(new Id(itemId), new Id(versionId),
71 namespace, new Id(elementId));
73 Id parentId = namespace.getParentElementId() != null ? namespace.getParentElementId() : Id.ZERO;
74 elementEntity.setParentId(parentId);
75 elementEntity.setInfo(info);
76 elementEntity.setRelations(relations);
77 if (subElements != null) {
78 Set<Id> subElementSet = new HashSet<>();
80 subElements.forEach(subElement -> subElementSet.add(new Id(subElement)));
84 elementEntity.setData(new ByteArrayInputStream(data));
90 public static List<String> getElementPath(String... paths) {
91 List<String> pathList = new ArrayList<>();
93 Collections.addAll(pathList, paths);
98 public static Info getStructuralElementInfo(String elementName) {
99 Info info = new Info();
100 info.setName(elementName);
105 private static Id getVersionId(String itemId, Version versionId) {
106 VersionInfoEntity versionInfo =
107 MigrationMain.getVersionInfoMap().get(itemId);
108 if (versionInfo == null) {
109 return new Id(versionId.toString());
111 Version lastVersion = versionInfo.getCandidate() != null ? versionInfo.getCandidate()
113 : versionInfo.getActiveVersion();
115 if (lastVersion.equals(versionId)) {
116 return new Id(itemId);
118 return new Id(versionId.toString());
122 private static boolean isActiveVersion(String itemId, Version versionId) {
123 VersionInfoEntity versionInfo =
124 MigrationMain.getVersionInfoMap().get(itemId);
125 return versionInfo != null && versionInfo.getActiveVersion().equals(versionId);
129 public static Info getServiceModelElementInfo(String vspServiceModelEntityId,
130 ServiceTemplate serviceTemplate) {
131 Info info = ElementHandler.getStructuralElementInfo(vspServiceModelEntityId);
132 info.addProperty("base", serviceTemplate.getBaseName());