1 package com.indexdata.pz2utils4jsf.pazpar2.commands;
\r
3 import java.io.Serializable;
\r
4 import java.util.HashMap;
\r
5 import java.util.Map;
\r
7 import org.apache.log4j.Logger;
\r
9 import com.indexdata.pz2utils4jsf.pazpar2.state.StateManager;
\r
11 public class Pazpar2Command implements CommandReadOnly, Serializable {
\r
13 private static Logger logger = Logger.getLogger(Pazpar2Command.class);
\r
14 private static final long serialVersionUID = -6825491856480675917L;
\r
15 private String name = "";
\r
16 protected Map<String,CommandParameter> parameters = new HashMap<String,CommandParameter>();
\r
18 StateManager stateMgr;
\r
20 public Pazpar2Command (String name, StateManager stateMgr) {
\r
22 if (stateMgr == null) {
\r
23 // Set one-off dummy state mgr
\r
24 this.stateMgr = new StateManager();
\r
26 this.stateMgr = stateMgr;
\r
30 public Pazpar2Command copy () {
\r
31 Pazpar2Command newCommand = new Pazpar2Command(name,stateMgr);
\r
32 for (String parameterName : parameters.keySet()) {
\r
33 newCommand.setParameterSilently(parameters.get(parameterName).copy());
\r
38 public String getName() {
\r
42 public void setParameter (CommandParameter parameter) {
\r
43 logger.debug("Setting parameter " + parameter.getName() + "=" + parameter.getValueWithExpressions() + " to " + this.getName());
\r
44 parameters.put(parameter.getName(),parameter);
\r
45 stateMgr.checkIn(this);
\r
48 public void setParameters (CommandParameter... params) {
\r
49 for (CommandParameter param : params) {
\r
50 logger.debug("Setting parameter " + param.getName() + "=" + param.getValueWithExpressions() + " to " + this.getName());
\r
51 parameters.put(param.getName(),param);
\r
53 stateMgr.checkIn(this);
\r
57 public void setParameterSilently (CommandParameter parameter) {
\r
58 logger.debug("Setting parameter silently " + parameter.getName() + "=" + parameter.getValueWithExpressions() + " to " + this.getName());
\r
59 parameters.put(parameter.getName(),parameter);
\r
63 public CommandParameter getParameter (String name) {
\r
64 return parameters.get(name);
\r
67 public void removeParameter (String name) {
\r
68 parameters.remove(name);
\r
69 stateMgr.checkIn(this);
\r
72 public void removeParameters() {
\r
73 parameters = new HashMap<String,CommandParameter>();
\r
74 stateMgr.checkIn(this);
\r
77 public boolean hasParameters () {
\r
78 return (parameters.keySet().size()>0);
\r
81 public boolean hasParameterSet(String parameterName) {
\r
82 return (parameters.get(parameterName) != null);
\r
85 public String getEncodedQueryString () {
\r
86 StringBuilder queryString = new StringBuilder("command="+name);
\r
87 for (CommandParameter parameter : parameters.values()) {
\r
88 queryString.append("&"+parameter.getEncodedQueryString());
\r
90 return queryString.toString();
\r
93 public String getValueWithExpressions() {
\r
94 StringBuilder value = new StringBuilder("");
\r
95 for (CommandParameter parameter : parameters.values()) {
\r
96 value.append("&" + parameter.getName() + parameter.operator + parameter.getValueWithExpressions());
\r
98 return value.toString();
\r
102 public boolean equals (Object otherCommand) {
\r
104 ((otherCommand instanceof Pazpar2Command)
\r
105 && this.getValueWithExpressions().equals(((Pazpar2Command) otherCommand).getValueWithExpressions()));
\r
109 public int hashCode () {
\r
110 return getValueWithExpressions().hashCode();
\r
113 public String toString () {
\r
114 return parameters.toString();
\r
118 public String getParameterValue(String parameterName) {
\r
119 return getParameter(parameterName).getValueWithExpressions();
\r
124 public String getUrlEncodedParameterValue(String parameterName) {
\r
125 return getParameter(parameterName).getEncodedQueryString();
\r
128 public void setSession (String sessionId) {
\r
129 setParameter(new CommandParameter("session","=",sessionId));
\r
132 public String getSession() {
\r
133 return getParameterValue("session");
\r