Skip to content

Commit

Permalink
feat: include entity convert to observer at sort annotations
Browse files Browse the repository at this point in the history
Signed-off-by: Otavio Santana <otaviopolianasantana@gmail.com>
  • Loading branch information
otaviojava committed Jun 13, 2024
1 parent 61157c8 commit 1c2a673
Showing 1 changed file with 5 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import org.eclipse.jnosql.mapping.core.repository.DynamicReturn;
import org.eclipse.jnosql.mapping.core.repository.RepositoryReflectionUtils;
import org.eclipse.jnosql.mapping.core.repository.SpecialParameters;
import org.eclipse.jnosql.mapping.metadata.EntityMetadata;

import java.lang.reflect.Method;
import java.util.ArrayList;
Expand Down Expand Up @@ -61,7 +62,7 @@ protected Object executeCursorPagination(Object instance, Method method, Object[
return this.template().selectCursor(query, pageRequest);
} else {
Map<String, Object> parameters = RepositoryReflectionUtils.INSTANCE.getBy(method, params);
var query = SemiStructuredParameterBasedQuery.INSTANCE.toQuery(parameters, getSorts(method), entityMetadata());
var query = SemiStructuredParameterBasedQuery.INSTANCE.toQuery(parameters, getSorts(method, entityMetadata()), entityMetadata());
SpecialParameters special = DynamicReturn.findSpecialParameters(params);
PageRequest pageRequest = special.pageRequest()
.orElseThrow(() -> new IllegalArgumentException("Pageable is required in the method signature as parameter at " + method));
Expand Down Expand Up @@ -104,15 +105,15 @@ protected Object executeFindByQuery(Object instance, Method method, Object[] par
protected Object executeParameterBased(Object instance, Method method, Object[] params) {
Class<?> type = entityMetadata().type();
Map<String, Object> parameters = RepositoryReflectionUtils.INSTANCE.getBy(method, params);
var query = SemiStructuredParameterBasedQuery.INSTANCE.toQuery(parameters, getSorts(method), entityMetadata());
var query = SemiStructuredParameterBasedQuery.INSTANCE.toQuery(parameters, getSorts(method, entityMetadata()), entityMetadata());
return executeFindByQuery(method, params, type, updateQueryDynamically(params, query));
}

private static List<Sort<?>> getSorts(Method method) {
private static List<Sort<?>> getSorts(Method method, EntityMetadata metadata) {
List<Sort<?>> sorts = new ArrayList<>();
OrderBy[] orders = method.getAnnotationsByType(OrderBy.class);
Stream.of(orders)
.map(o -> (o.descending() ? Sort.desc(o.value()) : Sort.asc(o.value())))
.map(o -> (o.descending() ? Sort.desc(metadata.columnField(o.value())) : Sort.asc(metadata.columnField(o.value()))))
.forEach(sorts::add);
return sorts;
}
Expand Down

0 comments on commit 1c2a673

Please sign in to comment.