Skip to content

Commit 0eea3cf

Browse files
committed
Modify utils
1 parent d783c0d commit 0eea3cf

File tree

2 files changed

+48
-8
lines changed

2 files changed

+48
-8
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package app.common.utils;
2+
3+
import com.fasterxml.jackson.databind.ObjectMapper;
4+
import org.slf4j.Logger;
5+
import org.slf4j.LoggerFactory;
6+
7+
import java.io.IOException;
8+
9+
public class JsonUtils {
10+
11+
private static final Logger LOG = LoggerFactory.getLogger(SearchUtils.class);
12+
private static final ObjectMapper MAPPER = new ObjectMapper();
13+
14+
public static <T> T parse(String jsonSearchCriteriaString, Class<T> searchCriteriaClass) {
15+
T searchCriteria = null;
16+
17+
try {
18+
searchCriteria = MAPPER.readValue(jsonSearchCriteriaString, searchCriteriaClass);
19+
} catch (IOException e) {
20+
LOG.info("Something went wrong while parsing stringified JSON", e);
21+
}
22+
23+
return searchCriteria;
24+
}
25+
}

src/main/java/app/common/utils/SearchUtils.java

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,18 @@
44
import app.common.search.PageSearchResult;
55
import app.common.search.SearchRequest;
66
import com.fasterxml.jackson.databind.ObjectMapper;
7+
import com.querydsl.core.types.Order;
8+
import com.querydsl.core.types.OrderSpecifier;
9+
import com.querydsl.core.types.Path;
710
import org.apache.commons.lang3.StringUtils;
811
import org.slf4j.Logger;
912
import org.slf4j.LoggerFactory;
1013
import org.springframework.data.domain.*;
1114

1215
import java.io.IOException;
16+
import java.util.HashMap;
1317
import java.util.List;
18+
import java.util.Map;
1419

1520
public class SearchUtils {
1621

@@ -34,7 +39,7 @@ public static <T extends BaseSearchCriteria> T createSearchCriteria(SearchReques
3439
: "{}";
3540

3641
// Create search criteria object based on given stringified JSON
37-
T searchCriteria = parseJson(searchCriteriaString, searchCriteriaClass);
42+
T searchCriteria = JsonUtils.parse(searchCriteriaString, searchCriteriaClass);
3843

3944
// Zero indexed page
4045
searchCriteria.setPageIndex(searchRequest.getPageIndex() - 1);
@@ -65,16 +70,26 @@ public static <T> Page<T> pageOf(SearchRequest searchRequest, PageSearchResult<T
6570
return new PageImpl<>(data, pageable, totalRows);
6671
}
6772

68-
private static <T> T parseJson(String jsonSearchCriteriaString, Class<T> searchCriteriaClass) {
69-
T searchCriteria = null;
73+
public static OrderSpecifier<?> orderSpecifierOf(BaseSearchCriteria criteria, HashMap<String, Path> orderMap, String defaultOrderBy) {
74+
// Specify order direction
75+
Order orderDirection = (criteria.getOrderAsc() == null) || (criteria.getOrderAsc().equals(Boolean.TRUE))
76+
? Order.ASC
77+
: Order.DESC;
7078

71-
try {
72-
searchCriteria = MAPPER.readValue(jsonSearchCriteriaString, searchCriteriaClass);
73-
} catch (IOException e) {
74-
LOG.info("Something went wrong while parsing stringified JSON", e);
79+
// Specify order field name
80+
if(StringUtils.isBlank(criteria.getOrderBy()) && criteria.getOrderBy() == null) {
81+
criteria.setOrderBy(defaultOrderBy);
7582
}
7683

77-
return searchCriteria;
84+
// Specify order field path
85+
Path orderPath = null;
86+
for(Map.Entry entry : orderMap.entrySet()) {
87+
if(entry.getKey().equals(criteria.getOrderBy())) {
88+
orderPath = (Path) entry.getValue();
89+
}
90+
}
91+
92+
return new OrderSpecifier(orderDirection, orderPath);
7893
}
7994

8095
}

0 commit comments

Comments
 (0)