Author: ssmiweve
Date: 2008-11-21 18:40:38 +0100 (Fri, 21 Nov 2008)
New Revision: 6972

Modified:
   
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/AbstractSearchCommand.java
   
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/querybuilder/QueryBuilder.java
   
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/querybuilder/SesamSyntaxQueryBuilder.java
Log:
SEARCH-5165 Search Command's Displayable Query contains technical filters
SKER2149 Divide & Conquer AbstractSearchCommand to delegates 


Modified: 
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/AbstractSearchCommand.java
===================================================================
--- 
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/AbstractSearchCommand.java
      2008-11-21 15:19:34 UTC (rev 6971)
+++ 
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/AbstractSearchCommand.java
      2008-11-21 17:40:38 UTC (rev 6972)
@@ -240,7 +240,7 @@
         queryBuilder = constructQueryBuilder(cxt, queryBuilderContext);
 
         // construct the sesamSyntaxQueryBuilder
-        displayableQueryBuilder = new 
SesamSyntaxQueryBuilder(queryBuilderContext);
+        displayableQueryBuilder = new 
SesamSyntaxQueryBuilder(queryBuilderContext, bsc);
 
         // FIXME implement configuration lookup
         filterBuilder = new BaseFilterBuilder(queryBuilderContext, null);

Modified: 
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/querybuilder/QueryBuilder.java
===================================================================
--- 
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/querybuilder/QueryBuilder.java
  2008-11-21 15:19:34 UTC (rev 6971)
+++ 
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/querybuilder/QueryBuilder.java
  2008-11-21 17:40:38 UTC (rev 6972)
@@ -45,6 +45,7 @@
          * @return collection of reserved words
          */
         Collection<String> getReservedWords();
+        /** the SearchConfiguration for the command we are currently running 
for. **/
     }
 
     /** The Query String built from the Query's transformed clauses.

Modified: 
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/querybuilder/SesamSyntaxQueryBuilder.java
===================================================================
--- 
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/querybuilder/SesamSyntaxQueryBuilder.java
       2008-11-21 15:19:34 UTC (rev 6971)
+++ 
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/querybuilder/SesamSyntaxQueryBuilder.java
       2008-11-21 17:40:38 UTC (rev 6972)
@@ -17,8 +17,10 @@
 
 package no.sesat.search.mode.command.querybuilder;
 
+import no.sesat.search.mode.config.SearchConfiguration;
 import no.sesat.search.mode.config.querybuilder.InfixQueryBuilderConfig;
 import no.sesat.search.mode.config.querybuilder.QueryBuilderConfig;
+import no.sesat.search.query.LeafClause;
 import no.sesat.search.query.OrClause;
 import no.sesat.search.query.XorClause;
 
@@ -37,9 +39,9 @@
 
     private static final QueryBuilderConfig SESAM_SYNTAX_CONFIG = new 
InfixQueryBuilderConfig(
             "",
-            "AND",
             "",
-            "NOT ",
+            "",
+            "-",
             true,
             false,
             false);
@@ -49,22 +51,54 @@
 
     // Attributes ----------------------------------------------------
 
+    private final SearchConfiguration searchConf;
 
     // Static --------------------------------------------------------
 
     // Constructors --------------------------------------------------
 
-    public SesamSyntaxQueryBuilder(final Context cxt) {
+    public SesamSyntaxQueryBuilder(final Context cxt, final 
SearchConfiguration searchConf) {
+
         super(cxt, SESAM_SYNTAX_CONFIG);
+        this.searchConf = searchConf;
     }
 
     // AbstractReflectionVisitor implementation 
----------------------------------------------
 
     private boolean insideOr = false;
 
+    /** Avoids writting out fields to terms that
+ * do not come from the original query,  are not possible for the user to use.
+     *
+     * [EMAIL PROTECTED]
+     * @param clause [EMAIL PROTECTED]
+     */
     @Override
+    protected void visitImpl(LeafClause clause) {
+
+        if(!isEmptyLeaf(clause)){
+
+            String transformedClause = getEscapedTransformedTerm(clause);
+
+            if(null == clause.getField() && 
transformedClause.matches("[^\\]:")){
+
+                final String field = 
transformedClause.substring(0,transformedClause.indexOf(':'));
+
+                if(!searchConf.getFieldFilterMap().containsValue(field)){
+
+                    // query transformation has prepended the term with fields 
that are meaningless to the user.
+                    transformedClause = 
transformedClause.substring(transformedClause.indexOf(':') + 1);
+                }
+            }
+
+            appendToQueryRepresentation(transformedClause);
+        }
+    }
+
+    @Override
     protected void visitImpl(final OrClause clause) {
 
+        // avoid nesting ()'s
         boolean wasInside = insideOr;
         if (!insideOr) {
             appendToQueryRepresentation('(');

_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits

Reply via email to