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.HashMap;
\r
7 import java.util.Map;
\r
9 import org.apache.log4j.Logger;
\r
11 import com.indexdata.mkjsf.pazpar2.commands.CommandParameter;
\r
13 public class CommandParameter implements Serializable {
\r
15 private static Logger logger = Logger.getLogger(CommandParameter.class);
\r
17 private static final long serialVersionUID = 625502285668766749L;
\r
19 String operator = null;
\r
20 String value = null;
\r
21 Map<String,Expression> expressions = new HashMap<String,Expression>();
\r
23 public CommandParameter (String name) {
\r
24 logger.debug("Instantiating command parameter '" + name + "'");
\r
28 public CommandParameter (String name, String operator, String value, Expression... expressions) {
\r
29 logger.debug("Instantiating command parameter " + name + " with expressions: [" + expressions + "]");
\r
31 this.operator = operator;
\r
33 for (Expression expr : expressions) {
\r
34 this.expressions.put(expr.toString(), expr);
\r
38 public CommandParameter (String name, String operator, String value) {
\r
39 logger.debug("Instantiating command parameter '" + name + "' with String: [" + value + "]");
\r
41 this.operator = operator;
\r
42 this.value = value;
\r
45 public CommandParameter (String name, String operator, int value) {
\r
46 logger.debug("Instantiating command parameter '" + name + "' with int: [" + value + "]");
\r
48 this.operator = operator;
\r
49 this.value = value+"";
\r
53 public String getName () {
\r
57 public Map<String,Expression> getExpressions () {
\r
61 public void addExpression(Expression expression) {
\r
62 logger.debug("Adding expression [" + expression + "] to '" + name + "'");
\r
63 this.expressions.put(expression.toString(),expression);
\r
66 public void removeExpression(Expression expression) {
\r
67 this.expressions.remove(expression.toString());
\r
71 public boolean hasOperator() {
\r
72 return operator != null;
\r
75 public String getEncodedQueryString () {
\r
77 return name + operator + URLEncoder.encode(getValueWithExpressions(),"UTF-8");
\r
78 } catch (UnsupportedEncodingException e) {
\r
79 e.printStackTrace();
\r
84 public String getSimpleValue() {
\r
88 public String getValueWithExpressions () {
\r
89 StringBuilder completeValue = new StringBuilder((value==null ? "" : value));
\r
90 for (String key : expressions.keySet()) {
\r
91 completeValue.append(" and " + expressions.get(key));
\r
93 return completeValue.toString();
\r
98 public boolean equals (Object otherParameter) {
\r
100 ((otherParameter instanceof CommandParameter)
\r
101 && this.getValueWithExpressions().equals(((CommandParameter) otherParameter).getValueWithExpressions()));
\r
105 public int hashCode () {
\r
106 return getValueWithExpressions().hashCode();
\r
109 public String toString() {
\r
110 return getValueWithExpressions();
\r
113 public CommandParameter copy() {
\r
114 logger.debug("Copying parameter '"+ name + "' for modification");
\r
115 CommandParameter newParam = new CommandParameter(name);
\r
116 newParam.value = this.value;
\r
117 newParam.operator = this.operator;
\r
118 for (String key : expressions.keySet()) {
\r
119 newParam.addExpression(expressions.get(key).copy());
\r