private static Link linkForItem(SitemapItem item) { Link link = new Link(); link.setUrl(item.getUrl()); link.setLinkText(item.getTitle()); return link; }
@Override public NavigationLinks getTopNavigationLinks(String requestPath, Localization localization) throws NavigationProviderException { final SitemapItem navigationModel = getNavigationModel(localization); return new NavigationLinks(createLinksForVisibleItems(navigationModel.getItems())); }
private <T extends EntityModel> void _processMediaItem(EntityModelData modelData, T entityModel) throws DxaException { if (entityModel instanceof MediaItem) { MediaItem mediaItem = (MediaItem) entityModel; BinaryContentData binaryContent = modelData.getBinaryContent(); if (binaryContent == null) { throw new DxaException("Unable to create Media Item ('" + mediaItem.getClass() + "') " + "because the Data Model '" + mediaItem.getId() + "') \"' does not contain Binary Content Data."); } mediaItem.setUrl(binaryContent.getUrl()); mediaItem.setFileName(binaryContent.getFileName()); mediaItem.setMimeType(binaryContent.getMimeType()); mediaItem.setFileSize(binaryContent.getFileSize()); if (mediaItem instanceof EclItem) { EclItem eclItem = (EclItem) mediaItem; ExternalContentData externalContent = modelData.getExternalContent(); if (externalContent == null) { throw new DxaException("Unable to create ECL Item ('" + eclItem.getClass() + "') " + "because the Data Model '" + eclItem.getId() + "') \"' does not contain External Content Data."); } eclItem.setDisplayTypeId(externalContent.getDisplayTypeId()); eclItem.setTemplateFragment(externalContent.getTemplateFragment()); eclItem.setExternalMetadata(externalContent.getMetadata()); eclItem.setUri(externalContent.getId()); } } }
@NotNull private SitemapItem _convert(@NotNull SitemapItemModelData model) { SitemapItem item = _instantiateSitemap(model); item.setId(model.getId()); item.setVisible(model.isVisible()); item.setUrl(model.getUrl()); item.setTitle(model.getTitle()); item.setOriginalTitle(model.getOriginalTitle()); item.setPublishedDate(model.getPublishedDate()); item.setType(model.getType()); model.getItems().forEach(modelData -> item.addItem(_convert(modelData))); return item; }
@NotNull private SitemapItem _instantiateSitemap(@NotNull SitemapItemModelData model) { if (model instanceof TaxonomyNodeModelData) { TaxonomyNodeModelData taxonomyModel = (TaxonomyNodeModelData) model; TaxonomyNode item = new TaxonomyNode(); item.setKey(taxonomyModel.getKey()); item.setClassifiedItemsCount(taxonomyModel.getClassifiedItemsCount()); item.setDescription(taxonomyModel.getDescription()); item.setTaxonomyAbstract(taxonomyModel.isTaxonomyAbstract()); item.setWithChildren(taxonomyModel.isWithChildren()); return item; } else { return new SitemapItem(); } } }
private static SitemapItem findContextNavigationStructureGroup(SitemapItem item, String requestPath) { if (Objects.equals(item.getType(), TYPE_STRUCTURE_GROUP) && requestPath.startsWith(item.getUrl().toLowerCase())) { // Check if there is a matching subitem, if yes, then return it for (SitemapItem subItem : item.getItems()) { final SitemapItem matchingSubItem = findContextNavigationStructureGroup(subItem, requestPath); if (matchingSubItem != null) { return matchingSubItem; } } // Otherwise return this matching item return item; } // No matching item return null; }
@Override public Tag convert(KeywordWrapper keyword) { final Tag tag = new Tag(); tag.setDisplayText(getKeywordDisplayText(keyword)); tag.setKey(getKeywordKey(keyword)); tag.setTagCategory(keyword.getTaxonomyId()); return tag; } }
private EntityModel createEntityModel(EntityModelData entityModelData, ConditionalKeyBuilder cacheRequest) { try { EntityModel entityModel = modelBuilderPipeline.createEntityModel(entityModelData); if (isNeverCached(entityModel)) { cacheRequest.skipCaching(true); } return entityModel; } catch (Exception e) { log.warn("Cannot create an entity model for model data {}", entityModelData, e); return new ExceptionEntity(e); } }
@Override public void readFromXhtmlElement(Node xhtmlElement) { super.readFromXhtmlElement(xhtmlElement); this.setMvcData(getMvcData()); }
/** * {@inheritDoc} */ @Override protected HtmlElement generateElement() throws DxaException { if (media == null) { return null; } return media.toHtmlElement(this.widthFactor, this.aspect, this.cssClass, this.containerSize, this.getContextPath()); }
private static List<Link> createLinksForVisibleItems(Iterable<SitemapItem> items) { final List<Link> links = new ArrayList<>(); for (SitemapItem item : items) { if (item.isVisible()) { links.add(linkForItem(item)); } } return links; }
@Override public NavigationLinks getBreadcrumbNavigationLinks(String requestPath, Localization localization) throws NavigationProviderException { final SitemapItem navigationModel = getNavigationModel(localization); final List<Link> links = new ArrayList<>(); createBreadcrumbLinks(navigationModel, requestPath, links); return new NavigationLinks(links); }
@Override public void setStart(int start) { super.setStart(start); Assert.isTrue(getPageSize() > 0, "Page size should be > 0"); setCurrentPage((start / getPageSize()) + 1); } }
@Override public NavigationLinks getContextNavigationLinks(String requestPath, Localization localization) throws NavigationProviderException { final SitemapItem navigationModel = getNavigationModel(localization); final SitemapItem contextNavigationItem = findContextNavigationStructureGroup(navigationModel, requestPath); final List<Link> links = contextNavigationItem != null ? createLinksForVisibleItems(contextNavigationItem.getItems()) : Collections.emptyList(); return new NavigationLinks(links); }
private EntityModel createEntityModel(EntityModelData entityModelData, ConditionalKeyBuilder cacheRequest) { try { EntityModel entityModel = modelBuilderPipeline.createEntityModel(entityModelData); if (isNeverCached(entityModel)) { cacheRequest.skipCaching(true); } return entityModel; } catch (Exception e) { log.warn("Cannot create an entity model for model data {}", entityModelData, e); return new ExceptionEntity(e); } }
@Override public void readFromXhtmlElement(Node xhtmlElement) { super.readFromXhtmlElement(xhtmlElement); this.alternateText = xhtmlElement.getAttributes().getNamedItem("alt").getNodeValue(); this.setMvcData(getMvcData()); }
@Override public void readFromXhtmlElement(Node xhtmlElement) { super.readFromXhtmlElement(xhtmlElement); this.setYouTubeId(xhtmlElement.getAttributes().getNamedItem("data-youTubeId").getNodeValue()); this.setHeadline(xhtmlElement.getAttributes().getNamedItem("data-headline").getNodeValue()); this.setMvcData(getMvcData()); }