public void removeParametersInState() {\r
parameters = new HashMap<String,CommandParameter>(); \r
}\r
-\r
+ \r
+ public void addExpression(String parameterName, Expression expression) {\r
+ Pazpar2Command copy = this.copy();\r
+ copy.getParameter(parameterName).addExpression(expression);\r
+ checkInState(copy);\r
+ }\r
+ \r
+ public void removeExpression(String parameterName, Expression expression) {\r
+ Pazpar2Command copy = this.copy();\r
+ copy.getParameter(parameterName).removeExpression(expression);\r
+ checkInState(copy); \r
+ }\r
+ \r
+ public void removeExpressionsAfter(String parameterName, Expression expression,String... expressionFields) {\r
+ Pazpar2Command copy = this.copy();\r
+ copy.getParameter(parameterName).removeExpressionsAfter(expression,expressionFields);\r
+ checkInState(copy); \r
+ }\r
+ \r
+ public void removeExpressions(String parameterName, String... expressionFields) {\r
+ Pazpar2Command copy = this.copy(); \r
+ copy.getParameter(parameterName).removeExpressions(expressionFields); \r
+ if (!getParameter(parameterName).hasValue() && !getParameter(parameterName).hasExpressions()) {\r
+ copy.parameters.remove(parameterName);\r
+ }\r
+ checkInState(copy); \r
+ }\r
\r
public boolean hasParameters () {\r
return (parameters.keySet().size()>0);\r
}\r
\r
public boolean hasParameterValue(String parameterName) {\r
- return (parameters.get(parameterName) != null && parameters.get(parameterName).hasValue());\r
+ return (parameters.get(parameterName) != null && (parameters.get(parameterName).hasValue()));\r
}\r
- \r
+ \r
public String getEncodedQueryString () {\r
StringBuilder queryString = new StringBuilder("command="+name);\r
for (CommandParameter parameter : parameters.values()) {\r
- if (parameter.hasValue()) {\r
+ if (parameter.hasValue() || parameter.hasExpressions()) {\r
queryString.append("&"+parameter.getEncodedQueryString());\r
}\r
}\r
public String getValueWithExpressions() { \r
StringBuilder value = new StringBuilder("");\r
for (CommandParameter parameter : parameters.values()) {\r
- if (parameter.hasValue()) {\r
+ if (parameter.hasValue() || parameter.hasExpressions()) {\r
value.append("&" + parameter.getName() + parameter.operator + parameter.getValueWithExpressions());\r
}\r
}\r
\r
@Override\r
public boolean equals (Object otherCommand) {\r
+ logger.trace("Comparing commands ["+this.toString()+"] and ["+otherCommand.toString() +"]");\r
return\r
((otherCommand instanceof Pazpar2Command)\r
&& this.getValueWithExpressions().equals(((Pazpar2Command) otherCommand).getValueWithExpressions()));\r