From 2a00d5a4c0877353d0e5fd46cda2bb8152e55487 Mon Sep 17 00:00:00 2001 From: vchernogorov Date: Thu, 7 Oct 2021 13:03:02 +0300 Subject: [PATCH 1/2] Create SearchBuilder mapping --- .../datatables/mapping/DataTablesInput.java | 6 ++++ .../datatables/mapping/DataTablesOutput.java | 6 ++++ .../jpa/datatables/mapping/SearchBuilder.java | 29 +++++++++++++++++++ .../QDataTablesRepositoryImpl.java | 5 ++++ .../repository/DataTablesRepositoryImpl.java | 4 +++ 5 files changed, 50 insertions(+) create mode 100644 src/main/java/org/springframework/data/jpa/datatables/mapping/SearchBuilder.java diff --git a/src/main/java/org/springframework/data/jpa/datatables/mapping/DataTablesInput.java b/src/main/java/org/springframework/data/jpa/datatables/mapping/DataTablesInput.java index 92e421f..0d0fc38 100644 --- a/src/main/java/org/springframework/data/jpa/datatables/mapping/DataTablesInput.java +++ b/src/main/java/org/springframework/data/jpa/datatables/mapping/DataTablesInput.java @@ -1,5 +1,6 @@ package org.springframework.data.jpa.datatables.mapping; +import com.fasterxml.jackson.annotation.JsonView; import lombok.Data; import javax.validation.constraints.Min; @@ -69,6 +70,11 @@ public class DataTablesInput { */ private Map> searchPanes; + /** + * Input for the SearchBuilder extension + */ + private SearchBuilder searchBuilder; + /** * * @return a {@link Map} of {@link Column} indexed by name diff --git a/src/main/java/org/springframework/data/jpa/datatables/mapping/DataTablesOutput.java b/src/main/java/org/springframework/data/jpa/datatables/mapping/DataTablesOutput.java index cb70a80..a1646fc 100644 --- a/src/main/java/org/springframework/data/jpa/datatables/mapping/DataTablesOutput.java +++ b/src/main/java/org/springframework/data/jpa/datatables/mapping/DataTablesOutput.java @@ -45,6 +45,12 @@ public class DataTablesOutput { @JsonView(View.class) private SearchPanes searchPanes; + /** + * Output for the SearchBuilder extension + */ + @JsonView(View.class) + private SearchBuilder searchBuilder; + /** * Optional: If an error occurs during the running of the server-side processing script, you can * inform the user of this error by passing back the error message to be displayed using this diff --git a/src/main/java/org/springframework/data/jpa/datatables/mapping/SearchBuilder.java b/src/main/java/org/springframework/data/jpa/datatables/mapping/SearchBuilder.java new file mode 100644 index 0000000..93e3178 --- /dev/null +++ b/src/main/java/org/springframework/data/jpa/datatables/mapping/SearchBuilder.java @@ -0,0 +1,29 @@ +package org.springframework.data.jpa.datatables.mapping; + +import lombok.AllArgsConstructor; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * Predefined Searches + */ +@Data +@AllArgsConstructor +public class SearchBuilder { + private List criteria; + private String logic; + + @Data + @AllArgsConstructor + public static class Criteria { + private String condition; + private String data; + private String origData; + private String type; + private List value; + private String logic; + private List criteria; + } +} diff --git a/src/main/java/org/springframework/data/jpa/datatables/qrepository/QDataTablesRepositoryImpl.java b/src/main/java/org/springframework/data/jpa/datatables/qrepository/QDataTablesRepositoryImpl.java index f71153a..bf4ea39 100644 --- a/src/main/java/org/springframework/data/jpa/datatables/qrepository/QDataTablesRepositoryImpl.java +++ b/src/main/java/org/springframework/data/jpa/datatables/qrepository/QDataTablesRepositoryImpl.java @@ -9,6 +9,7 @@ import org.springframework.data.jpa.datatables.PredicateBuilder; import org.springframework.data.jpa.datatables.mapping.DataTablesInput; import org.springframework.data.jpa.datatables.mapping.DataTablesOutput; +import org.springframework.data.jpa.datatables.mapping.SearchBuilder; import org.springframework.data.jpa.datatables.mapping.SearchPanes; import org.springframework.data.jpa.repository.support.JpaEntityInformation; import org.springframework.data.jpa.repository.support.QuerydslJpaRepository; @@ -101,6 +102,10 @@ public DataTablesOutput findAll(DataTablesInput input, Predicate addition if (input.getSearchPanes() != null) { output.setSearchPanes(computeSearchPanes(input, predicate)); } + + if (input.getSearchBuilder() != null) { + output.setSearchBuilder(input.getSearchBuilder()); + } } catch (Exception e) { output.setError(e.toString()); } diff --git a/src/main/java/org/springframework/data/jpa/datatables/repository/DataTablesRepositoryImpl.java b/src/main/java/org/springframework/data/jpa/datatables/repository/DataTablesRepositoryImpl.java index 0a5478b..588f9ac 100644 --- a/src/main/java/org/springframework/data/jpa/datatables/repository/DataTablesRepositoryImpl.java +++ b/src/main/java/org/springframework/data/jpa/datatables/repository/DataTablesRepositoryImpl.java @@ -86,6 +86,10 @@ public DataTablesOutput findAll(DataTablesInput input, if (input.getSearchPanes() != null) { output.setSearchPanes(computeSearchPanes(input, specification)); } + + if (input.getSearchBuilder() != null) { + output.setSearchBuilder(input.getSearchBuilder()); + } } catch (Exception e) { output.setError(e.toString()); } From 09dca46eb8db6ff79185463f84b98594625bfaac Mon Sep 17 00:00:00 2001 From: vchernogorov Date: Thu, 7 Oct 2021 14:02:12 +0300 Subject: [PATCH 2/2] Add NoArgConstructor to SearchBuilder --- .../data/jpa/datatables/mapping/DataTablesInput.java | 9 +++++++-- .../data/jpa/datatables/mapping/SearchBuilder.java | 3 +++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/springframework/data/jpa/datatables/mapping/DataTablesInput.java b/src/main/java/org/springframework/data/jpa/datatables/mapping/DataTablesInput.java index 0d0fc38..ce9be07 100644 --- a/src/main/java/org/springframework/data/jpa/datatables/mapping/DataTablesInput.java +++ b/src/main/java/org/springframework/data/jpa/datatables/mapping/DataTablesInput.java @@ -1,12 +1,17 @@ package org.springframework.data.jpa.datatables.mapping; -import com.fasterxml.jackson.annotation.JsonView; import lombok.Data; import javax.validation.constraints.Min; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; diff --git a/src/main/java/org/springframework/data/jpa/datatables/mapping/SearchBuilder.java b/src/main/java/org/springframework/data/jpa/datatables/mapping/SearchBuilder.java index 93e3178..9d0bcff 100644 --- a/src/main/java/org/springframework/data/jpa/datatables/mapping/SearchBuilder.java +++ b/src/main/java/org/springframework/data/jpa/datatables/mapping/SearchBuilder.java @@ -2,6 +2,7 @@ import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; import java.util.List; import java.util.Map; @@ -10,12 +11,14 @@ * Predefined Searches */ @Data +@NoArgsConstructor @AllArgsConstructor public class SearchBuilder { private List criteria; private String logic; @Data + @NoArgsConstructor @AllArgsConstructor public static class Criteria { private String condition;