
org.molgenis.data.icd10.CollectionsQueryTransformerImpl Maven / Gradle / Ivy
package org.molgenis.data.icd10;
import static java.util.Collections.singletonList;
import static java.util.Objects.requireNonNull;
import static java.util.stream.Collectors.toList;
import com.google.common.collect.TreeTraverser;
import java.util.Collection;
import java.util.List;
import org.molgenis.data.DataService;
import org.molgenis.data.Entity;
import org.molgenis.data.Query;
import org.molgenis.data.QueryRule;
import org.springframework.stereotype.Component;
@Component
public class CollectionsQueryTransformerImpl implements CollectionsQueryTransformer {
private static final TreeTraverser RULE_TRAVERSER =
TreeTraverser.using(QueryRule::getNestedRules);
private final Icd10ClassExpander icd10ClassExpander;
private final DataService dataService;
CollectionsQueryTransformerImpl(Icd10ClassExpander icd10ClassExpander, DataService dataService) {
this.icd10ClassExpander = requireNonNull(icd10ClassExpander);
this.dataService = requireNonNull(dataService);
}
@Override
public Query transformQuery(
Query query, String icd10EntityTypeId, String expandAttribute) {
if (query != null && query.getRules() != null && !query.getRules().isEmpty()) {
query
.getRules()
.forEach(
rule ->
RULE_TRAVERSER
.preOrderTraversal(rule)
.filter(nestedRule -> isTransformableRule(nestedRule, expandAttribute))
.forEach(nestedRule -> transformQueryRule(nestedRule, icd10EntityTypeId)));
}
return query;
}
private void transformQueryRule(QueryRule rule, String icd10EntityTypeId) {
List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy