summaryrefslogtreecommitdiffstats
path: root/openecomp-be/tools
diff options
context:
space:
mode:
authorvempo <vitaliy.emporopulo@amdocs.com>2017-10-17 13:27:03 +0300
committervempo <vitaliy.emporopulo@amdocs.com>2017-10-17 13:42:19 +0300
commit8fbf1ec6ecefd00106c1ba503712a86ea5b118ee (patch)
treeb4a9950dc0c019319d2eb29399a233a3fa1bead8 /openecomp-be/tools
parent82064f9882acaf955fcd4f32d5fee12e89a4bac4 (diff)
Reset all version failure
Change-Id: Iafa72f0101e53ef60cd57ffd71be46db6d5a3c62 Issue-ID: SDC-469 Signed-off-by: vempo <vitaliy.emporopulo@amdocs.com>
Diffstat (limited to 'openecomp-be/tools')
-rw-r--r--openecomp-be/tools/zusammen-tools/pom.xml4
-rw-r--r--openecomp-be/tools/zusammen-tools/src/main/java/org/openecomp/core/tools/Commands/ResetOldVersion.java116
-rw-r--r--openecomp-be/tools/zusammen-tools/src/main/java/org/openecomp/core/tools/store/CassandraElementRepository.java267
-rw-r--r--openecomp-be/tools/zusammen-tools/src/main/java/org/openecomp/core/tools/store/ElementHandler.java29
-rw-r--r--openecomp-be/tools/zusammen-tools/src/main/java/org/openecomp/core/tools/store/VspGeneralLoader.java109
5 files changed, 449 insertions, 76 deletions
diff --git a/openecomp-be/tools/zusammen-tools/pom.xml b/openecomp-be/tools/zusammen-tools/pom.xml
index 0c84fbf9ba..ecb185e15e 100644
--- a/openecomp-be/tools/zusammen-tools/pom.xml
+++ b/openecomp-be/tools/zusammen-tools/pom.xml
@@ -212,6 +212,10 @@
<fixcrlf srcdir="./" eol="unix"
includes="zusammenMainTool.sh"/>
</tasks>
+ <tasks>
+ <replace file="src/main/resources/zusammenMainTool.sh" token="1.0-SNAPSHOT" value="${project.version}"/>
+ </tasks>
+
</configuration>
<goals>
<goal>run</goal>
diff --git a/openecomp-be/tools/zusammen-tools/src/main/java/org/openecomp/core/tools/Commands/ResetOldVersion.java b/openecomp-be/tools/zusammen-tools/src/main/java/org/openecomp/core/tools/Commands/ResetOldVersion.java
index 031d1328b5..1725df7e93 100644
--- a/openecomp-be/tools/zusammen-tools/src/main/java/org/openecomp/core/tools/Commands/ResetOldVersion.java
+++ b/openecomp-be/tools/zusammen-tools/src/main/java/org/openecomp/core/tools/Commands/ResetOldVersion.java
@@ -3,24 +3,36 @@ package org.openecomp.core.tools.Commands;
import com.amdocs.zusammen.datatypes.Id;
import com.amdocs.zusammen.datatypes.SessionContext;
import com.amdocs.zusammen.plugin.statestore.cassandra.dao.impl.VersionCassandraDao;
+import com.google.common.collect.Sets;
+import org.openecomp.core.tools.store.ElementHandler;
import org.openecomp.core.tools.store.VersionInfoCassandraLoader;
import org.openecomp.core.tools.store.VspGeneralLoader;
-import org.openecomp.core.tools.store.ElementHandler;
import org.openecomp.core.zusammen.impl.CassandraConnectionInitializer;
import org.openecomp.core.zusammen.plugin.dao.types.ElementEntity;
import org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants;
+import org.openecomp.sdc.versioning.dao.types.Version;
import org.openecomp.sdc.versioning.dao.types.VersionInfoEntity;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import static org.openecomp.core.tools.store.VspGeneralLoader.buildKey;
public class ResetOldVersion {
+ public static final String OLD_VERSION = "oldVersion";
+
private static Map<String, List<String>> itemVersionMap = new HashMap<>();
+ private static Map<String, List<String>> itemChangeRefMap = new HashMap<>();
- private static int count =0;
- public static void reset(SessionContext context, String oldVersion,String emptyOldVersion) {
+ private static int count = 0;
+ public static void reset(SessionContext context, String oldVersion, String emptyOldVersion) {
CassandraConnectionInitializer.setCassandraConnectionPropertiesToSystem();
@@ -28,64 +40,102 @@ public class ResetOldVersion {
loadItemVersionInfo(context);
Map<String, ElementEntity> generalElementMap =
- VspGeneralLoader.load(context,
- itemVersionMap);
+ VspGeneralLoader.load(context,
+ itemVersionMap, itemChangeRefMap);
generalElementMap.values().forEach(elementEntity -> updateOldVersionFlag(elementEntity,
- oldVersion,"true".equals(emptyOldVersion)));
+ oldVersion, Boolean.TRUE.toString().equals(emptyOldVersion)));
+
+
+ itemVersionMap.entrySet().forEach(entry -> updateElements(context, generalElementMap, entry));
+
+ itemChangeRefMap.entrySet().forEach(entry -> updateElements(context, generalElementMap, entry));
+ System.out.println("number of element updated:" + count);
- itemVersionMap.entrySet().forEach(entry->entry.getValue().stream().filter
- (version->generalElementMap.containsKey(context.getUser().getUserName()+"_"+entry.getKey()
- +"_"+version)).forEach(version->ElementHandler.update(context,
- entry.getKey(),version,generalElementMap.get(context.getUser().getUserName()+"_"+entry.getKey()
- +"_"+version))));
+ }
+
+ private static void updateElements(SessionContext context, Map<String,
+ ElementEntity> generalElementMap, Map.Entry<String, List<String>> entry) {
- System.out.println("nymber of element updated:"+count);
+ entry.getValue().stream().filter
+ (changeRef -> generalElementMap
+ .containsKey(buildKey(context, entry, changeRef))).
+ forEach(changeref -> ElementHandler.update(context, entry.getKey(), changeref, changeref,
+ generalElementMap.get(buildKey(context, entry, changeref))));
}
private static void updateOldVersionFlag(ElementEntity elementEntity, String oldVersion,
boolean emptyOldVersion) {
- if(!emptyOldVersion){
- elementEntity.getInfo().addProperty("oldVersion",oldVersion);
+ if (!emptyOldVersion) {
+ elementEntity.getInfo().addProperty(OLD_VERSION, oldVersion);
count++;
- }else if(elementEntity.getInfo().getProperty("oldVersion")== null || ""
- .equals(elementEntity.getInfo().getProperty("oldVersion"))){
- elementEntity.getInfo().addProperty("oldVersion",oldVersion);
+ } else if (elementEntity.getInfo().getProperty(OLD_VERSION) == null
+ || "".equals(elementEntity.getInfo().getProperty(OLD_VERSION))) {
+ elementEntity.getInfo().addProperty(OLD_VERSION, oldVersion);
count++;
}
-
-
}
-
private static void loadItemVersionInfo(SessionContext context) {
List<String> items = new ArrayList<>();
System.setProperty("cassandra.dox.keystore", "dox");
VersionInfoCassandraLoader versionInfoCassandraLoader = new VersionInfoCassandraLoader();
- Collection<VersionInfoEntity> versions =
- versionInfoCassandraLoader.list();
+ Collection<VersionInfoEntity> versions = versionInfoCassandraLoader.list();
+
+ versions.stream().filter(versionInfoEntity -> versionInfoEntity.getEntityType()
+ .equals(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE)).forEach
+ (versionInfoEntity -> {
+ handleVersionInfoEntity(items, versionInfoEntity);
+ });
- versions.stream().filter(versionInfoEntity -> versionInfoEntity.getEntityType().equals
- (VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE)).forEach
- (versionInfoEntity
- -> items.add(versionInfoEntity.getEntityId()));
System.setProperty("cassandra.dox.keystore", "zusammen_dox");
VersionCassandraDao versionCassandraDao = new VersionCassandraDao();
- items
- .forEach(itemId -> versionCassandraDao.list(context, context.getUser().getUserName(), new Id
- (itemId)).forEach(itemVersion -> addItemVersion(itemId, itemVersion.getId())));
+ items.forEach(itemId -> versionCassandraDao.list(context, context.getUser().getUserName(),
+ new Id(itemId)).forEach(itemVersion -> addItemVersion(itemId, itemVersion.getId())));
}
+ private static void handleVersionInfoEntity(List<String> items, VersionInfoEntity versionInfoEntity) {
+ items.add(versionInfoEntity.getEntityId());
+ Set<Version> viewableVersions;
+ if (versionInfoEntity.getViewableVersions() != null
+ && !versionInfoEntity.getViewableVersions().isEmpty()) {
+ viewableVersions = versionInfoEntity.getViewableVersions();
+ } else {
+ viewableVersions = Sets.newHashSet(versionInfoEntity.getActiveVersion());
+ }
+ addItemChangeRef(versionInfoEntity.getEntityId(), maxChangeRef(viewableVersions));
+ }
+
+ private static Id maxChangeRef(Set<Version> viewableVersions) {
+
+ return new Id(viewableVersions.stream().max((o1, o2) -> o1.getMajor() > o2.getMajor()
+ ?1:o1.getMajor
+ () == o2.getMajor() ? (o1.getMinor() > o2.getMinor() ? 1: o1.getMinor() == o2.getMinor()
+ ? 0 : -1) : -1).get().toString());
+
+ }
+
+ private static void addItemChangeRef(String itemId, Id changeRef) {
+ addItemVersion(itemChangeRefMap, itemId, changeRef);
+ }
+
private static void addItemVersion(String itemId, Id versionId) {
- if (!itemVersionMap.containsKey(itemId)) {
- itemVersionMap.put(itemId, new ArrayList<>());
+ addItemVersion(itemVersionMap, itemId, versionId);
+ }
+
+ private static void addItemVersion(Map<String, List<String>> itemVersions, String itemId, Id id) {
+
+ if (!itemVersions.containsKey(itemId)) {
+ itemVersions.put(itemId, new ArrayList<>());
}
- itemVersionMap.get(itemId).add(versionId.getValue());
+
+ itemVersions.get(itemId).add(id.getValue());
}
}
+
diff --git a/openecomp-be/tools/zusammen-tools/src/main/java/org/openecomp/core/tools/store/CassandraElementRepository.java b/openecomp-be/tools/zusammen-tools/src/main/java/org/openecomp/core/tools/store/CassandraElementRepository.java
new file mode 100644
index 0000000000..c41b46ea14
--- /dev/null
+++ b/openecomp-be/tools/zusammen-tools/src/main/java/org/openecomp/core/tools/store/CassandraElementRepository.java
@@ -0,0 +1,267 @@
+/*
+ * Copyright © 2016-2017 European Support Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.openecomp.core.tools.store;
+
+import com.amdocs.zusammen.datatypes.Id;
+import com.amdocs.zusammen.datatypes.Namespace;
+import com.amdocs.zusammen.datatypes.SessionContext;
+import com.amdocs.zusammen.datatypes.item.Info;
+import com.amdocs.zusammen.datatypes.item.Relation;
+import com.amdocs.zusammen.plugin.statestore.cassandra.dao.types.ElementEntityContext;
+import com.amdocs.zusammen.utils.fileutils.json.JsonUtil;
+import com.datastax.driver.core.ResultSet;
+import com.datastax.driver.core.Row;
+import com.datastax.driver.mapping.annotations.Accessor;
+import com.datastax.driver.mapping.annotations.Param;
+import com.datastax.driver.mapping.annotations.Query;
+import com.google.gson.reflect.TypeToken;
+import org.openecomp.core.nosqldb.factory.NoSqlDbFactory;
+import org.openecomp.core.zusammen.plugin.dao.types.ElementEntity;
+
+import java.lang.reflect.Type;
+import java.nio.ByteBuffer;
+import java.util.*;
+import java.util.stream.Collectors;
+
+public class CassandraElementRepository {
+
+
+ public Collection<ElementEntity> list(SessionContext context,
+ ElementEntityContext elementContext) {
+ Set<String> elementIds = getVersionElementIds(context, elementContext);
+
+ return elementIds.stream()
+ .map(elementId -> get(context, elementContext, new ElementEntity(new Id(elementId))).get())
+ .filter(Objects::nonNull)
+ .collect(Collectors.toList());
+ }
+
+
+ public void update(SessionContext context, ElementEntityContext elementContext,
+ ElementEntity element) {
+ updateElement(context, elementContext, element);
+ }
+
+
+ public Optional<ElementEntity> get(SessionContext context, ElementEntityContext elementContext,
+ ElementEntity element) {
+ Row row = getElementAccessor(context).get(
+ elementContext.getSpace(),
+ elementContext.getItemId().toString(),
+ getVersionId(elementContext),
+ element.getId().toString()).one();
+
+ return row == null ? Optional.empty() : Optional.of(getElementEntity(element, row));
+ }
+
+
+ private String getVersionId(ElementEntityContext elementContext) {
+ return elementContext.getChangeRef() == null
+ ? elementContext.getVersionId().toString()
+ : elementContext.getChangeRef();
+ }
+
+
+ private ElementAccessor getElementAccessor(SessionContext context) {
+ return NoSqlDbFactory.getInstance().createInterface().getMappingManager().createAccessor
+ (ElementAccessor.class);
+
+ }
+
+ private VersionElementsAccessor getVersionElementsAccessor() {
+ return NoSqlDbFactory.getInstance().createInterface().getMappingManager().createAccessor
+ (VersionElementsAccessor.class);
+
+ }
+
+
+ private void updateElement(SessionContext context, ElementEntityContext elementContext,
+ ElementEntity element) {
+
+ if (elementContext.getChangeRef() == null) {
+
+ getElementAccessor(context).update(
+ JsonUtil.object2Json(element.getInfo()),
+ JsonUtil.object2Json(element.getRelations()),
+ element.getData(),
+ element.getSearchableData(),
+ element.getVisualization(),
+ elementContext.getSpace(),
+ elementContext.getItemId().toString(),
+ elementContext.getVersionId().toString(),
+ element.getId().toString());
+ } else {
+ getElementAccessor(context).update(
+ JsonUtil.object2Json(element.getInfo()),
+ JsonUtil.object2Json(element.getRelations()),
+ element.getData(),
+ element.getSearchableData(),
+ element.getVisualization(),
+ elementContext.getSpace(),
+ elementContext.getItemId().toString(),
+ elementContext.getChangeRef(),
+ element.getId().toString());
+ }
+ }
+
+
+ private ElementEntity getElementEntity(ElementEntity element, Row row) {
+ element.setNamespace(getNamespace(row.getString(ElementField.NAMESPACE)));
+ element.setParentId(new Id(row.getString(ElementField.PARENT_ID)));
+ element.setInfo(json2Object(row.getString(ElementField.INFO), Info.class));
+ element.setRelations(
+ json2Object(row.getString(ElementField.RELATIONS), new TypeToken<ArrayList<Relation>>() {
+ }.getType()));
+ element.setData(row.getBytes(ElementField.DATA));
+ element.setSearchableData(row.getBytes(ElementField.SEARCHABLE_DATA));
+ element.setVisualization(row.getBytes(ElementField.VISUALIZATION));
+ element.setSubElementIds(row.getSet(ElementField.SUB_ELEMENT_IDS, String.class)
+ .stream().map(Id::new).collect(Collectors.toSet()));
+ return element;
+ }
+
+ private Namespace getNamespace(String namespaceStr) {
+ Namespace namespace = new Namespace();
+ if (namespaceStr != null) {
+ namespace.setValue(namespaceStr);
+ }
+ return namespace;
+ }
+
+ private static <T> T json2Object(String json, Type typeOfT) {
+ return json == null ? null : JsonUtil.json2Object(json, typeOfT);
+ }
+
+ private Set<String> getVersionElementIds(SessionContext context,
+ ElementEntityContext elementContext) {
+ Row row = getVersionElementsAccessor().get(
+ elementContext.getSpace(),
+ elementContext.getItemId().toString(),
+ getVersionId(elementContext)).one();
+ return row == null
+ ? new HashSet<>()
+ : row.getSet(CassandraElementRepository.VersionElementsField.ELEMENT_IDS, String.class);
+ }
+
+ /*
+CREATE TABLE IF NOT EXISTS element_namespace (
+ space text,
+ item_id text,
+ element_id text,
+ namespace text,
+ PRIMARY KEY (( space, item_id, element_id ))
+);
+ */
+ @Accessor
+ interface ElementNamespaceAccessor {
+ @Query(
+ "UPDATE element_namespace SET namespace=:ns " +
+ "WHERE space=:space AND item_id=:item AND element_id=:id ")
+ void create(@Param("space") String space,
+ @Param("item") String itemId,
+ @Param("id") String elementId,
+ @Param("ns") String namespace);
+ }
+
+ /*
+CREATE TABLE IF NOT EXISTS element (
+ space text,
+ item_id text,
+ version_id text,
+ element_id text,
+ parent_id text,
+ namespace text,
+ info text,
+ relations text,
+ data blob,
+ searchable_data blob,
+ visualization blob,
+ sub_element_ids set<text>,
+ PRIMARY KEY (( space, item_id, version_id, element_id ))
+);
+ */
+ @Accessor
+ interface ElementAccessor {
+ @Query(
+ "UPDATE zusammen_dox.element SET parent_id=:parentId, namespace=:ns, info=:info, " +
+ "relations=:rels, " +
+ "data=:data, searchable_data=:searchableData, visualization=:visualization, " +
+ "sub_element_ids=sub_element_ids+:subs " +
+ "WHERE space=:space AND item_id=:item AND version_id=:ver AND element_id=:id ")
+ void create(@Param("space") String space,
+ @Param("item") String itemId,
+ @Param("ver") String versionId,
+ @Param("id") String elementId,
+ @Param("parentId") String parentElementId,
+ @Param("ns") String namespace,
+ @Param("info") String info,
+ @Param("rels") String relations,
+ @Param("data") ByteBuffer data,
+ @Param("searchableData") ByteBuffer searchableData,
+ @Param("visualization") ByteBuffer visualization,
+ @Param("subs") Set<String> subElementIds);
+
+ @Query("UPDATE zusammen_dox.element SET info=?, relations=?, data=?, searchable_data=?, " +
+ "visualization=?" +
+ " WHERE space=? AND item_id=? AND version_id=? AND element_id=? ")
+ void update(String info, String relations, ByteBuffer data, ByteBuffer searchableData,
+ ByteBuffer visualization, String space, String itemId, String versionId,
+ String elementId);
+
+
+ @Query("SELECT parent_id, namespace, info, relations, data, searchable_data, visualization, " +
+ "sub_element_ids FROM zusammen_dox.element " +
+ "WHERE space=? AND item_id=? AND version_id=? AND element_id=? ")
+ ResultSet get(String space, String itemId, String versionId, String elementId);
+
+
+ }
+
+ private static final class ElementField {
+ private static final String NAMESPACE = "namespace";
+ private static final String PARENT_ID = "parent_id";
+ private static final String INFO = "info";
+ private static final String RELATIONS = "relations";
+ private static final String DATA = "data";
+ private static final String SEARCHABLE_DATA = "searchable_data";
+ private static final String VISUALIZATION = "visualization";
+ private static final String SUB_ELEMENT_IDS = "sub_element_ids";
+ }
+
+ /*
+ CREATE TABLE IF NOT EXISTS version_elements (
+ space text,
+ item_id text,
+ version_id text,
+ element_ids set<text>,
+ PRIMARY KEY (( space, item_id, version_id ))
+ );
+ */
+ @Accessor
+ interface VersionElementsAccessor {
+
+
+ @Query("SELECT element_ids FROM zusammen_dox.version_elements WHERE space=? AND item_id=? AND version_id=?")
+ ResultSet get(String space, String itemId, String versionId);
+
+
+ }
+
+ private static final class VersionElementsField {
+ private static final String ELEMENT_IDS = "element_ids";
+ }
+}
diff --git a/openecomp-be/tools/zusammen-tools/src/main/java/org/openecomp/core/tools/store/ElementHandler.java b/openecomp-be/tools/zusammen-tools/src/main/java/org/openecomp/core/tools/store/ElementHandler.java
index 2690130974..5c72c95f49 100644
--- a/openecomp-be/tools/zusammen-tools/src/main/java/org/openecomp/core/tools/store/ElementHandler.java
+++ b/openecomp-be/tools/zusammen-tools/src/main/java/org/openecomp/core/tools/store/ElementHandler.java
@@ -2,25 +2,32 @@ package org.openecomp.core.tools.store;
import com.amdocs.zusammen.datatypes.Id;
import com.amdocs.zusammen.datatypes.SessionContext;
+import com.amdocs.zusammen.datatypes.item.ElementContext;
import com.amdocs.zusammen.plugin.statestore.cassandra.dao.types.ElementEntityContext;
-import org.openecomp.core.zusammen.plugin.dao.impl.CassandraElementRepository;
import org.openecomp.core.zusammen.plugin.dao.types.ElementEntity;
public class ElementHandler {
- private static final String GLOBAL_USER = "GLOBAL_USER";
+ private static final String GLOBAL_USER = "GLOBAL_USER";
- public static void update(SessionContext context,
+ public static void update(SessionContext context,
+ String itemId, String versionId, String changeRef,
+ ElementEntity elementEntity) {
- String itemId, String versionId,
- ElementEntity elementEntity) {
+ ElementEntityContext elementContext;
+ CassandraElementRepository cassandraElementRepository = new CassandraElementRepository();
+ if (changeRef == null) {
- ElementEntityContext elementContext;
- elementContext = new ElementEntityContext(GLOBAL_USER, new Id(itemId),
- new Id(versionId));
- CassandraElementRepository cassandraElementRepository = new CassandraElementRepository();
- cassandraElementRepository.update(context, elementContext, elementEntity);
+ elementContext = new ElementEntityContext(GLOBAL_USER, new Id(itemId),
+ new Id(versionId));
- }
+ } else {
+ elementContext = new ElementEntityContext(GLOBAL_USER, new ElementContext(new Id(itemId),
+ new Id(versionId),
+ changeRef));
+ }
+ cassandraElementRepository.update(context, elementContext, elementEntity);
+
+ }
}
diff --git a/openecomp-be/tools/zusammen-tools/src/main/java/org/openecomp/core/tools/store/VspGeneralLoader.java b/openecomp-be/tools/zusammen-tools/src/main/java/org/openecomp/core/tools/store/VspGeneralLoader.java
index b5d09daf3f..fbfde7431e 100644
--- a/openecomp-be/tools/zusammen-tools/src/main/java/org/openecomp/core/tools/store/VspGeneralLoader.java
+++ b/openecomp-be/tools/zusammen-tools/src/main/java/org/openecomp/core/tools/store/VspGeneralLoader.java
@@ -12,67 +12,114 @@ import java.util.Map;
import java.util.Optional;
public class VspGeneralLoader {
+
+ public static final String NAME = "name";
+ public static final String GENERAL = "General";
+
private static CassandraElementRepository cassandraElementRepository =
- new CassandraElementRepository();
+ new CassandraElementRepository();
public static Map<String, ElementEntity> load(SessionContext context,
- Map<String, List<String>> vspItemVersionsMap) {
+ Map<String, List<String>> vspItemVersionsMap,
+ Map<String, List<String>> vspItemChangeRefssMap) {
Map<String, ElementEntity> elementEntityMap = new HashMap<>();
System.setProperty("cassandra.dox.keystore", "zusammen_dox");
Id entityId;
Id itemId;
- Id versionId;
+ Id changeRefId;
for (Map.Entry<String, List<String>> entry : vspItemVersionsMap.entrySet()) {
for (String version : entry.getValue()) {
itemId = new Id(entry.getKey());
- versionId = new Id(version);
- entityId = getEntityIdByInfoNameValue(context, itemId, versionId, null, "name",
- "General");
+ changeRefId = new Id(version);
+ entityId = getEntityIdByInfoNameValue(context, itemId, changeRefId, null, null, NAME,
+ GENERAL);
+ if (entityId != null) {
+ Optional<ElementEntity> result =
+ cassandraElementRepository.get(context, new ElementEntityContext(
+ context.getUser().getUserName(),
+ itemId,
+ changeRefId),
+ new ElementEntity(entityId));
+ if (result.isPresent()) {
+ elementEntityMap.put(buildKey(context, entry, version), result.get());
+ }
+ }
+ }
+ }
+
+
+ for (Map.Entry<String, List<String>> entry : vspItemChangeRefssMap.entrySet()) {
+
+ for (String changeRef : entry.getValue()) {
+
+
+ itemId = new Id(entry.getKey());
+
+ entityId = getEntityIdByInfoNameValue(context, itemId, null, changeRef,null, NAME,
+ GENERAL);
if (entityId != null) {
+ ElementEntityContext elementContext = new ElementEntityContext(
+ context.getUser().getUserName(),
+ itemId,
+ null);
+ elementContext.setChangeRef(changeRef);
Optional<ElementEntity> result =
- cassandraElementRepository.get(context, new ElementEntityContext(
- context.getUser().getUserName(),
- itemId,
- versionId),
- new ElementEntity(entityId));
+ cassandraElementRepository.get(context, elementContext,
+ new ElementEntity(entityId));
if (result.isPresent()) {
- elementEntityMap.put(context.getUser().getUserName() + "_" + entry.getKey()
- + "_" + version, result.get());
+ elementEntityMap.put(buildKey(context, entry, changeRef), result.get());
}
}
}
}
+
return elementEntityMap;
}
- private static Id getEntityIdByInfoNameValue(SessionContext context, Id itemId, Id versionId,
- Id elementId, String
- name, String value) {
+ public static String buildKey(SessionContext context, Map.Entry<String, List<String>> entry, String version) {
+ return String.format("%s_%s_%s", context.getUser().getUserName(), entry.getKey(), version);
+ }
- Id id;
+ private static Id getEntityIdByInfoNameValue(SessionContext context,
+ Id itemId,
+ Id versionId,
+ String changeRef,
+ Id elementId,
+ String name,
+ String value) {
+
+
+ ElementEntityContext elementContext = new ElementEntityContext(
+ context.getUser().getUserName(),
+ itemId,
+ versionId);
+ if (changeRef != null) {
+ elementContext.setChangeRef(changeRef);
+ }
Optional<ElementEntity> result =
- cassandraElementRepository.get(context, new ElementEntityContext(
- context.getUser().getUserName(),
- itemId,
- versionId),
- new ElementEntity(Id.ZERO));
+ cassandraElementRepository.get(context, elementContext,
+ new ElementEntity(Id.ZERO));
if (result.isPresent()) {
ElementEntity elementEntity = result.get();
return elementEntity.getSubElementIds().stream().filter(subelementId -> {
+ ElementEntityContext subElementContext = new ElementEntityContext(
+ context.getUser().getUserName(),
+ itemId,
+ versionId);
+ if(changeRef!= null){
+ subElementContext.setChangeRef(changeRef);
+ }
Optional<ElementEntity> subElementEntity =
- cassandraElementRepository.get(context, new ElementEntityContext(
- context.getUser().getUserName(),
- itemId,
- versionId),
- new ElementEntity(subelementId));
+ cassandraElementRepository.get(context, subElementContext,
+ new ElementEntity(subelementId));
if (subElementEntity.isPresent()) {
- if("name".equals(name)){
- if(value.equals(subElementEntity.get().getInfo().getName())){
+ if (NAME.equals(name)) {
+ if (value.equals(subElementEntity.get().getInfo().getName())) {
return true;
}
}
@@ -87,9 +134,7 @@ public class VspGeneralLoader {
return null;
+ }
-
-
- }
}