Skip to content

Commit

Permalink
#1189: criteria-geode backend toLowerCase/toUpperCase add parentheses
Browse files Browse the repository at this point in the history
  • Loading branch information
Garrett Lestingi authored and asereda-gs committed Jun 17, 2020
1 parent 7538110 commit 5893faf
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -115,9 +115,9 @@ private Oql unaryOperator(Call call) {
"Size should be == 1 for unary operator %s but was %s", op, args.size());

Expression arg0 = args.get(0);
String path = arg0.accept(this).oql();
if (op instanceof OptionalOperators) {
// use IS_DEFINED / IS_UNDEFINED functions
String path = arg0.accept(this).oql();
String expr;
if (op == OptionalOperators.IS_PRESENT) {
expr = String.format("is_defined(%s) AND %s != null", path, path);
Expand All @@ -126,9 +126,9 @@ private Oql unaryOperator(Call call) {
}
return oql(expr);
} else if (op == Operators.NOT) {
return oql("NOT (" + arg0.accept(this).oql() + ")");
} else if (op == IterableOperators.IS_EMPTY || op == StringOperators.TO_LOWER_CASE || op == StringOperators.TO_UPPER_CASE) {
return oql(arg0.accept(this).oql() + "." + toMethodName(op));
return oql(String.format("NOT (%s)", path));
} else if (op == IterableOperators.IS_EMPTY || op == StringOperators.TO_LOWER_CASE || op == StringOperators.TO_UPPER_CASE) {
return oql(String.format("%s.%s()", path, toMethodName(op)));
}

throw new UnsupportedOperationException("Unknown unary operator " + call);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,8 @@ void filterIn() {

@Test
void filterCollection() {
oql(person.interests.isEmpty()).is("interests.isEmpty");
oql(person.interests.notEmpty()).is("NOT (interests.isEmpty)");
oql(person.interests.isEmpty()).is("interests.isEmpty()");
oql(person.interests.notEmpty()).is("NOT (interests.isEmpty())");
oql(person.interests.hasSize(1)).is("interests.size = $1");
oql(person.interests.contains("OSS")).is("interests.contains($1)");
}
Expand Down Expand Up @@ -114,13 +114,13 @@ void filterConjunctionWithDisjunction() {

@Test
void upperLower() {
oql(person.fullName.toUpperCase().is("A")).is("fullName.toUpperCase = $1");
oql(person.fullName.toLowerCase().is("A")).is("fullName.toLowerCase = $1");
oql(person.fullName.toLowerCase().isNot("A")).is("fullName.toLowerCase != $1");
oql(person.fullName.toLowerCase().in(Arrays.asList("a", "b"))).is("fullName.toLowerCase IN $1");
oql(person.fullName.toLowerCase().notIn(Arrays.asList("a", "b"))).is("NOT (fullName.toLowerCase IN $1)");
oql(person.fullName.toLowerCase().toUpperCase().is("A")).is("fullName.toLowerCase.toUpperCase = $1");
oql(person.fullName.toLowerCase().endsWith("A")).is("fullName.toLowerCase.endsWith($1)");
oql(person.fullName.toUpperCase().is("A")).is("fullName.toUpperCase() = $1");
oql(person.fullName.toLowerCase().is("A")).is("fullName.toLowerCase() = $1");
oql(person.fullName.toLowerCase().isNot("A")).is("fullName.toLowerCase() != $1");
oql(person.fullName.toLowerCase().in(Arrays.asList("a", "b"))).is("fullName.toLowerCase() IN $1");
oql(person.fullName.toLowerCase().notIn(Arrays.asList("a", "b"))).is("NOT (fullName.toLowerCase() IN $1)");
oql(person.fullName.toLowerCase().toUpperCase().is("A")).is("fullName.toLowerCase().toUpperCase() = $1");
oql(person.fullName.toLowerCase().endsWith("A")).is("fullName.toLowerCase().endsWith($1)");
}


Expand Down Expand Up @@ -149,13 +149,13 @@ void filter() {

@Test
void upperLower() {
oql(person.fullName.toUpperCase().is("A")).is("fullName.toUpperCase = 'A'");
oql(person.fullName.toLowerCase().is("A")).is("fullName.toLowerCase = 'A'");
oql(person.fullName.toLowerCase().isNot("A")).is("fullName.toLowerCase != 'A'");
oql(person.fullName.toLowerCase().in(Arrays.asList("a", "b"))).is("fullName.toLowerCase IN SET('a', 'b')");
oql(person.fullName.toLowerCase().notIn(Arrays.asList("a", "b"))).is("NOT (fullName.toLowerCase IN SET('a', 'b'))");
oql(person.fullName.toLowerCase().toUpperCase().is("A")).is("fullName.toLowerCase.toUpperCase = 'A'");
oql(person.fullName.toLowerCase().endsWith("A")).is("fullName.toLowerCase.endsWith('A')");
oql(person.fullName.toUpperCase().is("A")).is("fullName.toUpperCase() = 'A'");
oql(person.fullName.toLowerCase().is("A")).is("fullName.toLowerCase() = 'A'");
oql(person.fullName.toLowerCase().isNot("A")).is("fullName.toLowerCase() != 'A'");
oql(person.fullName.toLowerCase().in(Arrays.asList("a", "b"))).is("fullName.toLowerCase() IN SET('a', 'b')");
oql(person.fullName.toLowerCase().notIn(Arrays.asList("a", "b"))).is("NOT (fullName.toLowerCase() IN SET('a', 'b'))");
oql(person.fullName.toLowerCase().toUpperCase().is("A")).is("fullName.toLowerCase().toUpperCase() = 'A'");
oql(person.fullName.toLowerCase().endsWith("A")).is("fullName.toLowerCase().endsWith('A')");
}

@Test
Expand Down Expand Up @@ -198,8 +198,8 @@ void filterIn() {

@Test
void filterCollection() {
oql(person.interests.isEmpty()).is("interests.isEmpty");
oql(person.interests.notEmpty()).is("NOT (interests.isEmpty)");
oql(person.interests.isEmpty()).is("interests.isEmpty()");
oql(person.interests.notEmpty()).is("NOT (interests.isEmpty())");
oql(person.interests.hasSize(1)).is("interests.size = 1");
oql(person.interests.contains("OSS")).is("interests.contains('OSS')");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,16 +131,16 @@ void pathNaming() {
@Test
void upperLower() {
check(generate(person.fullName.toLowerCase().is("a")))
.is("SELECT * FROM /myRegion WHERE fullName.toLowerCase = $1");
.is("SELECT * FROM /myRegion WHERE fullName.toLowerCase() = $1");

check(generate(Query.of(Person.class).withFilter(toExpression(person.fullName.toUpperCase().is("A")))))
.is("SELECT * FROM /myRegion WHERE fullName.toUpperCase = $1");
.is("SELECT * FROM /myRegion WHERE fullName.toUpperCase() = $1");

check(generate(Query.of(Person.class).withFilter(toExpression(person.fullName.toUpperCase().toLowerCase().is("A")))))
.is("SELECT * FROM /myRegion WHERE fullName.toUpperCase.toLowerCase = $1");
.is("SELECT * FROM /myRegion WHERE fullName.toUpperCase().toLowerCase() = $1");

check(generate(Query.of(Person.class).withFilter(toExpression(person.fullName.toUpperCase().toLowerCase().toUpperCase().is("A")))))
.is("SELECT * FROM /myRegion WHERE fullName.toUpperCase.toLowerCase.toUpperCase = $1");
.is("SELECT * FROM /myRegion WHERE fullName.toUpperCase().toLowerCase().toUpperCase() = $1");

}

Expand Down

0 comments on commit 5893faf

Please sign in to comment.