Support for compound limit expressions
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / pazpar2 / commands / SearchCommand.java
index dcbb323..f9f76a2 100644 (file)
@@ -1,9 +1,7 @@
 package com.indexdata.mkjsf.pazpar2.commands;\r
 \r
-import java.util.ArrayList;\r
 import java.util.Arrays;\r
 import java.util.List;\r
-import java.util.StringTokenizer;\r
 \r
 import javax.enterprise.context.SessionScoped;\r
 import javax.inject.Named;\r
@@ -74,7 +72,8 @@ public class SearchCommand extends Pazpar2Command implements ServiceProxyCommand
    */  \r
   public void setFilter(String compoundExpression) {\r
     if (compoundExpression != null && compoundExpression.length()>0) {\r
-      String[] subExpressions = compoundExpression.split(",");\r
+      // Split expression by commas that are not escaped (with backslash)\r
+      String[] subExpressions = compoundExpression.split("(?<!\\\\),");\r
       for (int i=0; i<subExpressions.length; i++) {\r
         if (subExpressions[i].split("[=~]").length==1) {\r
           removeFilters(subExpressions[i].split("[=~]")[0]);\r
@@ -229,7 +228,8 @@ public class SearchCommand extends Pazpar2Command implements ServiceProxyCommand
    */  \r
   public void setLimit (String compoundExpression) {   \r
     if (compoundExpression != null && compoundExpression.length()>0) {\r
-      String[] subExpressions = compoundExpression.split(",");\r
+      // Split expression by commas that are not escaped (with backslash)\r
+      String[] subExpressions = compoundExpression.split("(?<!\\\\),");\r
       for (int i=0; i<subExpressions.length; i++) {\r
         if (subExpressions[i].split("[=~]").length==1) {\r
           removeLimits(subExpressions[i].split("[=~]")[0]);\r