private TaxonomyNodeModelData createTaxonomyNode(@NotNull Keyword keyword, @NotNull SitemapRequestDto requestDto) {
log.debug("Creating taxonomy node for keyword {} and request {}", keyword.getTaxonomyURI(), requestDto);
String taxonomyId = String.valueOf(TcmUtils.getItemId(keyword.getTaxonomyURI()));
String taxonomyNodeUrl = null;
List<SitemapItemModelData> children = new ArrayList<>();
if (requestDto.getExpandLevels().isNotTooDeep()) {
keyword.getKeywordChildren().forEach(child -> children.add(createTaxonomyNode(child, requestDto.nextExpandLevel())));
if (keyword.getReferencedContentCount() > 0 && requestDto.getNavigationFilter().getDescendantLevels() != 0) {
List<SitemapItemModelData> pageSitemapItems = getChildrenPages(keyword, taxonomyId, requestDto);
taxonomyNodeUrl = findIndexPageUrl(pageSitemapItems).orElse(null);
log.trace("taxonomyNodeUrl = {}", taxonomyNodeUrl);
children.addAll(pageSitemapItems);
}
}
children.forEach(child -> child.setTitle(removeSequenceFromPageTitle(child.getTitle())));
return createTaxonomyNodeFromKeyword(keyword, taxonomyId, taxonomyNodeUrl, new TreeSet<>(children));
}