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

org.bonitasoft.engine.business.application.xml.ApplicationNodeBuilder Maven / Gradle / Ivy

/**
 * Copyright (C) 2019 Bonitasoft S.A.
 * Bonitasoft, 32 rue Gustave Eiffel - 38000 Grenoble
 * This library is free software; you can redistribute it and/or modify it under the terms
 * of the GNU Lesser General Public License as published by the Free Software Foundation
 * version 2.1 of the License.
 * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU Lesser General Public License for more details.
 * You should have received a copy of the GNU Lesser General Public License along with this
 * program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
 * Floor, Boston, MA 02110-1301, USA.
 **/
package org.bonitasoft.engine.business.application.xml;

import org.bonitasoft.engine.business.application.ApplicationState;

public class ApplicationNodeBuilder {

    public static class ApplicationNodeContainerBuilder {

        private final ApplicationNodeContainer applicationNodeContainer = new ApplicationNodeContainer();

        public ApplicationNodeContainerBuilder havingApplications(IApplicationBuilder... applicationBuilders) {
            for (final IApplicationBuilder applicationBuilder : applicationBuilders) {
                applicationNodeContainer.addApplication(applicationBuilder.create());
            }
            return this;
        }

        public ApplicationNodeContainer create() {
            return applicationNodeContainer;
        }

    }

    public static interface IApplicationBuilder {

        public AbstractApplicationNode create();
    }

    public static class ApplicationLinkBuilder implements IApplicationBuilder {

        private final ApplicationLinkNode applicationNode;

        public ApplicationLinkBuilder(String token, String displayName, String version) {
            applicationNode = new ApplicationLinkNode();
            applicationNode.setToken(token);
            applicationNode.setDisplayName(displayName);
            applicationNode.setVersion(version);
            applicationNode.setState(ApplicationState.ACTIVATED.name());
        }

        public ApplicationLinkBuilder withDescription(String description) {
            applicationNode.setDescription(description);
            return this;
        }

        public ApplicationLinkBuilder withIconPath(String iconPath) {
            applicationNode.setIconPath(iconPath);
            return this;
        }

        public ApplicationLinkBuilder withProfile(String profile) {
            applicationNode.setProfile(profile);
            return this;
        }

        @Override
        public ApplicationLinkNode create() {
            return applicationNode;
        }

    }

    public static class ApplicationBuilder implements IApplicationBuilder {

        private final ApplicationNode applicationNode;

        public ApplicationBuilder(String token, String displayName, String version) {
            applicationNode = new ApplicationNode();
            applicationNode.setToken(token);
            applicationNode.setDisplayName(displayName);
            applicationNode.setVersion(version);
            applicationNode.setState(ApplicationState.ACTIVATED.name());
        }

        public ApplicationBuilder withHomePage(String homePage) {
            applicationNode.setHomePage(homePage);
            return this;
        }

        public ApplicationBuilder withDescription(String description) {
            applicationNode.setDescription(description);
            return this;
        }

        public ApplicationBuilder withIconPath(String iconPath) {
            applicationNode.setIconPath(iconPath);
            return this;
        }

        public ApplicationBuilder withProfile(String profile) {
            applicationNode.setProfile(profile);
            return this;
        }

        public ApplicationBuilder withLayout(String layout) {
            applicationNode.setLayout(layout);
            return this;
        }

        public ApplicationBuilder withTheme(String theme) {
            applicationNode.setTheme(theme);
            return this;
        }

        public ApplicationBuilder havingApplicationPages(PageBuilder... applicationPageBuilders) {
            for (final PageBuilder applicationPageBuilder : applicationPageBuilders) {
                applicationNode.addApplicationPage(applicationPageBuilder.create());
            }
            return this;
        }

        public ApplicationBuilder havingApplicationMenus(MenuBuilder... applicationMenuBuilders) {
            for (final MenuBuilder applicationMenuBuilder : applicationMenuBuilders) {
                applicationNode.addApplicationMenu(applicationMenuBuilder.create());
            }
            return this;
        }

        @Override
        public ApplicationNode create() {
            return applicationNode;
        }

    }

    public static class PageBuilder {

        private final ApplicationPageNode applicationPage;

        public PageBuilder(String customPage, String token) {
            applicationPage = new ApplicationPageNode();
            applicationPage.setCustomPage(customPage);
            applicationPage.setToken(token);
        }

        public ApplicationPageNode create() {
            return applicationPage;
        }

    }

    public static class MenuBuilder {

        private final ApplicationMenuNode applicationMenu;

        public MenuBuilder(String displayName, String applicationPage) {
            applicationMenu = new ApplicationMenuNode();
            applicationMenu.setDisplayName(displayName);
            applicationMenu.setApplicationPage(applicationPage);
        }

        public MenuBuilder havingMenu(MenuBuilder... menuBuilders) {
            for (final MenuBuilder applicationMenuBuilder : menuBuilders) {
                applicationMenu.addApplicationMenu(applicationMenuBuilder.create());
            }
            return this;
        }

        public ApplicationMenuNode create() {
            return applicationMenu;
        }
    }

    private ApplicationNodeBuilder() {

    }

    public static ApplicationNodeContainerBuilder newApplicationContainer() {
        return new ApplicationNodeContainerBuilder();
    }

    public static ApplicationLinkBuilder newApplicationLink(String token, String displayName, String version) {
        return new ApplicationLinkBuilder(token, displayName, version);
    }

    public static ApplicationBuilder newApplication(String token, String displayName, String version) {
        return new ApplicationBuilder(token, displayName, version);
    }

    public static PageBuilder newApplicationPage(String customPage, String token) {
        return new PageBuilder(customPage, token);
    }

    public static MenuBuilder newMenu(String displayName, String page) {
        return new MenuBuilder(displayName, page);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy