diff --git a/data-store/src/main/java/org/lucares/pdb/datastore/internal/DataStore.java b/data-store/src/main/java/org/lucares/pdb/datastore/internal/DataStore.java index ca23848..000093e 100644 --- a/data-store/src/main/java/org/lucares/pdb/datastore/internal/DataStore.java +++ b/data-store/src/main/java/org/lucares/pdb/datastore/internal/DataStore.java @@ -285,7 +285,7 @@ public class DataStore implements AutoCloseable { private PartitionLongList executeQuery(final Query query) { final long start = System.nanoTime(); synchronized (docIdToDoc) { - final Expression expression = QueryLanguageParser.parse(query.getQuery()); + final Expression expression = QueryLanguageParser.parse(query.getQuery(), stringCompressor); final ExpressionToDocIdVisitor visitor = new ExpressionToDocIdVisitor(query.getDateRange(), tagToDocsId, diskStorage, stringCompressor); final PartitionLongList docIdsList = expression.visit(visitor); @@ -371,7 +371,7 @@ public class DataStore implements AutoCloseable { public List propose(final QueryWithCaretMarker query) { - final NewProposerParser newProposerParser = new NewProposerParser(queryCompletionIndex); + final NewProposerParser newProposerParser = new NewProposerParser(queryCompletionIndex, stringCompressor); final List proposals = newProposerParser.propose(query); LOGGER.debug("Proposals for query {}: {}", query, proposals); return proposals; diff --git a/data-store/src/main/java/org/lucares/pdb/datastore/lang/ExpressionValidationVisitor.java b/data-store/src/main/java/org/lucares/pdb/datastore/lang/ExpressionValidationVisitor.java index 6b7a5ad..58f40eb 100644 --- a/data-store/src/main/java/org/lucares/pdb/datastore/lang/ExpressionValidationVisitor.java +++ b/data-store/src/main/java/org/lucares/pdb/datastore/lang/ExpressionValidationVisitor.java @@ -1,11 +1,17 @@ package org.lucares.pdb.datastore.lang; -import org.lucares.pdb.api.Tags; +import org.lucares.pdb.api.StringCompressor; import org.lucares.pdb.datastore.lang.Expression.InExpression; import org.lucares.pdb.datastore.lang.Expression.Property; public class ExpressionValidationVisitor extends IdentityExpressionVisitor { + private final StringCompressor stringCompressor; + + public ExpressionValidationVisitor(final StringCompressor stringCompressor) { + this.stringCompressor = stringCompressor; + } + @Override public Expression visit(final Property expression) { @@ -27,13 +33,13 @@ public class ExpressionValidationVisitor extends IdentityExpressionVisitor { } private void assertValueExists(final String value) { - if (Tags.STRING_COMPRESSOR.getIfPresent(value) < 0) { + if (stringCompressor.getIfPresent(value) < 0) { throw new UnkownTokenSyntaxException(value); } } - public static void validate(final Expression expression) { - expression.visit(new ExpressionValidationVisitor()); + public static void validate(final Expression expression, final StringCompressor stringCompressor) { + expression.visit(new ExpressionValidationVisitor(stringCompressor)); } } diff --git a/data-store/src/main/java/org/lucares/pdb/datastore/lang/NewProposerParser.java b/data-store/src/main/java/org/lucares/pdb/datastore/lang/NewProposerParser.java index 3604558..d53b96f 100644 --- a/data-store/src/main/java/org/lucares/pdb/datastore/lang/NewProposerParser.java +++ b/data-store/src/main/java/org/lucares/pdb/datastore/lang/NewProposerParser.java @@ -13,6 +13,7 @@ import org.lucares.pdb.api.DateTimeRange; import org.lucares.pdb.api.QueryConstants; import org.lucares.pdb.api.QueryWithCaretMarker; import org.lucares.pdb.api.QueryWithCaretMarker.ResultMode; +import org.lucares.pdb.api.StringCompressor; import org.lucares.pdb.datastore.Proposal; import org.lucares.pdb.datastore.internal.QueryCompletionIndex; import org.lucares.utils.CollectionUtils; @@ -34,8 +35,11 @@ public class NewProposerParser implements QueryConstants { private final QueryCompletionIndex queryCompletionIndex; - public NewProposerParser(final QueryCompletionIndex queryCompletionIndex) { + private final StringCompressor stringCompressor; + + public NewProposerParser(final QueryCompletionIndex queryCompletionIndex, final StringCompressor stringCompressor) { this.queryCompletionIndex = queryCompletionIndex; + this.stringCompressor = stringCompressor; } public List propose(final QueryWithCaretMarker query) { @@ -159,7 +163,7 @@ public class NewProposerParser implements QueryConstants { final String queryWithCaretMarker = query.getQueryWithCaretMarker(); // parse the query - final Expression expression = QueryLanguageParser.parse(queryWithCaretMarker); + final Expression expression = QueryLanguageParser.parse(queryWithCaretMarker, stringCompressor); // normalize it, so that we can use the queryCompletionIndex to search for // candidate values diff --git a/data-store/src/main/java/org/lucares/pdb/datastore/lang/QueryLanguageParser.java b/data-store/src/main/java/org/lucares/pdb/datastore/lang/QueryLanguageParser.java index 1815537..1b2bb11 100644 --- a/data-store/src/main/java/org/lucares/pdb/datastore/lang/QueryLanguageParser.java +++ b/data-store/src/main/java/org/lucares/pdb/datastore/lang/QueryLanguageParser.java @@ -1,9 +1,10 @@ package org.lucares.pdb.datastore.lang; import org.apache.commons.lang3.StringUtils; +import org.lucares.pdb.api.StringCompressor; public class QueryLanguageParser { - public static Expression parse(final String query) { + public static Expression parse(final String query, final StringCompressor stringCompressor) { final Expression result; if (StringUtils.isEmpty(query)) { @@ -12,7 +13,7 @@ public class QueryLanguageParser { final QueryLanguage lang = new QueryLanguage(); result = lang.parse(query); } - ExpressionValidationVisitor.validate(result); + ExpressionValidationVisitor.validate(result, stringCompressor); return result; } }