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;
}
}
return null;
+ }
-
-
- }
}