Skip to content

Commit

Permalink
CDR-765 fix FlatHelper::buildNamePath
Browse files Browse the repository at this point in the history
  • Loading branch information
HolgerReiseVSys committed Mar 10, 2023
1 parent a5e616d commit a6f8a44
Showing 1 changed file with 36 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -56,51 +56,50 @@ public class FlatHelper<T> {
private final Map<String, Map<List<String>, Integer>> pathCountMap = new HashMap<>();

public String buildNamePath(Context<T> context, boolean addCount) {
StringBuilder namePathBuilder = new StringBuilder();
StringBuilder namePathBuilder = new StringBuilder();
List<String> nodeIdPath = new ArrayList<>();

List<String> nodeIdPath = new ArrayList<>();
WebTemplateNode child = null;
for (Iterator<WebTemplateNode> iterator = context.getNodeDeque().descendingIterator(); iterator.hasNext(); ) {
WebTemplateNode parent = child;
child = iterator.next();
boolean skip = skip(child, parent);

WebTemplateNode child = null;
for (Iterator<WebTemplateNode> iterator = context.getNodeDeque().descendingIterator(); iterator.hasNext(); ) {
WebTemplateNode parent = child;
child = iterator.next();
boolean skip = skip(child, parent);
boolean parentIsSkippedElement = parent != null && ELEMENT.equals(parent.getRmType()) && skip(parent, null);
WebTemplateNode node = parentIsSkippedElement ? parent : child;

boolean parentIsSkippedElement = parent != null && ELEMENT.equals(parent.getRmType()) && skip(parent, null);
WebTemplateNode node = parentIsSkippedElement ? parent : child;
nodeIdPath.add(node.getId(true));

nodeIdPath.add(node.getId(true));
if (!skip) {
if (namePathBuilder.length() > 0) {
namePathBuilder.append('/');
}

if (!skip) {
if (namePathBuilder.length() > 0) {
namePathBuilder.append('/');
}
// Value inherits id of skipped Element, if applicable
namePathBuilder.append(node.getId(false));

// Value inherits id of skipped Element, if applicable
namePathBuilder.append(node.getId(false));
// Note: the key is still without pathCount and count
String key = namePathBuilder.toString();

// Note: the key is still without pathCount and count
String key = namePathBuilder.toString();
Map<List<String>, Integer> pathCounts = pathCountMap.computeIfAbsent(key, l -> new HashMap<>());

Map<List<String>, Integer> pathCounts = pathCountMap.computeIfAbsent(key, l -> new HashMap<>());
List<String> nodeIdPathKey = List.copyOf(nodeIdPath);
int pathCount = pathCounts.computeIfAbsent(nodeIdPathKey, k -> 1 + maxValue(pathCounts));
if (pathCount != 1) {
namePathBuilder.append(pathCount);
}

List<String> nodeIdPathKey = List.copyOf(nodeIdPath);
int pathCount = pathCounts.computeIfAbsent(nodeIdPathKey, k -> 1 + maxValue(pathCounts));
if (pathCount != 1) {
namePathBuilder.append(pathCount);
}
appendCount(node, context, addCount, namePathBuilder);

appendCount(node, context, addCount, namePathBuilder);
Map<List<String>, Integer> map =
pathCountMap.computeIfAbsent(namePathBuilder.toString(), l -> new HashMap<>());
map.computeIfAbsent(nodeIdPath, k -> 1 + maxValue(map));
}
}

Map<List<String>, Integer> map =
pathCountMap.computeIfAbsent(namePathBuilder.toString(), l -> new HashMap<>());
map.computeIfAbsent(nodeIdPath, k -> 1 + maxValue(map));
return namePathBuilder.toString();
}

return namePathBuilder.toString();
}

private static int maxValue(Map<?, Integer> map) {
return map.values().stream().mapToInt(Integer::intValue).max().orElse(0);
}
Expand Down Expand Up @@ -248,11 +247,11 @@ public boolean skip(WebTemplateNode node, WebTemplateNode parent) {

if (rmTypeMatches(
node,
RmConstants.HISTORY,
RmConstants.ITEM_TREE,
RmConstants.ITEM_LIST,
RmConstants.ITEM_SINGLE,
RmConstants.ITEM_TABLE,
RmConstants.HISTORY,
RmConstants.ITEM_TREE,
RmConstants.ITEM_LIST,
RmConstants.ITEM_SINGLE,
RmConstants.ITEM_TABLE,
RmConstants.ITEM_STRUCTURE)) {
return true;
} else if (parent != null && isEvent(node)) {
Expand Down Expand Up @@ -361,6 +360,7 @@ public static Map<Integer, Map<FlatPathDto, String>> extractMultiValued(
* @return a new map with the filtered entries
*/
public static Map<FlatPathDto, String> filter(Map<FlatPathDto, String> values, String path, boolean includeRaw) {

return values.entrySet().stream()
.filter(e -> e.getKey().startsWith(path))
.filter(e -> includeRaw || !"raw".equals(e.getKey().getLast().getAttributeName()))
Expand Down

0 comments on commit a6f8a44

Please sign in to comment.