Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
refactor: update switch structure
  • Loading branch information
LucJosin committed Jun 22, 2024
commit 55f9372f97c640ae40915f5c9e6b32960f5a0f99
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,11 @@
import com.lucasjosino.hawapi.filters.base.BaseFilter;
import com.lucasjosino.hawapi.filters.base.BaseTranslationFilter;
import com.lucasjosino.hawapi.models.base.BaseModel;
import jakarta.persistence.criteria.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.jpa.domain.Specification;

import jakarta.persistence.criteria.*;

import java.lang.reflect.Field;
import java.time.LocalDate;
import java.util.ArrayList;
Expand Down Expand Up @@ -71,8 +70,8 @@ public Specification<T> withTranslation(String language) {
// Add translation language filter.
return builder.and(builder.equal(translation.get("language"), language));
} catch (Exception exception) {
String message = "Something went wrong while trying to build specification";
log.error(message + ": {}", exception.getMessage());
String message = "Something went wrong while creating specification with translation";
log.error("{}: {}", message, exception.getMessage());
throw new InternalServerErrorException(message, exception);
}
};
Expand Down Expand Up @@ -141,7 +140,7 @@ public Predicate toPredicate(Root<T> root, CriteriaQuery<?> query, CriteriaBuild
}
} catch (Exception exception) {
String message = "Something went wrong while trying to build specification";
log.error(message + ": {}", exception.getMessage());
log.error("{}: {}", message, exception.getMessage());
throw new InternalServerErrorException(message, exception);
}

Expand Down Expand Up @@ -241,31 +240,19 @@ private <Y extends Comparable<? super Y>> Predicate createPredicate(
String value = fieldValue.substring(operator.getValue().length());

log.debug("Predicate type '{}' defined with '{}' and value '{}'", operator, operator.getValue(), value);
switch (operator) {
case LIKE:
return builder.like(expression, "%" + value + "%");
case NOT_LIKE:
return builder.notLike(expression, "%" + value + "%");
case BETWEEN:
return createBetweenPredicate(expression, fieldValue, fieldType);
case NOT_IN:
return createInPredicate(expression, value, fieldType, false);
case IN:
return createInPredicate(expression, value, fieldType, true);
case GREATER_THAN:
return builder.greaterThan(expression, (Y) value);
case LESS_THAN:
return builder.lessThan(expression, (Y) value);
case GREATER_OR_EQUALS_TO:
return builder.greaterThanOrEqualTo(expression, (Y) value);
case LESS_OR_EQUALS_TO:
return builder.lessThanOrEqualTo(expression, (Y) value);
case NOT_EQUALS:
return builder.notEqual(expression, value);
case EQUALS:
default:
return builder.equal(expression, value);
}
return switch (operator) {
case LIKE -> builder.like(expression, "%" + value + "%");
case NOT_LIKE -> builder.notLike(expression, "%" + value + "%");
case BETWEEN -> createBetweenPredicate(expression, fieldValue, fieldType);
case NOT_IN -> createInPredicate(expression, value, fieldType, false);
case IN -> createInPredicate(expression, value, fieldType, true);
case GREATER_THAN -> builder.greaterThan(expression, (Y) value);
case LESS_THAN -> builder.lessThan(expression, (Y) value);
case GREATER_OR_EQUALS_TO -> builder.greaterThanOrEqualTo(expression, (Y) value);
case LESS_OR_EQUALS_TO -> builder.lessThanOrEqualTo(expression, (Y) value);
case NOT_EQUALS -> builder.notEqual(expression, value);
default -> builder.equal(expression, value);
};
}

/**
Expand Down