Adds beans and configs
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / pz2utils4jsf / pazpar2 / Pazpar2Command.java
1 package com.indexdata.pz2utils4jsf.pazpar2;\r
2 \r
3 import java.io.Serializable;\r
4 import java.util.ArrayList;\r
5 import java.util.Arrays;\r
6 import java.util.HashMap;\r
7 import java.util.List;\r
8 import java.util.Map;\r
9 \r
10 import org.apache.log4j.Logger;\r
11 \r
12 import com.indexdata.pz2utils4jsf.pazpar2.CommandParameter;\r
13 import com.indexdata.pz2utils4jsf.pazpar2.Pazpar2Command;\r
14 \r
15 public class Pazpar2Command implements Serializable  {\r
16 \r
17   private static Logger logger = Logger.getLogger(Pazpar2Command.class);\r
18   private static final long serialVersionUID = -6825491856480675917L;\r
19   public static List<String> allCommands = new ArrayList<String>(Arrays.asList("init","ping","settings","search","stat","show","record","termlist","bytarget"));\r
20 \r
21   private String name = "";\r
22   private Map<String,CommandParameter> parameters = new HashMap<String,CommandParameter>();\r
23   \r
24   public Pazpar2Command (String name) {    \r
25     this.name = name;\r
26   }\r
27   \r
28   public Pazpar2Command copy () {\r
29     Pazpar2Command newCommand = new Pazpar2Command(name);\r
30     for (String parameterName : parameters.keySet()) {\r
31       newCommand.setParameter(parameters.get(parameterName).copy());      \r
32     }\r
33     return newCommand;\r
34   }\r
35   \r
36   public String getName() {\r
37     return name;\r
38   }\r
39     \r
40   public void setParameter (CommandParameter parameter) {\r
41     logger.debug("Setting parameter " + parameter.getName() + "=" + parameter.getValueWithExpressions() + " to " + this.getName());\r
42     parameters.put(parameter.getName(),parameter);\r
43   }\r
44   \r
45   public CommandParameter getParameter (String name) {\r
46     return parameters.get(name);\r
47   }\r
48   \r
49   public void removeParameter (String name) {\r
50     parameters.remove(name);    \r
51   }\r
52   \r
53   public void removeParameters() {\r
54     parameters = new HashMap<String,CommandParameter>();\r
55   }\r
56   \r
57   public boolean hasParameters () {\r
58     return (parameters.keySet().size()>0);\r
59   }\r
60   \r
61   public String getEncodedQueryString () {\r
62     StringBuilder queryString = new StringBuilder("command="+name);\r
63     for (CommandParameter parameter : parameters.values()) {\r
64        queryString.append("&"+parameter.getEncodedQueryString());       \r
65     }\r
66     return queryString.toString();\r
67   } \r
68     \r
69   public String getValueWithExpressions() {    \r
70     StringBuilder value = new StringBuilder("");\r
71     for (CommandParameter parameter : parameters.values()) {\r
72       value.append("&" + parameter.getName() + parameter.operator + parameter.getValueWithExpressions());       \r
73    }\r
74     return value.toString();\r
75   }\r
76   \r
77   @Override\r
78   public boolean equals (Object otherCommand) {\r
79     return\r
80         ((otherCommand instanceof Pazpar2Command)\r
81          && this.getValueWithExpressions().equals(((Pazpar2Command) otherCommand).getValueWithExpressions()));\r
82   }\r
83   \r
84   @Override\r
85   public int hashCode () {\r
86     return getValueWithExpressions().hashCode();\r
87   }\r
88   \r
89   public String toString () {\r
90     return parameters.toString();\r
91   }\r
92   \r
93 }\r