Do some resetting of session on login
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / pz2utils4jsf / pazpar2 / CommandParameter.java
1 package com.indexdata.pz2utils4jsf.pazpar2;\r
2 \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
8 \r
9 import org.apache.log4j.Logger;\r
10 \r
11 import com.indexdata.pz2utils4jsf.pazpar2.CommandParameter;\r
12 \r
13 public class CommandParameter implements Serializable {\r
14 \r
15   private static Logger logger = Logger.getLogger(CommandParameter.class);\r
16   \r
17   private static final long serialVersionUID = 625502285668766749L;\r
18   String name = null;\r
19   String operator = null;\r
20   String value = null;\r
21   Map<String,Expression> expressions = new HashMap<String,Expression>();\r
22   \r
23   public CommandParameter (String name) {\r
24     logger.debug("Instantiating command parameter (1) " + name);\r
25     this.name = name;\r
26   }\r
27   \r
28   public CommandParameter (String name, String operator, String value, Expression... expressions) {\r
29     logger.debug("Instantiating command parameter (2) " + name + " with " + expressions);\r
30     this.name = name;\r
31     this.operator = operator;\r
32     this.value = value;\r
33     for (Expression expr : expressions) {\r
34       this.expressions.put(expr.toString(), expr);\r
35     }\r
36   }\r
37 \r
38   public CommandParameter (String name, String operator, String value) {\r
39     logger.debug("Instantiating command parameter (3) " + name + " ("+this+") with " + name + " and " + value);\r
40     this.name = name;\r
41     this.operator = operator;\r
42     this.value = value;    \r
43   }\r
44   \r
45   public CommandParameter (String name, String operator, int value) {\r
46     logger.debug("Instantiating command parameter (4) " + name + " ("+this+") with " + name + " and " + value);\r
47     this.name = name;\r
48     this.operator = operator;\r
49     this.value = value+"";    \r
50   }\r
51 \r
52   \r
53   public String getName () {\r
54     return name;\r
55   }\r
56   \r
57   public Map<String,Expression> getExpressions () {\r
58     return expressions;\r
59   }\r
60   \r
61   public void addExpression(Expression expression) {\r
62     logger.debug("Adding expression [" + expression + "] to " + this.getName() + " ("+this+")");\r
63     this.expressions.put(expression.toString(),expression);\r
64   }\r
65   \r
66   public void removeExpression(Expression expression) {\r
67     this.expressions.remove(expression.toString());\r
68   }\r
69   \r
70   \r
71   public boolean hasOperator() {\r
72     return operator != null;\r
73   }\r
74   \r
75   public String getEncodedQueryString () {\r
76     try {\r
77       return name + operator + URLEncoder.encode(getValueWithExpressions(),"UTF-8");\r
78     } catch (UnsupportedEncodingException e) {\r
79       e.printStackTrace();\r
80       return null;\r
81     }\r
82   }\r
83     \r
84   public String getSimpleValue() {    \r
85     return value; \r
86   }\r
87   \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
92     }\r
93     return completeValue.toString();\r
94     \r
95   }\r
96   \r
97   @Override\r
98   public boolean equals (Object otherParameter) {\r
99     return\r
100         ((otherParameter instanceof CommandParameter)\r
101          && this.getValueWithExpressions().equals(((CommandParameter) otherParameter).getValueWithExpressions()));\r
102   }\r
103   \r
104   @Override\r
105   public int hashCode () {\r
106     return getValueWithExpressions().hashCode();\r
107   }\r
108   \r
109   public String toString() {\r
110     return getValueWithExpressions();\r
111   }\r
112   \r
113   public CommandParameter copy() {\r
114     CommandParameter newParam = new CommandParameter(name);\r
115     newParam.value = this.value;\r
116     newParam.operator = this.operator;\r
117     for (String key : expressions.keySet()) {\r
118       newParam.addExpression(expressions.get(key).copy());      \r
119     }\r
120     return newParam;\r
121   }\r
122   \r
123 }\r