All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sdl.dxa.common.dto.SitemapRequestDto Maven / Gradle / Ivy

Go to download

DXA Common project contains framework common classes shared between all other artifacts

There is a newer version: 2.3.7
Show newest version
package com.sdl.dxa.common.dto;

import com.google.common.base.Strings;
import com.sdl.webapp.common.api.navigation.NavigationFilter;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.Value;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

@Value
@Builder(toBuilder = true, builderMethodName = "hiddenBuilder")
@EqualsAndHashCode(exclude = "expandLevels")
@ToString
public class SitemapRequestDto {

    private String sitemapId;

    private int localizationId;

    /**
     * namespace {"tcm", "ish"}
     */
    private String uriType;

    private DepthCounter expandLevels;

    private NavigationFilter navigationFilter;

    @Getter(AccessLevel.NONE)
    @Setter(AccessLevel.NONE)
    private Map claims = new HashMap<>();

    public void addClaim(ClaimHolder holder) {
        if (holder == null) return;
        if (Strings.isNullOrEmpty(holder.getUri())) {
            throw new IllegalArgumentException("Claim should contain an non-empty URI, but was: " + holder);
        }
        claims.put(holder.getUri(), holder);
    }

    public Map getClaims() {
        return Collections.unmodifiableMap(claims);
    }

    public static SitemapRequestDtoBuilder wholeTree(int localizationId) {
        return builder(localizationId)
                .navigationFilter(new NavigationFilter().setDescendantLevels(-1))
                .expandLevels(DepthCounter.UNLIMITED_DEPTH);
    }

    public static SitemapRequestDtoBuilder builder(int localizationId) {
        return hiddenBuilder().localizationId(localizationId);
    }

    private static SitemapRequestDtoBuilder hiddenBuilder() {
        return new SitemapRequestDtoBuilder();
    }

    public SitemapRequestDto nextExpandLevel() {
        return this.toBuilder().expandLevels(new DepthCounter(expandLevels.getCounter() - 1)).build();
    }

    /**
     * Default values for builder.
     */
    public static class SitemapRequestDtoBuilder {

        private DepthCounter expandLevels = DepthCounter.UNLIMITED_DEPTH;

        private NavigationFilter navigationFilter = NavigationFilter.DEFAULT;

        private String uriType = "tcm";

    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy