1 package com.indexdata.mkjsf.pazpar2.commands;
\r
3 import org.apache.log4j.Logger;
\r
6 * Represents a limit parameter as it applies to the Pazpar2 search command
\r
8 * <p>A limit parameter consists of one or more expressions separated by commas.</p>
\r
10 * @author Niels Erik
\r
13 public class LimitParameter extends CommandParameter {
\r
15 private static final long serialVersionUID = -1410691265213389826L;
\r
16 private static Logger logger = Logger.getLogger(LimitParameter.class);
\r
18 public LimitParameter(String name) {
\r
22 public LimitParameter(Expression... expressions) {
\r
23 super("limit", "=", expressions);
\r
26 public String getValueWithExpressions () {
\r
27 StringBuilder completeValue = new StringBuilder("");
\r
28 boolean first = true;
\r
29 for (Expression expr : expressions) {
\r
31 completeValue.append(",");
\r
34 completeValue.append(pz2escape(expr.toString()));
\r
35 logger.trace("valueWithExpressions so far: [" + completeValue + "]");
\r
37 return completeValue.toString();
\r
40 private String pz2escape (String expressionString) {
\r
41 String escaped = expressionString.replaceAll("\\\\","\\\\\\\\");
\r
42 escaped = escaped.replaceAll(",","\\\\,");
\r
43 escaped = escaped.replaceAll("\\|", "\\\\|");
\r
48 public LimitParameter copy() {
\r
49 logger.trace("Copying parameter '"+ name + "' for modification");
\r
50 LimitParameter newParam = new LimitParameter(name);
\r
51 newParam.value = this.value;
\r
52 newParam.operator = this.operator;
\r
53 for (Expression expr : expressions) {
\r
54 newParam.addExpression(expr.copy());
\r