Collections.sort(wrapperList, new Comparator<OntologyTermWrapper>() {
@Override
public int compare(OntologyTermWrapper o1, OntologyTermWrapper o2) {
+ //remove wildcards from search string
+ String trimmedSearch = searchString.replace("*", "");
String label1 = o1.getLabel();
String label2 = o2.getLabel();
//1. search string at the beginning
- if(label1.startsWith(searchString)){
- if(!label2.startsWith(searchString)){
+ if(label1.startsWith(trimmedSearch)){
+ if(!label2.startsWith(trimmedSearch)){
return -1;
}
else{
return label1.compareTo(label2);
}
}
- else if(label2.startsWith(searchString)){
+ else if(label2.startsWith(trimmedSearch)){
return 1;
}
//2. label that contains search string
- if(label1.contains(searchString)){
- if(!label2.contains(searchString)){
+ if(label1.contains(trimmedSearch)){
+ if(!label2.contains(trimmedSearch)){
return -1;
}
}
- else if(label2.contains(searchString)){
+ else if(label2.contains(trimmedSearch)){
return 1;
}
return label1.compareTo(label2);
protected List<RequestParameter> getServiceParameters() {
List<RequestParameter> params = new ArrayList<>();
params.add(new RequestParameter(TerminologyServiceConstants.ATTR_QUERY, searchString));
- params.add(new RequestParameter("match_type", "regex"));
+ if(searchString.contains("*")){
+ params.add(new RequestParameter("match_type", "regex"));
+ }
+ else{
+ params.add(new RequestParameter("match_type", "exact"));
+ }
params.add(new RequestParameter("internal_only", "true"));
params.add(new RequestParameter(TerminologyServiceConstants.ATTR_TERMINOLOGIES,
selectedOntologies.stream()