Package org.jboss.seam.wiki.plugin.faqBrowser

Source Code of org.jboss.seam.wiki.plugin.faqBrowser.FaqBrowser

/*
* JBoss, Home of Professional Open Source
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.seam.wiki.plugin.faqBrowser;

import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.*;
import org.jboss.seam.log.Log;
import org.jboss.seam.wiki.core.dao.WikiNodeDAO;
import org.jboss.seam.wiki.core.model.WikiDirectory;
import org.jboss.seam.wiki.core.model.WikiDocument;
import org.jboss.seam.wiki.core.model.WikiNode;
import org.jboss.seam.wiki.core.model.WikiTreeNode;

import java.util.List;
import java.io.Serializable;

/**
* @author Christian Bauer
*/
@Name("faqBrowser")
@Scope(ScopeType.PAGE)
public class FaqBrowser implements Serializable {

    @Logger
    Log log;

    @In(create = true)
    FaqBrowserDAO faqBrowserDAO;

    @In
    WikiNodeDAO wikiNodeDAO;

    @In
    WikiDirectory currentDirectory;

    @In(required = false)
    String requestedCategory;

    List<WikiTreeNode<WikiDirectory>> tree;
    WikiTreeNode<WikiDirectory> selectedDir;
    boolean directorySelected = false;

    public void loadTree() {
        log.debug("loading faq root, starting search for parent default file with macro in directory: " + currentDirectory);
        WikiDirectory faqRoot = faqBrowserDAO.findFaqRootDir(currentDirectory);
        if (faqRoot != null) {
            log.debug("found faq root: " + faqRoot);
            tree = wikiNodeDAO.findWikiDirectoryTree(faqRoot, WikiNode.SortableProperty.createdOn, true);
        } else {
            log.warn("did not find faq root, started search in: " + currentDirectory);
        }
        if (tree == null) {
            log.warn("faq directory tree has not been loaded");
        }
    }

    @Create
    public void setDefaultDir() {
        if (requestedCategory != null) {
            log.debug("trying to resolve requested category: " + requestedCategory);
            WikiDirectory dir = wikiNodeDAO.findWikiDirectoryInArea(currentDirectory.getAreaNumber(), requestedCategory);
            if (dir != null) {
                log.debug("found requested category, setting selected directory: " + dir);
                selectedDir = new WikiTreeNode(0, dir);
                showQuestions();
            }
        }
        if (selectedDir == null) {
            log.debug("setting selected directory to current directory");
            selectedDir = new WikiTreeNode(0, wikiNodeDAO.findWikiDirectory(currentDirectory.getId()));
        }
    }

    public List<WikiTreeNode<WikiDirectory>> getTree() {
        log.debug("getting faq tree");
        if (tree == null) loadTree();
        return tree;
    }

    public WikiTreeNode<WikiDirectory> getSelectedDir() {
        log.debug("getting selected directory : " + selectedDir);
        return selectedDir;
    }

    public void setSelectedDir(WikiTreeNode<WikiDirectory> selectedDir) {
        log.debug("setting selected directory: " + selectedDir);
        this.selectedDir = selectedDir;
    }

    public boolean isDirectorySelected() {
        return directorySelected;
    }

    @Observer("FaqBrowser.questionListRefresh")
    public void showQuestions() {
        log.debug("showing questions of currently selected: " + selectedDir);
        directorySelected = true;
        questions = wikiNodeDAO.findWikiDocuments(selectedDir.getNode(), WikiNode.SortableProperty.createdOn, true);
    }

    public void hideQuestions() {
        log.debug("hiding questions");
        directorySelected = false;
        this.questions = null;
    }

    List<WikiDocument> questions;

    public List<WikiDocument> getQuestions() {
        log.debug("retrieving questions: " + questions);
        return questions;
    }


}
TOP

Related Classes of org.jboss.seam.wiki.plugin.faqBrowser.FaqBrowser

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.