ref #7806 Handle wildcard search
authorPatrick Plitzner <p.plitzner@bgbm.org>
Fri, 5 Oct 2018 06:42:08 +0000 (08:42 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Fri, 5 Oct 2018 06:42:54 +0000 (08:42 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/GfBioTerminologyImportPresenter.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/requests/RequestSearch.java

index f289af75177555411a9e8bffa1532841643d4657..ef9d5a1b9216ae295e3e7e57c90113e792e34356 100644 (file)
@@ -208,27 +208,29 @@ public class GfBioTerminologyImportPresenter {
         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);
index c197a81f9a83edc163a8aecf1e8120cd8a2b5c48..e41739a900ecab57aa43eb8e730f1851ae831701 100644 (file)
@@ -45,7 +45,12 @@ public class RequestSearch extends AbstractTerminologyServiceRequest{
     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()