1 package org.openecomp.sdc.asdctool.impl.migration.v1707.jsonmodel;
3 import org.openecomp.sdc.be.model.Component;
4 import org.openecomp.sdc.be.model.operations.migration.MigrationMalformedDataLogger;
6 import java.util.Collection;
8 import java.util.Optional;
10 public class InvariantUUIDResolver <T extends Component> {
12 public String resolveInvariantUUID(List<T> components, T missingInvariantCmpt) {
13 String uuid = missingInvariantCmpt.getUUID();
14 String systemName = missingInvariantCmpt.getSystemName();
15 String invariantUid = findInvariantUUidByAllVersionsMap(missingInvariantCmpt, components).orElseGet(() -> findInvariantUUidByUUIDOrSystemName(components, uuid, systemName));
16 if (invariantUid == null) {
17 MigrationMalformedDataLogger.logMalformedDataMsg(String.format("could not find invariant uuid for component %s with id %s", missingInvariantCmpt.getName(), missingInvariantCmpt.getUniqueId()));
22 private String findInvariantUUidByUUIDOrSystemName(List<T> components, String uuid, String systemName) {
23 return components.stream()
24 .filter(c -> c.getUUID().equals(uuid) || c.getSystemName().equals(systemName))
25 .map(Component::getInvariantUUID)
26 .filter(c -> c != null)
27 .findAny().orElse(null);
30 private Optional<String> findInvariantUUidByAllVersionsMap(T component, List<T> allComponents) {
31 if (component.getAllVersions() == null) return Optional.empty();
32 Collection<String> allVersionsComponentIds = component.getAllVersions().values();
33 return allComponents.stream().filter(c -> allVersionsComponentIds.contains(c.getUniqueId()))
34 .map(Component::getInvariantUUID)
35 .filter(c -> c != null)