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

io.quarkus.devui.spi.page.ExternalPageBuilder Maven / Gradle / Ivy

package io.quarkus.devui.spi.page;

import io.quarkus.logging.Log;

public class ExternalPageBuilder extends PageBuilder {
    private static final String QWC_EXTERNAL_PAGE_JS = "qwc-external-page.js";
    private static final String EXTERNAL_URL = "externalUrl";
    private static final String DYNAMIC_URL = "dynamicUrlMethodName";
    private static final String MIME_TYPE = "mimeType";

    public static final String MIME_TYPE_HTML = "text/html";
    public static final String MIME_TYPE_JSON = "application/json";
    public static final String MIME_TYPE_YAML = "application/yaml";
    public static final String MIME_TYPE_PDF = "application/pdf";

    protected ExternalPageBuilder(String title) {
        super();
        super.title = title;
        super.componentLink = QWC_EXTERNAL_PAGE_JS;
        super.internalComponent = true;// As external page runs on "internal" namespace
    }

    public ExternalPageBuilder url(String url) {
        return url(url, null);
    }

    public ExternalPageBuilder url(String url, String externalLink) {
        if (url == null || url.isEmpty()) {
            throw new RuntimeException("Invalid external URL, can not be empty");
        }
        super.metadata.put(EXTERNAL_URL, url);
        if (externalLink != null) {
            return staticLabel("");
        }
        return this;
    }

    @SuppressWarnings("unchecked")
    public ExternalPageBuilder dynamicUrlJsonRPCMethodName(String methodName) {
        if (methodName == null || methodName.isEmpty()) {
            throw new RuntimeException("Invalid dynamic URL Method name, can not be empty");
        }
        super.metadata.put(DYNAMIC_URL, methodName);
        return this;
    }

    public ExternalPageBuilder isHtmlContent() {
        return mimeType(MIME_TYPE_HTML);
    }

    public ExternalPageBuilder isJsonContent() {
        return mimeType(MIME_TYPE_JSON);
    }

    public ExternalPageBuilder isYamlContent() {
        return mimeType(MIME_TYPE_YAML);
    }

    public ExternalPageBuilder isPdfContent() {
        return mimeType(MIME_TYPE_PDF);
    }

    public ExternalPageBuilder mimeType(String mimeType) {
        if (mimeType == null || mimeType.isEmpty()) {
            throw new RuntimeException("Invalid mimeType, can not be empty");
        }
        if (super.metadata.containsKey(MIME_TYPE)) {
            Log.warn("MimeType already set to " + super.metadata.get(MIME_TYPE) + ", overriding with new value");
        }
        super.metadata.put(MIME_TYPE, mimeType);
        return this;
    }

    public ExternalPageBuilder doNotEmbed() {
        return doNotEmbed(false);
    }

    public ExternalPageBuilder doNotEmbed(boolean includeInMenu) {
        super.embed = false;
        super.includeInMenu = includeInMenu;
        return this;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy