in persistence-commons/persistence-commons-reporting-parent/persistence-commons-reporting-api/src/main/java/org/kie/kogito/persistence/reporting/database/BaseDatabaseManagerImpl.java [172:202]
protected List<PathSegment> parsePathSegments(final List<M> mappings) {
final int[] groupCount = { 0 };
final List<PathSegment> mappingPaths = new ArrayList<>();
mappings.forEach(mapping -> {
final String srcPath = mapping.getSourceJsonPath();
final String[] pathParts = srcPath.split("\\.");
List<PathSegment> paths = mappingPaths;
PathSegment parent = null;
for (int idx = 0; idx < pathParts.length; idx++) {
PathSegment sibling;
final String pathPart = pathParts[idx];
final Optional<PathSegment> path = paths.stream().filter(p -> Objects.equals(p.getSegment(), pathPart)).findFirst();
if (path.isEmpty()) {
if (idx == pathParts.length - 1) {
sibling = buildTerminalPathSegment(pathPart, parent, mapping);
} else if (pathPart.endsWith("[]")) {
sibling = new JoinPathSegment(pathPart, parent, "g" + groupCount[0]++);
} else {
sibling = new PathSegment(pathPart, parent);
}
paths.add(sibling);
parent = sibling;
paths = sibling.getChildren();
} else {
parent = path.get();
paths = path.get().getChildren();
}
}
});
return mappingPaths;
}