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