Skip to content

Commit

Permalink
Merge pull request #227 from croz-ltd/feature_addInLowerOperator
Browse files Browse the repository at this point in the history
Add lower in operator to enable searching by lower collection values
  • Loading branch information
jzrilic authored Feb 17, 2025
2 parents 8ca82bb + 4d9205b commit 84434a8
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import jakarta.persistence.criteria.Path;
import jakarta.persistence.criteria.Predicate;
import java.util.Collection;
import java.util.Locale;
import java.util.Objects;

// TODO check if other operators are required
Expand Down Expand Up @@ -95,6 +96,17 @@ public Predicate asPredicate(CriteriaBuilder criteriaBuilder, Path<?> path, Obje

((Collection<?>) value).forEach(inClause::value);

return inClause;
}
},

LOWER_IN {
@Override
public Predicate asPredicate(CriteriaBuilder criteriaBuilder, Path<?> path, Object value) {
CriteriaBuilder.In<String> inClause = criteriaBuilder.in(criteriaBuilder.lower((Expression<String>) path));

((Collection<?>) value).forEach(item -> inClause.value(((String) item).toLowerCase(Locale.ROOT)));

return inClause;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -601,6 +601,24 @@ void shouldSupportSearchingByPropertyList() {
assertThat(results).hasSize(2);
}

@Test
void shouldSupportSearchingByPropertyListUsingLowerOperator() {
// given
TestEntitySearchRequest request = new TestEntitySearchRequest(null);
request.setNameSearchList(List.of("firsT1", "First2"));

SearchConfiguration<TestEntity, TestEntity, TestEntitySearchRequest> searchConfiguration = SearchConfiguration.<TestEntity, TestEntity, TestEntitySearchRequest>builder()
.searchOperatorOverrideList(List.of(SearchOperatorOverride.forPath("name", DefaultSearchOperator.LOWER_IN)))
.build();


// when
List<TestEntity> results = executeQuery(request, searchConfiguration);

// then
assertThat(results).hasSize(2);
}

@Test
void shouldIgnoreEmptyCollectionWhenSearching() {
// given
Expand Down

0 comments on commit 84434a8

Please sign in to comment.