1 package com.indexdata.mkjsf.pazpar2.commands;
\r
3 import java.io.Serializable;
\r
4 import java.io.UnsupportedEncodingException;
\r
5 import java.net.URLEncoder;
\r
6 import java.util.Arrays;
\r
7 import java.util.HashMap;
\r
8 import java.util.List;
\r
9 import java.util.Map;
\r
11 import org.apache.log4j.Logger;
\r
13 import com.indexdata.mkjsf.pazpar2.commands.CommandParameter;
\r
15 public class CommandParameter implements Serializable {
\r
17 private static Logger logger = Logger.getLogger(CommandParameter.class);
\r
19 private static final long serialVersionUID = 625502285668766749L;
\r
21 String operator = null;
\r
22 String value = null;
\r
23 Map<String,Expression> expressions = new HashMap<String,Expression>();
\r
24 private static List<String> nologparams = Arrays.asList("password");
\r
26 public CommandParameter (String name) {
\r
27 logger.debug("Instantiating command parameter '" + name + "'");
\r
31 public CommandParameter (String name, String operator, String value, Expression... expressions) {
\r
32 logger.debug("Instantiating command parameter " + name + " with expressions: [" + expressions + "]");
\r
34 this.operator = operator;
\r
36 for (Expression expr : expressions) {
\r
37 this.expressions.put(expr.toString(), expr);
\r
41 public CommandParameter (String name, String operator, String value) {
\r
42 if (!nologparams.contains(name)) logger.debug("Instantiating command parameter '" + name + "' with String: [" + value + "]");
\r
44 this.operator = operator;
\r
45 this.value = value;
\r
48 public CommandParameter (String name, String operator, int value) {
\r
49 logger.debug("Instantiating command parameter '" + name + "' with int: [" + value + "]");
\r
51 this.operator = operator;
\r
52 this.value = value+"";
\r
56 public String getName () {
\r
60 public Map<String,Expression> getExpressions () {
\r
64 public void addExpression(Expression expression) {
\r
65 logger.debug("Adding expression [" + expression + "] to '" + name + "'");
\r
66 this.expressions.put(expression.toString(),expression);
\r
69 public void removeExpression(Expression expression) {
\r
70 this.expressions.remove(expression.toString());
\r
74 public boolean hasOperator() {
\r
75 return operator != null;
\r
78 public String getEncodedQueryString () {
\r
80 return name + operator + URLEncoder.encode(getValueWithExpressions(),"UTF-8");
\r
81 } catch (UnsupportedEncodingException e) {
\r
82 e.printStackTrace();
\r
87 public String getSimpleValue() {
\r
91 public String getValueWithExpressions () {
\r
92 StringBuilder completeValue = new StringBuilder((value==null ? "" : value));
\r
93 for (String key : expressions.keySet()) {
\r
94 completeValue.append(" and " + expressions.get(key));
\r
96 return completeValue.toString();
\r
101 public boolean equals (Object otherParameter) {
\r
103 ((otherParameter instanceof CommandParameter)
\r
104 && this.getValueWithExpressions().equals(((CommandParameter) otherParameter).getValueWithExpressions()));
\r
108 public int hashCode () {
\r
109 return getValueWithExpressions().hashCode();
\r
112 public String toString() {
\r
113 return getValueWithExpressions();
\r
116 public CommandParameter copy() {
\r
117 logger.debug("Copying parameter '"+ name + "' for modification");
\r
118 CommandParameter newParam = new CommandParameter(name);
\r
119 newParam.value = this.value;
\r
120 newParam.operator = this.operator;
\r
121 for (String key : expressions.keySet()) {
\r
122 newParam.addExpression(expressions.get(key).copy());
\r