Package org.jtalks.jcommune.plugin.api.web.util

Source Code of org.jtalks.jcommune.plugin.api.web.util.BreadcrumbBuilder

/**
* Copyright (C) 2011  JTalks.org Team
* 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; either
* version 2.1 of the License, or (at your option) any later version.
* 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 library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
*/
package org.jtalks.jcommune.plugin.api.web.util;

import org.jtalks.common.model.entity.Section;
import org.jtalks.jcommune.model.entity.Branch;
import org.jtalks.jcommune.model.entity.Post;
import org.jtalks.jcommune.model.entity.Topic;
import org.jtalks.jcommune.plugin.api.web.dto.Breadcrumb;
import org.jtalks.jcommune.plugin.api.web.dto.BreadcrumbLocation;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

/**
* DTO builder for {@link org.jtalks.jcommune.plugin.api.web.dto.Breadcrumb} objects.
* Used for preparing breadcrumbs for the different JSP views.
*
* @author Alexandre Teterin
*/

@Component
public class BreadcrumbBuilder {

    /**
     * Returns the Forum breadcrumbs.
     *
     * @return the breadcrumb list for the Forum location. Contains one (root) breadcrumb.
     */
    public List<Breadcrumb> getForumBreadcrumb() {
        List<Breadcrumb> breadcrumbList = new ArrayList<>();
        breadcrumbList.add(prepareForumBreadcrumb());

        return breadcrumbList;
    }

    /**
     * Returns the branch breadcrumbs.
     *
     * @param branch {@link org.jtalks.jcommune.model.entity.Branch} the breadcrumbed branch.
     * @return the breadcrumb list for the current <code>Branch</code> location.
     */
    public List<Breadcrumb> getForumBreadcrumb(Branch branch) {
        List<Breadcrumb> breadcrumbList = getForumBreadcrumb();
        breadcrumbList.add(prepareBranchBreadcrumb(branch));

        return breadcrumbList;
    }

    /**
     * Returns the topic breadcrumbs.
     *
     * @param topic {@link org.jtalks.jcommune.model.entity.Topic} the breadcrumbed topic.
     * @return the breadcrumb list for the current <code>Topic</code> location.
     */
    public List<Breadcrumb> getForumBreadcrumb(Topic topic) {
        List<Breadcrumb> breadcrumbList = getForumBreadcrumb(topic.getBranch());
        breadcrumbList.add(prepareTopicBreadcrumb(topic.getBranch()));

        return breadcrumbList;
    }

    /**
     * Returns the post breadcrumbs.
     *
     * @param post {@link org.jtalks.jcommune.model.entity.Post} the breadcrumbed post.
     * @return the breadcrumb list for the current <code>Post</code> location.
     */
    public List<Breadcrumb> getForumBreadcrumb(Post post) {
        List<Breadcrumb> breadcrumbList = getForumBreadcrumb(post.getTopic());
        breadcrumbList.add(preparePostBreadcrumb(post));

        return breadcrumbList;
    }

    /**
     * Returns the topic breadcrumbs.
     *
     * @param branch {@link org.jtalks.jcommune.model.entity.Topic} of the breadcrumbed topic.
     * @return the breadcrumb list for the current <code>Topic</code> location.
     */
    public List<Breadcrumb> getNewTopicBreadcrumb(Branch branch) {
        List<Breadcrumb> breadcrumbList = getForumBreadcrumb(branch);
        breadcrumbList.add(prepareTopicBreadcrumb(branch));

        return breadcrumbList;
    }

    /**
     * Fill the forum breadcrumb.
     *
     * @return {@link Breadcrumb} the filled breadcrumb for the Forum location.
     */
    private Breadcrumb prepareForumBreadcrumb() {
        return new Breadcrumb(
                Breadcrumb.STUB_BREADCRUMB_ID,
                BreadcrumbLocation.FORUM,
                Breadcrumb.ROOT_BREADCRUMB_LOCATION_VALUE);
    }

    /**
     * Fill the branch breadcrumb.
     *
     * @param branch {@link org.jtalks.jcommune.model.entity.Branch} the breadcrumbed branch.
     * @return {@link Breadcrumb} the filled breadcrumb for the Section location.
     */
    private Breadcrumb prepareBranchBreadcrumb(Branch branch) {
        Section section = branch.getSection();
        return new Breadcrumb(
                section.getId(),
                BreadcrumbLocation.SECTION,
                section.getName());
    }

    /**
     * Fill the branch breadcrumb.
     *
     * @param branch {@link org.jtalks.jcommune.model.entity.Branch} of the breadcrumbed topic.
     * @return {@link Breadcrumb} the filled breadcrumb for the Topic location.
     */
    private Breadcrumb prepareTopicBreadcrumb(Branch branch) {
        return new Breadcrumb(
                branch.getId(),
                BreadcrumbLocation.BRANCH,
                branch.getName());
    }

    /**
     * Fill the post breadcrumb.
     *
     * @param post {@link org.jtalks.jcommune.model.entity.Post} the breadcrumbed post.
     * @return {@link Breadcrumb} the filled breadcrumb for the Post location.
     */
    private Breadcrumb preparePostBreadcrumb(Post post) {
        Topic topic = post.getTopic();
        return new Breadcrumb(
                topic.getId(),
                BreadcrumbLocation.TOPIC,
                topic.getTitle());
    }
}
TOP

Related Classes of org.jtalks.jcommune.plugin.api.web.util.BreadcrumbBuilder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.