Skip to content

Commit

Permalink
2.0.6:
Browse files Browse the repository at this point in the history
- fix escape separator without multiple values
  • Loading branch information
biagio committed Jul 2, 2024
1 parent 2bafafc commit d27c1e3
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 5 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,13 +107,13 @@ curl -X POST -H "Content-type: application/json" -d '{
<dependency>
<groupId>app.tozzi</groupId>
<artifactId>jpa-search-helper</artifactId>
<version>2.0.5</version>
<version>2.0.6</version>
</dependency>
```

#### Gradle
```
implementation 'app.tozzi:jpa-search-helper:2.0.5'
implementation 'app.tozzi:jpa-search-helper:2.0.6'
```

## Usage
Expand Down
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ plugins {
}

group = 'app.tozzi'
version = '2.0.5'
version = '2.0.6'

java {
sourceCompatibility = '17'
Expand Down Expand Up @@ -57,7 +57,7 @@ publishing {
maven(MavenPublication) {
group = 'app.tozzi'
artifactId = 'jpa-search-helper'
version = "2.0.5"
version = "2.0.6"
from components.java
pom {
name = 'JPA Search Helper'
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/app/tozzi/util/GenericUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ public static boolean containsSeparator(String string, String separator, String
return escapeSeparatorChar != null ? Pattern.compile("(?<!" + Pattern.quote(escapeSeparatorChar) + ")" + Pattern.quote(separator)).matcher(string).find() : string.contains(separator);
}

public static boolean containsSeparatorWithEscape(String string, String separator, String escapeSeparatorChar) {
return string.contains(escapeSeparatorChar + separator);
}

public static Integer loadInt(String value, int defaultInt) {
try {
return Integer.parseInt(value);
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/app/tozzi/util/JPASearchUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,10 @@ public static JPASearchInput toObject(Map<String, String> filters,
filter = new JPASearchInput.FilterMultipleValues();
((JPASearchInput.FilterMultipleValues) filter).setValues(new ArrayList<>(GenericUtils.split(e.getValue(), SEPARATOR, ESCAPE_SEPARATOR_CHAR)));

} else if (GenericUtils.containsSeparatorWithEscape(e.getValue(), SEPARATOR, ESCAPE_SEPARATOR_CHAR)) {
filter = new JPASearchInput.FilterSingleValue();
((JPASearchInput.FilterSingleValue) filter).setValue(e.getValue().replace(ESCAPE_SEPARATOR_CHAR, ""));

} else {
filter = new JPASearchInput.FilterSingleValue();
((JPASearchInput.FilterSingleValue) filter).setValue(e.getValue());
Expand Down
4 changes: 3 additions & 1 deletion src/test/java/app/tozzi/util/JPASearchUtilsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -99,14 +99,15 @@ public void filtersMapToInputObjectTest() {
assertEquals("and", input.getFilter().getOperator());
assertNotNull(input.getFilter().getFilters());
assertFalse(input.getFilter().getFilters().isEmpty());
assertEquals(16, input.getFilter().getFilters().size());
assertEquals(17, input.getFilter().getFilters().size());
assertTrue(input.getFilter().getFilters().stream().anyMatch(f -> f instanceof JPASearchInput.FilterSingleValue fsv && fsv.getKey().equals("id") && fsv.getOperator().equals("eq") && fsv.getValue().equals(filters.get("id_eq")) && fsv.getOptions() == null));
assertTrue(input.getFilter().getFilters().stream().anyMatch(f -> f instanceof JPASearchInput.FilterSingleValue fsv && fsv.getKey().equals("stringOne") && fsv.getOperator().equals("contains") && fsv.getValue().equals(filters.get("stringOne_contains")) && fsv.getOptions() == null));
assertTrue(input.getFilter().getFilters().stream().anyMatch(f -> f instanceof JPASearchInput.FilterSingleValue fsv && fsv.getKey().equals("stringThree") && fsv.getOperator().equals("startsWith") && fsv.getValue().equals(filters.get("stringThree_startsWith#i")) && fsv.getOptions() != null && fsv.getOptions().isIgnoreCase()));
assertTrue(input.getFilter().getFilters().stream().anyMatch(f -> f instanceof JPASearchInput.FilterSingleValue fsv && fsv.getKey().equals("stringFalse") && fsv.getOperator().equals("eq") && fsv.getValue().equals(filters.get("stringFalse_eq#n")) && fsv.getOptions() != null && fsv.getOptions().isNegate()));
assertTrue(input.getFilter().getFilters().stream().anyMatch(f -> f instanceof JPASearchInput.FilterMultipleValues fsv && fsv.getKey().equals("stringTwo") && fsv.getOperator().equals("in") && fsv.getValues().contains("test1") && fsv.getValues().contains("test2,test3")));
assertTrue(input.getFilter().getFilters().stream().anyMatch(f -> f instanceof JPASearchInput.FilterMultipleValues fsv && fsv.getKey().equals("primitiveFloat") && fsv.getOperator().equals("between") && fsv.getValues().contains("1.001") && fsv.getValues().contains("1.002")));
assertTrue(input.getFilter().getFilters().stream().anyMatch(f -> f instanceof JPASearchInput.FilterSingleValue fsv && fsv.getKey().equals("searchMeAgain") && fsv.getOperator().equals("eq") && fsv.getValue().equals(filters.get("searchMeAgain_eq#i#n")) && fsv.getOptions() != null && fsv.getOptions().isNegate() && fsv.getOptions().isIgnoreCase()));
assertTrue(input.getFilter().getFilters().stream().anyMatch(f -> f instanceof JPASearchInput.FilterSingleValue fsv && fsv.getKey().equals("stringTwo") && fsv.getOperator().equals("eq") && fsv.getValue().equals("Via Roma,1")));
}

public static Map<String, String> generateRandomMap() {
Expand All @@ -127,6 +128,7 @@ public static Map<String, String> generateRandomMap() {
resultMap.put("wrapperFloat_null", "true");
resultMap.put("searchMe_endsWith", String.valueOf(generateRandomValue(String.class)));
resultMap.put("searchMeAgain_eq#i#n", String.valueOf(generateRandomValue(String.class)));
resultMap.put("stringTwo_eq", "Via Roma/,1");
return resultMap;
}

Expand Down

0 comments on commit d27c1e3

Please sign in to comment.