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]>