Clears info response when clearing init response
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / pazpar2 / commands / SearchCommand.java
index 7d74b6c..0c8d745 100644 (file)
@@ -70,16 +70,20 @@ public class SearchCommand extends Pazpar2Command implements ServiceProxyCommand
   /**\r
    * Sets the <code>filter</code> parameter. See Pazpar2 documentation for details.\r
    */  \r
-  public void setFilter(String filterExpression) {\r
-    if (filterExpression != null && filterExpression.length()>0) {\r
-      if (filterExpression.split("[=~]").length==1) {\r
-        removeFilters(filterExpression.split("[=~]")[0]);\r
-      } else if (filterExpression.split("[=~]").length==2) {\r
-        setParameter(new FilterParameter(new Expression(filterExpression)));\r
-      } else {\r
-        logger.error("Could not parse filter expression [" + filterExpression + "]");\r
+  public void setFilter(String compoundExpression) {\r
+    if (getParameter("filter") != null) removeParameterInState("filter");\r
+    if (compoundExpression != null && compoundExpression.length()>0) {      \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 (i==0) {\r
+          setParameterInState(new FilterParameter(new Expression(subExpressions[i])));\r
+        } else {\r
+          addExpressionInState("filter",new Expression(subExpressions[i]));\r
+        }\r
       }\r
     }\r
+    checkInState(this);\r
   }\r
   \r
   /**\r
@@ -215,10 +219,20 @@ public class SearchCommand extends Pazpar2Command implements ServiceProxyCommand
   /**\r
    * Sets the <code>limit</code> parameter. See Pazpar2 documentation for details.\r
    */  \r
-  public void setLimit (String limitExpression) {   \r
-    if (limitExpression != null && limitExpression.length()>0) {\r
-      setParameter(new LimitParameter(new Expression(limitExpression)));\r
+  public void setLimit (String compoundExpression) {\r
+    if (getParameter("limit") != null) removeParameterInState("limit");\r
+    if (compoundExpression != null && compoundExpression.length()>0) {      \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 (i==0) {\r
+          setParameterInState(new LimitParameter(new Expression(subExpressions[i])));\r
+        } else {\r
+          addExpressionInState("limit",new Expression(subExpressions[i]));\r
+        }\r
+      }\r
     }\r
+    checkInState(this);\r
   }\r
   \r
   /**\r
@@ -277,7 +291,7 @@ public class SearchCommand extends Pazpar2Command implements ServiceProxyCommand
   }\r
   \r
   /**\r
-   * Returns a list of limit expressions with fields that matches on of <code>expressionFields</code>\r
+   * Returns a list of limit expressions with fields that matches one of <code>expressionFields</code>\r
    * \r
    * @param expressionFields limit expressions to look for\r
    */\r