checkInState(copy);\r
}\r
\r
+ public void removeParameterInState (String name) {\r
+ parameters.remove(name);\r
+ }\r
+ \r
/**\r
* Removes multiple parameters completely and notifies the state manager\r
* -- once -- about the change\r
checkInState(copy);\r
}\r
\r
+ public void addExpressionInState (String parameterName, Expression expression) {\r
+ getParameter(parameterName).addExpression(expression);\r
+ }\r
+ \r
public void removeExpression(String parameterName, Expression expression) {\r
Pazpar2Command copy = this.copy();\r
copy.getParameter(parameterName).removeExpression(expression);\r
* Sets the <code>filter</code> parameter. See Pazpar2 documentation for details.\r
*/ \r
public void setFilter(String compoundExpression) {\r
- if (compoundExpression != null && compoundExpression.length()>0) {\r
- // Split expression by commas that are not escaped (with backslash)\r
+ if (getParameter("filter") != null) removeParameterInState("filter");\r
+ if (compoundExpression != null && compoundExpression.length()>0) { \r
+ // Split expression by commas that are not escaped with backslash\r
String[] subExpressions = compoundExpression.split("(?<!\\\\),");\r
for (int i=0; i<subExpressions.length; i++) {\r
- if (subExpressions[i].split("[=~]").length==1) {\r
- removeFilters(subExpressions[i].split("[=~]")[0]);\r
- } else if (subExpressions[i].split("[=~]").length==2) {\r
- if (getParameter("filter") == null) {\r
- setParameter(new FilterParameter(new Expression(subExpressions[i])));\r
- } else {\r
- if (getParameter("filter").hasExpressions(subExpressions[i].split("[=~]")[0])) {\r
- getParameter("filter").removeExpressions(subExpressions[i].split("[=~]")[0]);\r
- }\r
- getParameter("filter").addExpression(new Expression(subExpressions[i]));\r
- }\r
+ if (i==0) {\r
+ setParameterInState(new FilterParameter(new Expression(subExpressions[i])));\r
} else {\r
- logger.error("Could not parse filter expression [" + subExpressions[i] + "]");\r
+ addExpressionInState("filter",new Expression(subExpressions[i]));\r
}\r
}\r
}\r
+ checkInState(this);\r
}\r
\r
/**\r
/**\r
* Sets the <code>limit</code> parameter. See Pazpar2 documentation for details.\r
*/ \r
- public void setLimit (String compoundExpression) { \r
- if (compoundExpression != null && compoundExpression.length()>0) {\r
- // Split expression by commas that are not escaped (with backslash)\r
+ public void setLimit (String compoundExpression) {\r
+ if (getParameter("limit") != null) removeParameterInState("limit");\r
+ if (compoundExpression != null && compoundExpression.length()>0) { \r
+ // Split expression by commas that are not escaped with backslash\r
String[] subExpressions = compoundExpression.split("(?<!\\\\),");\r
for (int i=0; i<subExpressions.length; i++) {\r
- if (subExpressions[i].split("[=~]").length==1) {\r
- removeLimits(subExpressions[i].split("[=~]")[0]);\r
- } else if (subExpressions[i].split("[=~]").length==2) {\r
- if (getParameter("limit") == null) {\r
- setParameter(new LimitParameter(new Expression(subExpressions[i])));\r
- } else {\r
- if (getParameter("limit").hasExpressions(subExpressions[i].split("[=~]")[0])) {\r
- getParameter("limit").removeExpressions(subExpressions[i].split("[=~]")[0]);\r
- }\r
- getParameter("limit").addExpression(new Expression(subExpressions[i]));\r
- }\r
+ if (i==0) {\r
+ setParameterInState(new LimitParameter(new Expression(subExpressions[i])));\r
} else {\r
- logger.error("Could not parse limit expression [" + subExpressions[i] + "]");\r
+ addExpressionInState("limit",new Expression(subExpressions[i]));\r
}\r
}\r
}\r
+ checkInState(this);\r
}\r
\r
/**\r