DATACMNS-111 - Added query parser keywords StartingWith, EndingWith and Containing.

This commit is contained in:
Oliver Gierke
2012-03-21 16:41:51 +01:00
parent 8e52d75ca9
commit b4d21008e3
2 changed files with 50 additions and 4 deletions

View File

@@ -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;

View File

@@ -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);
}