Skip to content

Commit 09968e0

Browse files
author
talhadilber
committed
Naming changed
1 parent 23e35cb commit 09968e0

34 files changed

+465
-437
lines changed

README.md

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,31 @@
11
# JPA - EXTENSION
22

33
This project look like QueryDsl but main purpuse is query creation with simple DTO (Pojo) objects. So we can simply ingrate with frontend application filters or somethings. Received query converted to Jpa Specification object and this Specification<Entity> executed on JpaSpecificationExecutor<Entity> repository.
4-
4+
5+
## TODO
6+
7+
+Namingleri duzenle.
8+
9+
- Genel Refactor.
10+
+Bug report. eger ayni joinden birden fazla istek atiliyorsa birden fazla kere inner join yapiliyor.
11+
-- DynamicQuery.builder() deyince Query DSL gelsin.
12+
- Serializable support et. Field convertion'u duzgun yap.
13+
- Entity Enumarated'larda hata aliyorduk sanki onu da duzelt.
14+
- SearchQuery'nin Select'siz versiyonunu yap.
15+
- ApplicationContextUtil kismina baska birsey dusun. => EntityManagerProvider diye Bean yap ve If Condition missing
16+
ekle. EntityManager Provide etsin.
17+
18+
+ POM dosyasindaki proje gereksinimi olan dependecyleri kaldir.
19+
+ POM da versiyon guncelle ve Spring Boot 2.7.18'de calisir durumda test et.
20+
21+
- Spring Boot 3.1.1 de calisir durumda test et.
22+
- Jar dosyasi olustur ve maven repository'e at.
23+
- Readme dosyasini duzenle.
24+
25+
## NEXT TODOs
26+
27+
- Policy ile yetkilendirme altyapisi kur ki db'de isteyen istedigi yere git gel yapmasin.
28+
529
```java
630

731
// Entity

src/main/java/com/beyt/annotation/EnableGenericSpecificationArgumentResolvers.java renamed to src/main/java/com/beyt/annotation/EnableDynamicQueryArgumentResolvers.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.beyt.config.ArgumentResolversInitConfig;
44
import com.beyt.resolver.CriteriaFilterArgumentResolver;
5-
import com.beyt.resolver.SearchQueryArgumentResolver;
5+
import com.beyt.resolver.DynamicQueryArgumentResolver;
66
import org.springframework.context.annotation.Import;
77

88
import java.lang.annotation.ElementType;
@@ -12,6 +12,6 @@
1212

1313
@Retention(RetentionPolicy.RUNTIME)
1414
@Target({ElementType.TYPE})
15-
@Import({ArgumentResolversInitConfig.class, CriteriaFilterArgumentResolver.class, SearchQueryArgumentResolver.class})
16-
public @interface EnableGenericSpecificationArgumentResolvers {
15+
@Import({ArgumentResolversInitConfig.class, CriteriaFilterArgumentResolver.class, DynamicQueryArgumentResolver.class})
16+
public @interface EnableDynamicQueryArgumentResolvers {
1717
}

src/main/java/com/beyt/config/ArgumentResolversInitConfig.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.beyt.config;
22

33
import com.beyt.resolver.CriteriaFilterArgumentResolver;
4-
import com.beyt.resolver.SearchQueryArgumentResolver;
4+
import com.beyt.resolver.DynamicQueryArgumentResolver;
55
import org.springframework.beans.factory.config.BeanDefinition;
66
import org.springframework.context.annotation.Configuration;
77
import org.springframework.context.annotation.Role;
@@ -15,16 +15,16 @@
1515
public class ArgumentResolversInitConfig implements WebMvcConfigurer {
1616

1717
private final CriteriaFilterArgumentResolver criteriaFilterArgumentResolver;
18-
private final SearchQueryArgumentResolver searchQueryArgumentResolver;
18+
private final DynamicQueryArgumentResolver dynamicQueryArgumentResolver;
1919

20-
public ArgumentResolversInitConfig(CriteriaFilterArgumentResolver criteriaFilterArgumentResolver, SearchQueryArgumentResolver searchQueryArgumentResolver) {
20+
public ArgumentResolversInitConfig(CriteriaFilterArgumentResolver criteriaFilterArgumentResolver, DynamicQueryArgumentResolver dynamicQueryArgumentResolver) {
2121
this.criteriaFilterArgumentResolver = criteriaFilterArgumentResolver;
22-
this.searchQueryArgumentResolver = searchQueryArgumentResolver;
22+
this.dynamicQueryArgumentResolver = dynamicQueryArgumentResolver;
2323
}
2424

2525
@Override
2626
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
2727
resolvers.add(criteriaFilterArgumentResolver);
28-
resolvers.add(searchQueryArgumentResolver);
28+
resolvers.add(dynamicQueryArgumentResolver);
2929
}
3030
}
Lines changed: 65 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,65 @@
1-
package com.beyt.dto;
2-
3-
import com.beyt.dto.enums.CriteriaType;
4-
import lombok.extern.slf4j.Slf4j;
5-
6-
import java.io.Serializable;
7-
import java.util.ArrayList;
8-
import java.util.Arrays;
9-
import java.util.Collection;
10-
import java.util.List;
11-
12-
/**
13-
* Created by tdilber at 11/18/2020
14-
*/
15-
@Slf4j
16-
public class CriteriaFilter extends ArrayList<Criteria> implements Serializable {
17-
18-
public static CriteriaFilter of(Criteria... criteria) {
19-
CriteriaFilter criteriaFilter = new CriteriaFilter();
20-
criteriaFilter.addAll(Arrays.asList(criteria));
21-
return criteriaFilter;
22-
}
23-
24-
public static CriteriaFilter of(Collection<Criteria> criteria) {
25-
CriteriaFilter criteriaFilter = new CriteriaFilter();
26-
criteriaFilter.addAll(criteria);
27-
return criteriaFilter;
28-
}
29-
30-
public List<Criteria> getCriteriaListByKeyAndOperation(String key, CriteriaType operation) {
31-
ArrayList<Criteria> criterias = new ArrayList<>();
32-
33-
for (Criteria criteria : this) {
34-
if (criteria.key.equalsIgnoreCase(key) && criteria.operation.equals(operation)) {
35-
criterias.add(criteria);
36-
}
37-
}
38-
39-
return criterias;
40-
}
41-
42-
43-
public List<Criteria> getCriteriaListByKey(String key) {
44-
ArrayList<Criteria> criterias = new ArrayList<>();
45-
46-
for (Criteria criteria : this) {
47-
if (criteria.key.equalsIgnoreCase(key)) {
48-
criterias.add(criteria);
49-
}
50-
}
51-
52-
return criterias;
53-
}
54-
55-
@Override
56-
public String toString() {
57-
StringBuilder result = new StringBuilder();
58-
59-
for (Criteria criteria : this) {
60-
result.append("{").append(criteria.toString()).append("}");
61-
}
62-
63-
return result.toString();
64-
}
65-
}
1+
package com.beyt.dto;
2+
3+
import com.beyt.dto.enums.CriteriaType;
4+
import lombok.extern.slf4j.Slf4j;
5+
6+
import java.io.Serializable;
7+
import java.util.ArrayList;
8+
import java.util.Arrays;
9+
import java.util.Collection;
10+
import java.util.List;
11+
12+
/**
13+
* Created by tdilber at 11/18/2020
14+
*/
15+
@Slf4j
16+
public class CriteriaList extends ArrayList<Criteria> implements Serializable {
17+
18+
public static CriteriaList of(Criteria... criteria) {
19+
CriteriaList criteriaList = new CriteriaList();
20+
criteriaList.addAll(Arrays.asList(criteria));
21+
return criteriaList;
22+
}
23+
24+
public static CriteriaList of(Collection<Criteria> criteria) {
25+
CriteriaList criteriaList = new CriteriaList();
26+
criteriaList.addAll(criteria);
27+
return criteriaList;
28+
}
29+
30+
public List<Criteria> getCriteriaListByKeyAndOperation(String key, CriteriaType operation) {
31+
ArrayList<Criteria> criterias = new ArrayList<>();
32+
33+
for (Criteria criteria : this) {
34+
if (criteria.key.equalsIgnoreCase(key) && criteria.operation.equals(operation)) {
35+
criterias.add(criteria);
36+
}
37+
}
38+
39+
return criterias;
40+
}
41+
42+
43+
public List<Criteria> getCriteriaListByKey(String key) {
44+
ArrayList<Criteria> criterias = new ArrayList<>();
45+
46+
for (Criteria criteria : this) {
47+
if (criteria.key.equalsIgnoreCase(key)) {
48+
criterias.add(criteria);
49+
}
50+
}
51+
52+
return criterias;
53+
}
54+
55+
@Override
56+
public String toString() {
57+
StringBuilder result = new StringBuilder();
58+
59+
for (Criteria criteria : this) {
60+
result.append("{").append(criteria.toString()).append("}");
61+
}
62+
63+
return result.toString();
64+
}
65+
}
Lines changed: 70 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,70 @@
1-
package com.beyt.dto;
2-
3-
import com.beyt.dto.enums.Order;
4-
import lombok.extern.slf4j.Slf4j;
5-
import org.springframework.data.util.Pair;
6-
7-
import java.util.ArrayList;
8-
import java.util.List;
9-
10-
/**
11-
* Created by tdilber at 30-Dec-20
12-
*/
13-
@Slf4j
14-
public class SearchQuery {
15-
16-
private boolean distinct = false;
17-
private Integer pageSize = null;
18-
private Integer pageNumber = null;
19-
private List<Pair<String, String>> select = new ArrayList<>();
20-
private List<Criteria> where = new CriteriaFilter();
21-
private List<Pair<String, Order>> orderBy = new ArrayList<>();
22-
23-
public boolean isDistinct() {
24-
return distinct;
25-
}
26-
27-
public void setDistinct(boolean distinct) {
28-
this.distinct = distinct;
29-
}
30-
31-
public List<Pair<String, String>> getSelect() {
32-
return select;
33-
}
34-
35-
public void setSelect(List<Pair<String, String>> select) {
36-
this.select = select;
37-
}
38-
39-
public List<Criteria> getWhere() {
40-
return where;
41-
}
42-
43-
public void setWhere(List<Criteria> where) {
44-
this.where = where;
45-
}
46-
47-
public List<Pair<String, Order>> getOrderBy() {
48-
return orderBy;
49-
}
50-
51-
public void setOrderBy(List<Pair<String, Order>> orderBy) {
52-
this.orderBy = orderBy;
53-
}
54-
55-
public Integer getPageSize() {
56-
return pageSize;
57-
}
58-
59-
public void setPageSize(Integer pageSize) {
60-
this.pageSize = pageSize;
61-
}
62-
63-
public Integer getPageNumber() {
64-
return pageNumber;
65-
}
66-
67-
public void setPageNumber(Integer pageNumber) {
68-
this.pageNumber = pageNumber;
69-
}
70-
}
1+
package com.beyt.dto;
2+
3+
import com.beyt.dto.enums.Order;
4+
import lombok.extern.slf4j.Slf4j;
5+
import org.springframework.data.util.Pair;
6+
7+
import java.util.ArrayList;
8+
import java.util.List;
9+
10+
/**
11+
* Created by tdilber at 30-Dec-20
12+
*/
13+
@Slf4j
14+
public class DynamicQuery {
15+
16+
private boolean distinct = false;
17+
private Integer pageSize = null;
18+
private Integer pageNumber = null;
19+
private List<Pair<String, String>> select = new ArrayList<>();
20+
private List<Criteria> where = new CriteriaList();
21+
private List<Pair<String, Order>> orderBy = new ArrayList<>();
22+
23+
public boolean isDistinct() {
24+
return distinct;
25+
}
26+
27+
public void setDistinct(boolean distinct) {
28+
this.distinct = distinct;
29+
}
30+
31+
public List<Pair<String, String>> getSelect() {
32+
return select;
33+
}
34+
35+
public void setSelect(List<Pair<String, String>> select) {
36+
this.select = select;
37+
}
38+
39+
public List<Criteria> getWhere() {
40+
return where;
41+
}
42+
43+
public void setWhere(List<Criteria> where) {
44+
this.where = where;
45+
}
46+
47+
public List<Pair<String, Order>> getOrderBy() {
48+
return orderBy;
49+
}
50+
51+
public void setOrderBy(List<Pair<String, Order>> orderBy) {
52+
this.orderBy = orderBy;
53+
}
54+
55+
public Integer getPageSize() {
56+
return pageSize;
57+
}
58+
59+
public void setPageSize(Integer pageSize) {
60+
this.pageSize = pageSize;
61+
}
62+
63+
public Integer getPageNumber() {
64+
return pageNumber;
65+
}
66+
67+
public void setPageNumber(Integer pageNumber) {
68+
this.pageNumber = pageNumber;
69+
}
70+
}

src/main/java/com/beyt/dto/IFetchPartiallyProcessor.java

Lines changed: 0 additions & 10 deletions
This file was deleted.

src/main/java/com/beyt/exception/GenericFilterNoAvailableValueException.java renamed to src/main/java/com/beyt/exception/DynamicQueryNoAvailableEnumException.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,14 @@
66
* Created by tdilber at 24-Aug-19
77
*/
88
@Slf4j
9-
public class GenericFilterNoAvailableValueException extends RuntimeException {
10-
public GenericFilterNoAvailableValueException(String errorMessage) {
9+
public class DynamicQueryNoAvailableEnumException extends RuntimeException {
10+
11+
public DynamicQueryNoAvailableEnumException(String errorMessage) {
1112
super(errorMessage);
1213
log.error(errorMessage, this);
1314
}
1415

15-
public GenericFilterNoAvailableValueException(String errorMessage, Throwable err) {
16+
public DynamicQueryNoAvailableEnumException(String errorMessage, Throwable err) {
1617
super(errorMessage, err);
1718
log.error(errorMessage, err);
1819
}

src/main/java/com/beyt/exception/GenericFilterNoAvailableOperationException.java renamed to src/main/java/com/beyt/exception/DynamicQueryNoAvailableOperationException.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66
* Created by tdilber at 24-Aug-19
77
*/
88
@Slf4j
9-
public class GenericFilterNoAvailableOperationException extends RuntimeException {
9+
public class DynamicQueryNoAvailableOperationException extends RuntimeException {
1010

11-
public GenericFilterNoAvailableOperationException(String errorMessage) {
11+
public DynamicQueryNoAvailableOperationException(String errorMessage) {
1212
super(errorMessage);
1313
log.error(errorMessage, this);
1414
}
1515

16-
public GenericFilterNoAvailableOperationException(String errorMessage, Throwable err) {
16+
public DynamicQueryNoAvailableOperationException(String errorMessage, Throwable err) {
1717
super(errorMessage, err);
1818
log.error(errorMessage, err);
1919
}

0 commit comments

Comments
 (0)