DATACMNS-111 - Added query parser keywords StartingWith, EndingWith and Containing.
This commit is contained in:
@@ -175,14 +175,15 @@ public class Part {
|
||||
|
||||
BETWEEN(2, "Between"), IS_NOT_NULL(0, "IsNotNull", "NotNull"), IS_NULL(0, "IsNull", "Null"), LESS_THAN("LessThan"), LESS_THAN_EQUAL(
|
||||
"LessThanEqual"), GREATER_THAN("GreaterThan"), GREATER_THAN_EQUAL("GreaterThanEqual"), NOT_LIKE("NotLike"), LIKE(
|
||||
"Like"), NOT_IN("NotIn"), IN("In"), NEAR("Near"), WITHIN("Within"), REGEX("Regex"), EXISTS(0, "Exists"), TRUE(
|
||||
0, "IsTrue", "True"), FALSE(0, "IsFalse", "False"), NEGATING_SIMPLE_PROPERTY("Not"), SIMPLE_PROPERTY;
|
||||
"Like"), STARTING_WITH("StartingWith", "StartsWith"), ENDING_WITH("EndingWith", "EndsWith"), CONTAINING(
|
||||
"Containing", "Contains"), NOT_IN("NotIn"), IN("In"), NEAR("Near"), WITHIN("Within"), REGEX("Regex"), EXISTS(0,
|
||||
"Exists"), TRUE(0, "IsTrue", "True"), FALSE(0, "IsFalse", "False"), NEGATING_SIMPLE_PROPERTY("Not"), SIMPLE_PROPERTY;
|
||||
|
||||
// Need to list them again explicitly as the order is important
|
||||
// (esp. for IS_NULL, IS_NOT_NULL)
|
||||
private static final List<Part.Type> ALL = Arrays.asList(IS_NOT_NULL, IS_NULL, BETWEEN, LESS_THAN, LESS_THAN_EQUAL,
|
||||
GREATER_THAN, GREATER_THAN_EQUAL, NOT_LIKE, LIKE, NOT_IN, IN, NEAR, WITHIN, REGEX, EXISTS, TRUE, FALSE,
|
||||
NEGATING_SIMPLE_PROPERTY, SIMPLE_PROPERTY);
|
||||
GREATER_THAN, GREATER_THAN_EQUAL, NOT_LIKE, LIKE, STARTING_WITH, ENDING_WITH, CONTAINING, NOT_IN, IN, NEAR,
|
||||
WITHIN, REGEX, EXISTS, TRUE, FALSE, NEGATING_SIMPLE_PROPERTY, SIMPLE_PROPERTY);
|
||||
|
||||
private final List<String> keywords;
|
||||
private final int numberOfArguments;
|
||||
|
||||
@@ -290,6 +290,51 @@ public class PartTreeUnitTests {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @see DATACMNS-111
|
||||
*/
|
||||
@Test
|
||||
public void parsesStartingWithKeywordCorrectly() {
|
||||
|
||||
for (String source : Arrays.asList("firstnameStartsWith", "firstnameStartingWith")) {
|
||||
Part part = part(source);
|
||||
assertThat(part.getType(), is(Type.STARTING_WITH));
|
||||
assertThat(part.getProperty().toDotPath(), is("firstname"));
|
||||
assertThat(part.getNumberOfArguments(), is(1));
|
||||
assertThat(part.getParameterRequired(), is(true));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @see DATACMNS-111
|
||||
*/
|
||||
@Test
|
||||
public void parsesEndingWithKeywordCorrectly() {
|
||||
|
||||
for (String source : Arrays.asList("firstnameEndsWith", "firstnameEndingWith")) {
|
||||
Part part = part(source);
|
||||
assertThat(part.getType(), is(Type.ENDING_WITH));
|
||||
assertThat(part.getProperty().toDotPath(), is("firstname"));
|
||||
assertThat(part.getNumberOfArguments(), is(1));
|
||||
assertThat(part.getParameterRequired(), is(true));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @see DATACMNS-111
|
||||
*/
|
||||
@Test
|
||||
public void parsesContainingKeywordCorrectly() {
|
||||
|
||||
for (String source : Arrays.asList("firstnameContains", "firstnameContaining")) {
|
||||
Part part = part(source);
|
||||
assertThat(part.getType(), is(Type.CONTAINING));
|
||||
assertThat(part.getProperty().toDotPath(), is("firstname"));
|
||||
assertThat(part.getNumberOfArguments(), is(1));
|
||||
assertThat(part.getParameterRequired(), is(true));
|
||||
}
|
||||
}
|
||||
|
||||
private PartTree partTree(String source) {
|
||||
return new PartTree(source, User.class);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user