X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.db.layer0%2Fsrc%2Forg%2Fsimantics%2Fdb%2Flayer0%2Fgenericrelation%2FIndexQueries.java;h=212da3830a1decfaac2ef541ba0f0d5155070252;hb=68a9ec79344f44499f9a92c95ee81b8b052a22e7;hp=135c5ebc2a107b02d20923db0cdd0eda52f082a8;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/genericrelation/IndexQueries.java b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/genericrelation/IndexQueries.java index 135c5ebc2..212da3830 100644 --- a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/genericrelation/IndexQueries.java +++ b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/genericrelation/IndexQueries.java @@ -52,7 +52,7 @@ public class IndexQueries { // These characters are part of the query syntax and must be escaped if (c == '\\' || c == '+' || c == '-' || c == '!' || c == '(' || c == ')' || c == ':' || c == '^' || c == '[' || c == ']' || c == '\"' || c == '{' || c == '}' || c == '~' - || c == '|' || c == '&' || c == '/' || (escapeWildcards && (c == '*' || c == '?'))) { + || c == '|' || c == '&' || c == '/' || c == ' ' || (escapeWildcards && (c == '*' || c == '?'))) { sb.append('\\'); sb.append(c); lastWhitespace = false; @@ -95,7 +95,7 @@ public class IndexQueries { // These characters are part of the query syntax and must be escaped if (c == '\\' || c == '+' || c == '-' || c == '!' || c == '(' || c == ')' || c == ':' || c == '^' || c == '[' || c == ']' || c == '\"' || c == '{' || c == '}' || c == '~' - || c == '|' || c == '&' || c == '/' || (escapeWildcards && (c == '*' || c == '?'))) { + || c == '|' || c == '&' || c == '/' || c == ' ' || (escapeWildcards && (c == '*' || c == '?'))) { return true; } else if (Character.isWhitespace(c)) { lastWhitespace = true; @@ -113,8 +113,9 @@ public class IndexQueries { } private static final String[] RESERVED_WORDS = { - "AND", "and", - "OR", "or" + "AND", "\\AND", + "OR", "\\OR", + "NOT", "\\NOT", }; /** @@ -161,6 +162,14 @@ public class IndexQueries { StringBuilder sb = new StringBuilder(); return escapeTerm(field, term, escapeWildcards, sb).toString(); } + + public static String quoteTerm(String term) { + StringBuilder sb = new StringBuilder(); + sb.append("\""); + sb.append(term.replaceAll("(\"|\\\\)", "\\\\$0")); + sb.append("\""); + return sb.toString(); + } // public static void main(String[] args) { // System.out.println("esc: " + escape("AND01", true, true));