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