private TaxonomyNode createTaxonomyNode(@NotNull Keyword keyword, int expandLevels, NavigationFilter filter, @NotNull Localization localization) {
String taxonomyId = keyword.getTaxonomyURI().split("-")[1];
String taxonomyNodeUrl = null;
List<SitemapItem> children = new ArrayList<>();
if (expandLevels != 0) {
for (Keyword childKeyword : keyword.getKeywordChildren()) {
children.add(createTaxonomyNode(childKeyword, expandLevels - 1, filter, localization));
}
if (keyword.getReferencedContentCount() > 0 && filter.getDescendantLevels() != 0) {
List<SitemapItem> pageSitemapItems = getChildrenPages(keyword, taxonomyId, localization);
taxonomyNodeUrl = findIndexPageUrl(pageSitemapItems);
log.trace("taxonomyNodeUrl = {}", taxonomyNodeUrl);
children.addAll(pageSitemapItems);
}
}
for (SitemapItem child : children) {
child.setTitle(LocalizationUtils.removeSequenceFromPageTitle(child.getTitle()));
}
return createTaxonomyNodeFromKeyword(toDto(keyword), taxonomyId, taxonomyNodeUrl, new LinkedHashSet<>(children));
}