Adds support for parsing diff. expression operators
authorNiels Erik G. Nielsen <nielserik@indexdata.com>
Tue, 4 Jun 2013 10:10:16 +0000 (06:10 -0400)
committerNiels Erik G. Nielsen <nielserik@indexdata.com>
Tue, 4 Jun 2013 10:10:16 +0000 (06:10 -0400)
.. and for removing expressions for a field by supplying empty value

src/main/java/com/indexdata/mkjsf/pazpar2/commands/Expression.java
src/main/java/com/indexdata/mkjsf/pazpar2/commands/SearchCommand.java

index 3c377e2..f636f68 100644 (file)
@@ -1,12 +1,9 @@
 package com.indexdata.mkjsf.pazpar2.commands;\r
 \r
 import java.io.Serializable;\r
-import java.util.StringTokenizer;\r
 \r
 import org.apache.log4j.Logger;\r
 \r
-import com.indexdata.mkjsf.pazpar2.commands.Expression;\r
-\r
 public class Expression implements Serializable {\r
   \r
   private static final long serialVersionUID = -751704027842027769L;\r
@@ -24,10 +21,10 @@ public class Expression implements Serializable {
   }\r
   \r
   public Expression (String expressionString) {\r
-    StringTokenizer tokenizer = new StringTokenizer(expressionString,"=");\r
-    this.leftEntity = tokenizer.nextToken();\r
-    this.operator = "=";\r
-    this.rightEntity = tokenizer.nextToken();\r
+    String[] parts = expressionString.split("[=~]");\r
+    this.leftEntity = parts[0];\r
+    this.operator = expressionString.contains("=") ? "=" : "~";\r
+    this.rightEntity = parts[1];\r
     this.label=rightEntity;\r
   }\r
   \r
index e2bd02f..1285b2a 100644 (file)
@@ -42,7 +42,13 @@ public class SearchCommand extends Pazpar2Command implements ServiceProxyCommand
   \r
   public void setFilter(String filterExpression) {\r
     if (filterExpression != null && filterExpression.length()>0) {\r
-      setParameter(new FilterParameter(new Expression(filterExpression)));\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
+      }\r
     }\r
   }\r
   \r