Author: ssmiweve
Date: 2008-12-15 15:29:37 +0100 (Mon, 15 Dec 2008)
New Revision: 7095

Modified:
   
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/querybuilder/SesamSyntaxQueryBuilder.java
Log:
the idea to avoid writing out nested ()'s didn't work at all because it 
happened in the super implementation that was still being called

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-12-15 14:02:13 UTC (rev 7094)
+++ 
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/querybuilder/SesamSyntaxQueryBuilder.java
       2008-12-15 14:29:37 UTC (rev 7095)
@@ -95,20 +95,33 @@
         }
     }
 
+    /** Overridden to detect and prevent writing out multiple orGroupOpen and 
orGroupClose ie ()'s
+     * {...@inheritdoc}
+     * @param clause {...@inheritdoc}
+     */
     @Override
     protected void visitImpl(final OrClause clause) {
 
-        // avoid nesting ()'s
-        boolean wasInside = insideOr;
-        if (!insideOr) {
-            appendToQueryRepresentation('(');
+        if (!isEmptyLeaf(clause)) {
+
+            boolean wasInside = insideOr;
+
+            final boolean unary = isEmptyLeaf(clause.getFirstClause()) || 
isEmptyLeaf(clause.getSecondClause());
+
+            if(!insideOr && getConfig().getOrGrouped() && !unary){
+                appendToQueryRepresentation(getConfig().getOrGroupOpen());
+            }
+
+            insideOr = true;
+            clause.getFirstClause().accept(this);
+            clause.getSecondClause().accept(this);
+            insideOr = wasInside;
+
+            if(!insideOr && getConfig().getOrGrouped() && !unary){
+                appendToQueryRepresentation(getConfig().getOrGroupClose());
+            }
+
         }
-        insideOr = true;
-        super.visitImpl(clause);
-        insideOr = wasInside;
-        if (!insideOr) {
-            appendToQueryRepresentation(')');
-        }
     }
 
     /** Overridden so to avoid visiting any FULLNAME_ON_LEFT.

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

Reply via email to