/* * 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.In; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Scope; import org.jboss.seam.wiki.core.model.WikiDirectory; import org.jboss.seam.wiki.core.model.WikiDocument; import javax.persistence.EntityManager; import java.io.Serializable; import java.util.List; import java.util.ArrayList; /** * @author Christian Bauer */ @Name("faqBrowserDAO") @Scope(ScopeType.CONVERSATION) public class FaqBrowserDAO implements Serializable { @In EntityManager restrictedEntityManager; public WikiDirectory findFaqRootDir(WikiDirectory startDir) { // This was a database query once... now it's in-memory iteration List<WikiDirectory> parents = new ArrayList(); parents.add(startDir); parents.addAll(startDir.getParentsRecursive()); WikiDirectory faqRootDir = null; // We need the highest level directory that has a document with a "faqBrowser" macro for (WikiDirectory parent : parents) { if (parent.getDefaultFile() == null) continue; if (((WikiDocument)parent.getDefaultFile()).getHeaderMacrosString().contains("faqBrowser")) { faqRootDir = parent; // Continue iterating, maybe we find a higher level directory with the macro } } return faqRootDir; } }