Updated code
This commit is contained in:
@@ -426,10 +426,7 @@ public class GepafinConstant {
|
|||||||
|
|
||||||
public static final String APPOINTMENT_CANNOT_BE_CREATED = "appointment.cannot.be.created";
|
public static final String APPOINTMENT_CANNOT_BE_CREATED = "appointment.cannot.be.created";
|
||||||
public static final String APPOINTMENT_NOT_CREATED = "appointment.not.created";
|
public static final String APPOINTMENT_NOT_CREATED = "appointment.not.created";
|
||||||
public static final String CONTAINS = "contains";
|
|
||||||
public static final String EQUALS = "equals";
|
|
||||||
public static final String STARTS_WITH = "starts_with";
|
|
||||||
public static final String ENDS_WITH = "ends_with";
|
|
||||||
public static final String CALL_TITLE = "callTitle";
|
public static final String CALL_TITLE = "callTitle";
|
||||||
public static final String CALL_ID="callId";
|
public static final String CALL_ID="callId";
|
||||||
public static final String CALL_END_DATE="callEndDate";
|
public static final String CALL_END_DATE="callEndDate";
|
||||||
@@ -440,8 +437,7 @@ public class GepafinConstant {
|
|||||||
public static final String CALL_END_TIME="callEndTime";
|
public static final String CALL_END_TIME="callEndTime";
|
||||||
public static final String END_TIME="endTime";
|
public static final String END_TIME="endTime";
|
||||||
public static final String UPDATED_DATE="updatedDate";
|
public static final String UPDATED_DATE="updatedDate";
|
||||||
public static final String BEFORE="before";
|
|
||||||
public static final String AFTER="after";
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1585,7 +1585,7 @@ public class ApplicationDao {
|
|||||||
String fieldName = entry.getKey();
|
String fieldName = entry.getKey();
|
||||||
FilterCriteria filterCriteria = entry.getValue();
|
FilterCriteria filterCriteria = entry.getValue();
|
||||||
Object value = filterCriteria.getValue();
|
Object value = filterCriteria.getValue();
|
||||||
String matchMode = filterCriteria.getMatchMode();
|
MatchModeEnum matchMode = filterCriteria.getMatchMode();
|
||||||
|
|
||||||
if (value != null && matchMode != null) {
|
if (value != null && matchMode != null) {
|
||||||
Path<?> fieldPath = getFieldPath(root, fieldName);
|
Path<?> fieldPath = getFieldPath(root, fieldName);
|
||||||
@@ -1599,47 +1599,51 @@ public class ApplicationDao {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void applyStringFilter(Path<?> fieldPath, CriteriaBuilder criteriaBuilder, List<Predicate> predicates, Object value, String matchMode) {
|
private void applyStringFilter(Path<?> fieldPath, CriteriaBuilder criteriaBuilder, List<Predicate> predicates, Object value, MatchModeEnum matchMode) {
|
||||||
if (value instanceof String) {
|
if (value instanceof String) {
|
||||||
String valueStr = (String) value;
|
String valueStr = (String) value;
|
||||||
if (fieldPath.getJavaType().equals(String.class)) {
|
if (fieldPath.getJavaType().equals(String.class)) {
|
||||||
switch (matchMode.toLowerCase()) {
|
MatchModeEnum mode = MatchModeEnum.valueOf(matchMode.getValue());
|
||||||
case GepafinConstant.CONTAINS ->
|
switch (mode) {
|
||||||
|
case CONTAINS ->
|
||||||
predicates.add(criteriaBuilder.like(criteriaBuilder.lower(fieldPath.as(String.class)), "%" + valueStr.toLowerCase() + "%"));
|
predicates.add(criteriaBuilder.like(criteriaBuilder.lower(fieldPath.as(String.class)), "%" + valueStr.toLowerCase() + "%"));
|
||||||
case GepafinConstant.EQUALS -> predicates.add(criteriaBuilder.equal(fieldPath, valueStr));
|
case EQUALS -> predicates.add(criteriaBuilder.equal(fieldPath, valueStr));
|
||||||
case GepafinConstant.STARTS_WITH ->
|
case STARTSWITH ->
|
||||||
predicates.add(criteriaBuilder.like(criteriaBuilder.lower(fieldPath.as(String.class)), valueStr.toLowerCase() + "%"));
|
predicates.add(criteriaBuilder.like(criteriaBuilder.lower(fieldPath.as(String.class)), valueStr.toLowerCase() + "%"));
|
||||||
case GepafinConstant.ENDS_WITH ->
|
case ENDSWITH ->
|
||||||
predicates.add(criteriaBuilder.like(criteriaBuilder.lower(fieldPath.as(String.class)), "%" + valueStr.toLowerCase()));
|
predicates.add(criteriaBuilder.like(criteriaBuilder.lower(fieldPath.as(String.class)), "%" + valueStr.toLowerCase()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void applyNumberFilter(Path<?> fieldPath, CriteriaBuilder criteriaBuilder, List<Predicate> predicates, Object value, String matchMode) {
|
private void applyNumberFilter(Path<?> fieldPath, CriteriaBuilder criteriaBuilder, List<Predicate> predicates, Object value, MatchModeEnum matchMode) {
|
||||||
if (Number.class.isAssignableFrom(fieldPath.getJavaType())) {
|
if (Number.class.isAssignableFrom(fieldPath.getJavaType())) {
|
||||||
Number numberValue = null;
|
Number numberValue = null;
|
||||||
if (value instanceof Number) {
|
if (value instanceof Number) {
|
||||||
numberValue = (Number) value;
|
numberValue = (Number) value;
|
||||||
}
|
}
|
||||||
switch (matchMode.toLowerCase()) {
|
MatchModeEnum mode = MatchModeEnum.valueOf(matchMode.getValue());
|
||||||
case GepafinConstant.EQUALS -> predicates.add(criteriaBuilder.equal(fieldPath, numberValue));
|
switch (mode) {
|
||||||
|
case EQUALS -> predicates.add(criteriaBuilder.equal(fieldPath, numberValue));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
private void applyDateFilter(Path<?> fieldPath, CriteriaBuilder criteriaBuilder, List<Predicate> predicates, Object value, String matchMode) {
|
private void applyDateFilter(Path<?> fieldPath, CriteriaBuilder criteriaBuilder, List<Predicate> predicates, Object value, MatchModeEnum matchMode) {
|
||||||
if (fieldPath.getJavaType().equals(LocalDateTime.class)) {
|
if (fieldPath.getJavaType().equals(LocalDateTime.class)) {
|
||||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
|
||||||
LocalDateTime dateValue = LocalDateTime.parse(value.toString(), formatter);
|
LocalDateTime dateValue = LocalDateTime.parse(value.toString(), formatter);
|
||||||
|
|
||||||
Expression<String> fieldAsString = criteriaBuilder.function("TO_CHAR", String.class, fieldPath, criteriaBuilder.literal("YYYY-MM-DD HH24:MI:SS.MS"));
|
Expression<String> fieldAsString = criteriaBuilder.function("TO_CHAR", String.class, fieldPath, criteriaBuilder.literal("YYYY-MM-DD HH24:MI:SS.MS"));
|
||||||
|
|
||||||
switch (matchMode.toLowerCase()) {
|
MatchModeEnum mode = MatchModeEnum.valueOf(matchMode.getValue());
|
||||||
case GepafinConstant.EQUALS -> predicates.add(criteriaBuilder.equal(fieldAsString, value.toString()));
|
switch (mode) {
|
||||||
case GepafinConstant.BEFORE -> predicates.add(criteriaBuilder.lessThan(fieldPath.as(LocalDateTime.class), dateValue));
|
|
||||||
case GepafinConstant.AFTER -> predicates.add(criteriaBuilder.greaterThan(fieldPath.as(LocalDateTime.class), dateValue));
|
case EQUALS -> predicates.add(criteriaBuilder.equal(fieldAsString, value.toString()));
|
||||||
|
case BEFORE -> predicates.add(criteriaBuilder.lessThan(fieldPath.as(LocalDateTime.class), dateValue));
|
||||||
|
case AFTER -> predicates.add(criteriaBuilder.greaterThan(fieldPath.as(LocalDateTime.class), dateValue));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package net.gepafin.tendermanagement.enums;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonValue;
|
||||||
|
|
||||||
|
|
||||||
|
public enum MatchModeEnum {
|
||||||
|
STARTSWITH("STARTSWITH"),
|
||||||
|
ENDSWITH("ENDSWITH"),
|
||||||
|
CONTAINS("CONTAINS"),
|
||||||
|
EQUALS("EQUALS"),
|
||||||
|
BEFORE("BEFORE"),
|
||||||
|
AFTER("AFTER"),
|
||||||
|
EXPIRED("EXPIRED");
|
||||||
|
|
||||||
|
private String value;
|
||||||
|
|
||||||
|
MatchModeEnum(String value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonValue
|
||||||
|
public String getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,10 +1,11 @@
|
|||||||
package net.gepafin.tendermanagement.model.request;
|
package net.gepafin.tendermanagement.model.request;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import net.gepafin.tendermanagement.enums.MatchModeEnum;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class FilterCriteria {
|
public class FilterCriteria {
|
||||||
|
|
||||||
private Object value;
|
private Object value;
|
||||||
private String matchMode;
|
private MatchModeEnum matchMode;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user