Adds methods handling 'filter' and 'limit' expressions
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / pazpar2 / commands / LimitParameter.java
1 package com.indexdata.mkjsf.pazpar2.commands;\r
2 \r
3 import org.apache.log4j.Logger;\r
4 \r
5 public class LimitParameter extends CommandParameter {\r
6 \r
7   private static final long serialVersionUID = -1410691265213389826L;\r
8   private static Logger logger = Logger.getLogger(LimitParameter.class);\r
9 \r
10   public LimitParameter(String name) {\r
11     super(name);\r
12   }\r
13 \r
14   public LimitParameter(Expression... expressions) {\r
15     super("limit", "=", expressions);\r
16   }\r
17 \r
18   public String getValueWithExpressions () {\r
19     StringBuilder completeValue = new StringBuilder("");\r
20     boolean first = true;\r
21     for (Expression expr : expressions) {      \r
22       if (!first) \r
23         completeValue.append(",");\r
24       else \r
25         first=false;      \r
26       completeValue.append(pz2escape(expr.toString()));\r
27       logger.trace("valueWithExpressions so far: [" + completeValue + "]");\r
28     }\r
29     return completeValue.toString();    \r
30   }\r
31   \r
32   public String pz2escape (String expressionString) {\r
33     String escaped = expressionString.replaceAll("\\\\","\\\\\\\\");\r
34     escaped = escaped.replaceAll(",","\\\\,");\r
35     escaped = escaped.replaceAll("\\|", "\\\\|");\r
36     return escaped;\r
37   }\r
38 \r
39   \r
40   public LimitParameter copy() {\r
41     logger.trace("Copying parameter '"+ name + "' for modification");\r
42     LimitParameter newParam = new LimitParameter(name);\r
43     newParam.value = this.value;\r
44     newParam.operator = this.operator;\r
45     for (Expression expr : expressions) {\r
46       newParam.addExpression(expr.copy());      \r
47     }\r
48     return newParam;\r
49   }\r
50 \r
51 \r
52 }\r