Skip to content

Commit b45b639

Browse files
committed
fix(ecl): compile errors in description term evaluation
1 parent 9bc89ad commit b45b639

File tree

1 file changed

+22
-16
lines changed

1 file changed

+22
-16
lines changed

snomed/com.b2international.snowowl.snomed.datastore/src/com/b2international/snowowl/snomed/core/ecl/SnomedEclEvaluationRequest.java

+22-16
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2011-2021 B2i Healthcare Pte Ltd, http://b2i.sg
2+
* Copyright 2011-2022 B2i Healthcare Pte Ltd, http://b2i.sg
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -26,7 +26,6 @@
2626

2727
import java.io.IOException;
2828
import java.util.*;
29-
import java.util.concurrent.TimeUnit;
3029
import java.util.stream.Collectors;
3130

3231
import javax.annotation.Nullable;
@@ -624,22 +623,29 @@ protected Promise<Expression> eval(BranchContext context, final SemanticTagFilte
624623
return Promise.immediate(expression);
625624
}
626625

627-
protected Promise<Expression> eval(BranchContext context, final TypedTermFilter typedTermFilter) {
628-
return eval(context, typedTermFilter.getClause());
629-
}
630-
631-
protected Promise<Expression> eval(BranchContext context, final TypedTermFilterSet termFilterSet) {
626+
protected Promise<Expression> eval(BranchContext context, final TermFilter termFilter) {
627+
final List<TypedSearchTermClause> clauses;
628+
629+
SearchTerm searchTerm = termFilter.getSearchTerm();
630+
if (searchTerm instanceof TypedSearchTerm) {
631+
clauses = List.of(((TypedSearchTerm) searchTerm).getClause());
632+
} else if (searchTerm instanceof TypedSearchTermSet) {
633+
clauses = ((TypedSearchTermSet) searchTerm).getClauses();
634+
} else {
635+
return throwUnsupported(searchTerm);
636+
}
637+
632638
// Filters are combined with an OR ("should") operator
633-
final Expressions.ExpressionBuilder builder = Expressions.builder();
639+
final Expressions.ExpressionBuilder builder = Expressions.bool();
634640

635-
for (final TypedTermFilterClause clause : termFilterSet.getClauses()) {
636-
builder.should(eval(context, clause).getSync());
641+
for (final TypedSearchTermClause clause : clauses) {
642+
builder.should(toExpression(clause));
637643
}
638644

639645
return Promise.immediate(builder.build());
640646
}
641-
642-
protected Promise<Expression> eval(BranchContext context, final TypedTermFilterClause clause) {
647+
648+
protected Expression toExpression(final TypedSearchTermClause clause) {
643649
final String term = clause.getTerm();
644650

645651
LexicalSearchType lexicalSearchType = LexicalSearchType.fromString(clause.getLexicalSearchType());
@@ -650,14 +656,14 @@ protected Promise<Expression> eval(BranchContext context, final TypedTermFilterC
650656
switch (lexicalSearchType) {
651657
case MATCH:
652658
final com.b2international.snowowl.core.request.TermFilter match = com.b2international.snowowl.core.request.TermFilter.defaultTermMatch(term);
653-
return Promise.immediate(SnomedDescriptionIndexEntry.Expressions.termDisjunctionQuery(match));
659+
return SnomedDescriptionIndexEntry.Expressions.termDisjunctionQuery(match);
654660
case WILD:
655661
final String regexTerm = term.replace("*", ".*");
656-
return Promise.immediate(SnomedDescriptionIndexEntry.Expressions.matchTermRegex(regexTerm));
662+
return SnomedDescriptionIndexEntry.Expressions.matchTermRegex(regexTerm);
657663
case REGEX:
658-
return Promise.immediate(SnomedDescriptionIndexEntry.Expressions.matchTermRegex(term));
664+
return SnomedDescriptionIndexEntry.Expressions.matchTermRegex(term);
659665
case EXACT:
660-
return Promise.immediate(SnomedDescriptionIndexEntry.Expressions.matchTermCaseInsensitive(term));
666+
return SnomedDescriptionIndexEntry.Expressions.matchTermCaseInsensitive(term);
661667
default:
662668
throw new UnsupportedOperationException("Not implemented lexical search type: '" + lexicalSearchType + "'.");
663669
}

0 commit comments

Comments
 (0)