Package org.apache.slide.search.basic

Source Code of org.apache.slide.search.basic.BasicSearchLanguage

/*
* $Header: /home/cvspublic/jakarta-slide/src/share/org/apache/slide/search/basic/BasicSearchLanguage.java,v 1.12.2.2 2004/02/05 16:05:10 mholz Exp $
* $Revision: 1.12.2.2 $
* $Date: 2004/02/05 16:05:10 $
*
* ====================================================================
*
* Copyright 1999-2002 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/

package org.apache.slide.search.basic;

// import list
import org.apache.slide.content.NodeProperty.NamespaceCache;

import org.apache.slide.search.SearchLanguage;
import org.apache.slide.search.SearchQuery;
import org.apache.slide.search.QueryScope;
import org.apache.slide.search.SearchToken;
import org.apache.slide.search.BadQueryException;
import org.apache.slide.search.PropertyProvider;

import org.apache.slide.store.AbstractStore;
import org.apache.slide.common.SlideRuntimeException;
import org.apache.slide.common.Uri;

import org.jdom.Element;
import org.jdom.Document;

import org.jdom.input.SAXBuilder;

import java.io.StringReader;

/**
* Represent the BasicSearchLanguage for Slide
*
* @author <a href="mailto:martin.wallmer@softwareag.com">Martin Wallmer</a>
* @version $Revision: 1.12.2.2 $
*/
public class BasicSearchLanguage extends SearchLanguage {
   
    static final String GRAMMAR_NAME =
        "basicsearch";
   
    static final String GRAMMAR_NAMESPACE = NamespaceCache.DEFAULT_URI;
   
    /** the property name for the store specific BasicQuery implementation if any */
    static public final String BASIC_QUERY_CLASS = "basicQueryClass";
   
    public BasicSearchLanguage () {}
   
    /**
     * Method getName
     *
     * @return   the name of this query language
     */
    public String getName() {
        return GRAMMAR_NAME;
    }
   
    /**
     * Retrieves the URI of this language
     *
     * @return   the namspace of this language
     */
    public String getGrammarUri() {
        return GRAMMAR_NAMESPACE;
    }
   
    /**
     * Creates a SearchQuery out of this queryString
     *
     * @param    queryString         an XML String describing this query
     * @param    token               SearchToken
     * @param    propertyProvider    the  PropertyProvider to use (may be
     *                               <code>null</code>).
     *
     * @return   the SearchQuery
     *
     * @throws   BadQueryException
     */
    public SearchQuery parseQuery (String queryString, SearchToken token, PropertyProvider propertyProvider) throws BadQueryException {
        // TODO: parse queryString and pass to parseQuery(Element, SearchToken);
        try {
            Document doc =
                new SAXBuilder ().build (new StringReader (queryString));
           
            Element root = doc.getRootElement();
            return parseQuery(root, token, propertyProvider);
        }
        catch (Exception e) {
            e.printStackTrace();
            throw new BadQueryException (e.getMessage());
        }
    }
   
    /**
     * Creates a SearchQuery out of this queryElement
     *
     * @param    basicSearchElement  JDOM Element describing this query
     * @param    token               SearchToken
     * @param    propertyProvider    the  PropertyProvider to use (may be
     *                               <code>null</code>).
     *
     * @return   BasicSearchQuery
     *
     * @throws   SearchException
     *
     */
    public SearchQuery parseQuery (Element basicSearchElement, SearchToken token, PropertyProvider propertyProvider) throws BadQueryException {
        boolean useEnvelope = true;
       
       
        QueryScope scope = BasicQueryImpl.getScope (basicSearchElement);
        IBasicQuery query = null;
       
       
        if (useEnvelope) {
            query = new BasicQueryEnvelope (token, scope);
           
        }
        else {
       
//          Uri uri = new Uri (token.getNamespace(),   );
            Uri uri = token.getNamespace().getUri(token.getSlideToken(), token.getSlideContext().getSlidePath(scope.getHref()));
       
        AbstractStore store = (AbstractStore)uri.getStore();
        String className = (String)store.getParameter (BASIC_QUERY_CLASS);
       
        if (className != null) {
            try {
                Class queryClass = Class.forName (className);
                    query = (IBasicQuery) queryClass.newInstance();
                    ((IBasicQuery) query).init (token);
            }
            catch (Exception e) {
                e.printStackTrace();
                throw new SlideRuntimeException (e.getMessage());
            }
        }
       
        else {
            query =  new BasicQueryImpl(token);
        }
        }
       
        //BasicQueryImpl query =  new XBasicQueryImpl(token);
        query.parseQueryElement(basicSearchElement, propertyProvider);
       
        return (SearchQuery) query;
    }
}
TOP

Related Classes of org.apache.slide.search.basic.BasicSearchLanguage

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.