WikiSearchSupport.java :  » JBoss » jboss-seam-2.2.0 » org » jboss » seam » wiki » core » search » Java Open Source

Java Open Source » JBoss » jboss seam 2.2.0 
jboss seam 2.2.0 » org » jboss » seam » wiki » core » search » WikiSearchSupport.java
package org.jboss.seam.wiki.core.search;

import org.jboss.seam.annotations.Name;
import org.jboss.seam.wiki.core.model.WikiDocument;
import org.jboss.seam.wiki.core.model.WikiComment;
import org.jboss.seam.wiki.core.search.metamodel.SearchSupport;
import org.jboss.seam.wiki.core.search.metamodel.SearchableEntityHandler;
import org.jboss.seam.wiki.core.ui.WikiURLRenderer;
import org.jboss.seam.Component;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.highlight.*;

import java.util.Set;
import java.util.HashSet;

/**
 * Handlers for searchable entities of the core domain model.
 *
 * @author Christian Bauer
 */
@Name("wikiSearchSupport")
public class WikiSearchSupport extends SearchSupport {

    public Set<SearchableEntityHandler> getSearchableEntityHandlers() {

        return new HashSet<SearchableEntityHandler>() {{

            add(
                new SearchableEntityHandler<WikiDocument>() {

                    public boolean isReadAccessChecked() {
                        return true;
                    }

                    public SearchHit extractHit(Query query, WikiDocument doc) throws Exception {
                        WikiURLRenderer urlRenderer = (WikiURLRenderer) Component.getInstance(WikiURLRenderer.class);
                        return new SearchHit(
                            WikiDocument.class.getSimpleName(),
                            "icon.doc.gif",
                            "(" + doc.getCreatedBy().getFullname() + ") " + escapeBestFragments(query, new NullFragmenter(), doc.getName(), 0, 0),
                            urlRenderer.renderURL(doc),
                            escapeBestFragments(query, new SimpleFragmenter(100), doc.getContent(), 5, 350)
                        );
                    }
                }
            );

            add(
                new SearchableEntityHandler<WikiComment>() {
                    public SearchHit extractHit(Query query, WikiComment comment) throws Exception {
                        WikiURLRenderer urlRenderer = (WikiURLRenderer)Component.getInstance(WikiURLRenderer.class);
                        return new SearchHit(
                            WikiComment.class.getSimpleName(),
                            "icon.user.gif",
                            "(" + (comment.getCreatedBy() != null ? comment.getCreatedBy().getFullname() : comment.getFromUserName()) + ") "
                                + escapeBestFragments(query, new NullFragmenter(), comment.getSubject(), 0, 0),
                            urlRenderer.renderURL(comment),
                            escapeBestFragments(query, new SimpleFragmenter(100), comment.getContent(), 5, 350)
                        );
                    }
                }
            );

        }};
    }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.