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.trace("Instantiating command parameter '" + name + "'");
\r
31 public CommandParameter (String name, String operator, String value, Expression... expressions) {
\r
32 logger.trace("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.trace("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.trace("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 boolean hasValue() {
\r
79 return value != null && value.length()>0;
\r
82 public String getEncodedQueryString () {
\r
84 return name + operator + URLEncoder.encode(getValueWithExpressions(),"UTF-8");
\r
85 } catch (UnsupportedEncodingException e) {
\r
86 e.printStackTrace();
\r
91 public String getSimpleValue() {
\r
95 public String getValueWithExpressions () {
\r
96 StringBuilder completeValue = new StringBuilder((value==null ? "" : value));
\r
97 for (String key : expressions.keySet()) {
\r
98 completeValue.append(" and " + expressions.get(key));
\r
100 return completeValue.toString();
\r
105 public boolean equals (Object otherParameter) {
\r
107 ((otherParameter instanceof CommandParameter)
\r
108 && this.getValueWithExpressions().equals(((CommandParameter) otherParameter).getValueWithExpressions()));
\r
112 public int hashCode () {
\r
113 return getValueWithExpressions().hashCode();
\r
116 public String toString() {
\r
117 return getValueWithExpressions();
\r
120 public CommandParameter copy() {
\r
121 logger.trace("Copying parameter '"+ name + "' for modification");
\r
122 CommandParameter newParam = new CommandParameter(name);
\r
123 newParam.value = this.value;
\r
124 newParam.operator = this.operator;
\r
125 for (String key : expressions.keySet()) {
\r
126 newParam.addExpression(expressions.get(key).copy());
\r