+ \r
+ public boolean hasLimitExpression(String... expressionFields) {\r
+ logger.trace("Checking for limit expression for " + Arrays.deepToString(expressionFields));\r
+ for (String field : expressionFields) {\r
+ if (getLimitExpressions(field) != null && getLimitExpressions(field).size()>0) {\r
+ logger.trace("Limit expression found (" + field + ")");\r
+ return true;\r
+ } \r
+ }\r
+ logger.trace("No limit expressions found");\r
+ return false;\r
+ }\r
+ \r
+ public Expression getOneLimitExpression(String expressionField) {\r
+ List<Expression> exprs = getLimitExpressions(expressionField);\r
+ if (exprs != null && exprs.size()>0) {\r
+ if (exprs.size()>1) {\r
+ logger.warn("More that one limit expression found for [" + expressionField + "] but only asked to return the first one");\r
+ }\r
+ return exprs.get(0);\r
+ } else {\r
+ return null;\r
+ } \r
+ }\r
+ \r
+ public List<Expression> getLimitExpressions() {\r
+ return getParameter("limit").getExpressions();\r
+ }\r
+ \r
+ public List<Expression> getLimitExpressions(String... expressionFields) {\r
+ logger.trace("Checking for limit parameter");\r
+ if (parameters.get("limit")!=null) {\r
+ logger.trace("Found");\r
+ return getParameter("limit").getExpressions(expressionFields);\r
+ } else {\r
+ logger.trace("Not found");\r
+ return null;\r
+ }\r
+ }\r
+ \r
+ public void addLimit(String field, String operator, String value, String label) {\r
+ if (getParameter("limit") == null) {\r
+ setLimit(field, operator, value, label);\r
+ } else {\r
+ addExpression("limit",new Expression(field,operator,value,label)); \r
+ }\r
+ }\r
+ \r
+ public void removeLimits() {\r
+ removeParameter("limit");\r
+ }\r
+ \r
+ public void removeLimits(String... fieldsToRemove) { \r
+ removeExpressions("limit",fieldsToRemove); \r
+ }\r
+ \r
+ public void removeLimit(String field, String operator, String value) {\r
+ removeExpression("limit",new Expression(field, operator, value, null)); \r
+ }\r
+ \r
+ public void removeLimitsAfter(String field, String operator, String value, String... fieldsToRemove) { \r
+ removeExpressionsAfter("limit",new Expression(field,operator,value,null),fieldsToRemove); \r
+ }\r
+\r
+ \r