ca.gc.aafc.dina.repository.ReadOnlyDinaRepositoryV2 Maven / Gradle / Ivy
package ca.gc.aafc.dina.repository;
import java.util.Comparator;
import java.util.List;
import java.util.function.Predicate;
import org.apache.commons.collections.CollectionUtils;
import ca.gc.aafc.dina.filter.FilterComponent;
import ca.gc.aafc.dina.filter.QueryComponent;
import ca.gc.aafc.dina.filter.QueryStringParser;
import ca.gc.aafc.dina.filter.SimpleObjectFilterHandlerV2;
import ca.gc.aafc.dina.service.PredicateBasedReadOnlyDinaService;
/**
* Based repository for accessing read-only data.
*/
public class ReadOnlyDinaRepositoryV2 {
private final PredicateBasedReadOnlyDinaService service;
public ReadOnlyDinaRepositoryV2(PredicateBasedReadOnlyDinaService service) {
this.service = service;
}
public D findOne(K key) {
return service.findOne(key);
}
public List findAll(String queryString) {
QueryComponent queryComponents = QueryStringParser.parse(queryString);
FilterComponent fc = queryComponents.getFilters();
Predicate predicate = SimpleObjectFilterHandlerV2.createPredicate(fc);
Comparator comparator = null;
if (CollectionUtils.isNotEmpty(queryComponents.getSorts())) {
for (String sort : queryComponents.getSorts()) {
if (comparator == null) {
comparator = SimpleObjectFilterHandlerV2.generateComparator(sort);
} else {
comparator =
comparator.thenComparing(SimpleObjectFilterHandlerV2.generateComparator(sort));
}
}
}
return service.findAll(predicate, comparator, queryComponents.getPageOffset(), queryComponents.getPageLimit());
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy