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..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 @@ -5,7 +5,13 @@ 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; @@ -69,6 +75,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..9d0bcff --- /dev/null +++ b/src/main/java/org/springframework/data/jpa/datatables/mapping/SearchBuilder.java @@ -0,0 +1,32 @@ +package org.springframework.data.jpa.datatables.mapping; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; +import java.util.Map; + +/** + * Predefined Searches + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class SearchBuilder { + private List criteria; + private String logic; + + @Data + @NoArgsConstructor + @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()); }