RSQLUtility : convert query to lower case before parsing

Signed-off-by: asharani-murugesh <asharani.murugesh@in.bosch.com>
This commit is contained in:
asharani-murugesh
2016-02-15 10:38:30 +01:00
parent 59fb97fea2
commit 158a9cfa20
4 changed files with 17 additions and 15 deletions

View File

@@ -205,7 +205,7 @@ public class TargetManagement {
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET) @PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
public Slice<Target> findTargetsAll(@NotNull final TargetFilterQuery targetFilterQuery, public Slice<Target> findTargetsAll(@NotNull final TargetFilterQuery targetFilterQuery,
@NotNull final Pageable pageable) { @NotNull final Pageable pageable) {
return findTargetsAll(RSQLUtility.parse(targetFilterQuery.getQuery().toLowerCase(), TargetFields.class), pageable); return findTargetsAll(RSQLUtility.parse(targetFilterQuery.getQuery(), TargetFields.class), pageable);
} }
/** /**
@@ -219,7 +219,7 @@ public class TargetManagement {
*/ */
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET) @PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
public Slice<Target> findTargetsAll(@NotNull final String targetFilterQuery, @NotNull final Pageable pageable) { public Slice<Target> findTargetsAll(@NotNull final String targetFilterQuery, @NotNull final Pageable pageable) {
return findTargetsAll(RSQLUtility.parse(targetFilterQuery.toLowerCase(), TargetFields.class), pageable); return findTargetsAll(RSQLUtility.parse(targetFilterQuery, TargetFields.class), pageable);
} }
/** /**
@@ -883,7 +883,7 @@ public class TargetManagement {
targetRoot.get(Target_.controllerId), targetRoot.get(Target_.name), targetRoot.get(Target_.controllerId), targetRoot.get(Target_.name),
targetRoot.get(pageRequest.getSort().iterator().next().getProperty())); targetRoot.get(pageRequest.getSort().iterator().next().getProperty()));
final Specification<Target> spec = RSQLUtility.parse(targetFilterQuery.getQuery().toLowerCase(), TargetFields.class); final Specification<Target> spec = RSQLUtility.parse(targetFilterQuery.getQuery(), TargetFields.class);
final List<Specification<Target>> specList = new ArrayList<>(); final List<Specification<Target>> specList = new ArrayList<>();
specList.add(spec); specList.add(spec);
@@ -1057,7 +1057,7 @@ public class TargetManagement {
*/ */
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET) @PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
public Long countTargetByTargetFilterQuery(@NotNull final TargetFilterQuery targetFilterQuery) { public Long countTargetByTargetFilterQuery(@NotNull final TargetFilterQuery targetFilterQuery) {
final Specification<Target> specs = RSQLUtility.parse(targetFilterQuery.getQuery().toLowerCase(), TargetFields.class); final Specification<Target> specs = RSQLUtility.parse(targetFilterQuery.getQuery(), TargetFields.class);
return targetRepository.count(specs); return targetRepository.count(specs);
} }
@@ -1070,7 +1070,7 @@ public class TargetManagement {
*/ */
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET) @PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
public Long countTargetByTargetFilterQuery(@NotNull final String targetFilterQuery) { public Long countTargetByTargetFilterQuery(@NotNull final String targetFilterQuery) {
final Specification<Target> specs = RSQLUtility.parse(targetFilterQuery.toLowerCase(), TargetFields.class); final Specification<Target> specs = RSQLUtility.parse(targetFilterQuery, TargetFields.class);
return targetRepository.count(specs); return targetRepository.count(specs);
} }

View File

@@ -18,6 +18,7 @@ import java.util.stream.Collectors;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Expression;
import javax.persistence.criteria.MapJoin; import javax.persistence.criteria.MapJoin;
import javax.persistence.criteria.Path; import javax.persistence.criteria.Path;
import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Predicate;
@@ -101,7 +102,7 @@ public final class RSQLUtility {
*/ */
public static <A extends Enum<A> & FieldNameProvider, T> Specification<T> parse(final String rsql, public static <A extends Enum<A> & FieldNameProvider, T> Specification<T> parse(final String rsql,
final Class<A> fieldNameProvider) { final Class<A> fieldNameProvider) {
return new RSQLSpecification<>(rsql, fieldNameProvider); return new RSQLSpecification<>(rsql.toLowerCase(), fieldNameProvider);
} }
/** /**
@@ -507,7 +508,8 @@ public final class RSQLUtility {
return fieldPath.get(enumField.getValueFieldName()); return fieldPath.get(enumField.getValueFieldName());
} }
private Predicate mapToMapPredicate(final ComparisonNode node, final Path<Object> fieldPath, @SuppressWarnings("unchecked")
private Predicate mapToMapPredicate(final ComparisonNode node, final Path<Object> fieldPath,
final A enumField) { final A enumField) {
if (!enumField.isMap()) { if (!enumField.isMap()) {
return null; return null;
@@ -515,10 +517,11 @@ public final class RSQLUtility {
final String[] graph = node.getSelector().split("\\" + FieldNameProvider.SUB_ATTRIBUTE_SEPERATOR); final String[] graph = node.getSelector().split("\\" + FieldNameProvider.SUB_ATTRIBUTE_SEPERATOR);
final String keyValue = graph[graph.length - 1]; final String keyValue = graph[graph.length - 1];
if (fieldPath instanceof MapJoin) { if (fieldPath instanceof MapJoin) {
return cb.equal(((MapJoin<?, ?, ?>) fieldPath).key(), keyValue); //Currently we support only string key .So below cast is safe.
return cb.equal(cb.upper((Expression<String>) (((MapJoin<?, ?, ?>) fieldPath).key())), keyValue.toUpperCase());
} }
return cb.equal(fieldPath.get(enumField.getKeyFieldName()), keyValue); return cb.equal(cb.upper(fieldPath.get(enumField.getKeyFieldName())), keyValue.toUpperCase());
} }
private Predicate getEqualToPredicate(final Object transformedValue, final Path<Object> fieldPath) { private Predicate getEqualToPredicate(final Object transformedValue, final Path<Object> fieldPath) {

View File

@@ -348,9 +348,8 @@ public class CreateOrUpdateFilterHeader extends VerticalLayout implements Button
} }
} }
private void onQueryChange(final String text) { private void onQueryChange(final String input) {
if (!Strings.isNullOrEmpty(text)) { if (!Strings.isNullOrEmpty(input)) {
final String input = text.toLowerCase();
final ValidationResult validationResult = FilterQueryValidation.getExpectedTokens(input); final ValidationResult validationResult = FilterQueryValidation.getExpectedTokens(input);
if (!validationResult.getIsValidationFailed()) { if (!validationResult.getIsValidationFailed()) {
filterManagementUIState.setFilterQueryValue(input); filterManagementUIState.setFilterQueryValue(input);
@@ -369,7 +368,7 @@ public class CreateOrUpdateFilterHeader extends VerticalLayout implements Button
filterManagementUIState.setFilterQueryValue(null); filterManagementUIState.setFilterQueryValue(null);
filterManagementUIState.setIsFilterByInvalidFilterQuery(Boolean.TRUE); filterManagementUIState.setIsFilterByInvalidFilterQuery(Boolean.TRUE);
} }
queryTextField.setValue(text); queryTextField.setValue(input);
} }
private void enableDisableSaveButton(final boolean validationFailed, final String query) { private void enableDisableSaveButton(final boolean validationFailed, final String query) {

View File

@@ -111,7 +111,7 @@ public class CreateOrUpdateFilterTable extends Table {
filterManagementUIState.setFilterQueryValue(null); filterManagementUIState.setFilterQueryValue(null);
} else { } else {
filterManagementUIState.getTfQuery().ifPresent( filterManagementUIState.getTfQuery().ifPresent(
value -> filterManagementUIState.setFilterQueryValue(value.getQuery().toLowerCase())); value -> filterManagementUIState.setFilterQueryValue(value.getQuery()));
} }
} }