wam         2002/07/04 08:20:54

  Modified:    src/share/org/apache/slide/search/basic
                        BasicSearchLanguage.java
  Log:
  get the class for the store specific implementation of basicsearch
  
  Revision  Changes    Path
  1.10      +40 -5     
jakarta-slide/src/share/org/apache/slide/search/basic/BasicSearchLanguage.java
  
  Index: BasicSearchLanguage.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/src/share/org/apache/slide/search/basic/BasicSearchLanguage.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- BasicSearchLanguage.java  19 Jun 2002 11:00:11 -0000      1.9
  +++ BasicSearchLanguage.java  4 Jul 2002 15:20:54 -0000       1.10
  @@ -68,10 +68,15 @@
   
   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;
   
  @@ -92,6 +97,9 @@
       
       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 () {}
       
       /**
  @@ -153,8 +161,35 @@
        *
        */
       public SearchQuery parseQuery (Element basicSearchElement, SearchToken token, 
PropertyProvider propertyProvider) throws BadQueryException {
  -        BasicQuery query =  new BasicQueryImpl(token);
  +        
  +        QueryScope scope = BasicQueryImpl.getScope (basicSearchElement);
  +        BasicQueryImpl query = null;
  +        
  +        Uri uri = new Uri (token.getNamespace(),
  +                           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 = (BasicQueryImpl)queryClass.newInstance();
  +                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 query;
       }
   }
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to