@Override protected String parseFromInternal(String expression) { // first the boolean operator for this clause if (expression.startsWith("|| ")) { m_isAnOr = true; } if (expression.startsWith("|| ") || expression.startsWith("&& ")) { // strip the boolean operator expression = expression.substring(3, expression.length()); } if (expression.charAt(0) == '!') { setNegated(true); expression = expression.substring(1, expression.length()); } if (expression.charAt(0) != '[') { throw new IllegalArgumentException("Was expecting a \"[\" to start this ExpressionClause!"); } expression = expression.substring(1, expression.length()); m_lhsAttributeName = expression.substring(0, expression.indexOf("@EC@")); expression = expression.substring(expression.indexOf("@EC@") + 4, expression.length()); String oppName = expression.substring(0, expression.indexOf("@EC@")); expression = expression.substring(expression.indexOf("@EC@") + 4, expression.length()); for (ExpressionType n : ExpressionType.values()) { if (n.toString().equals(oppName)) { m_operator = n; break; } } if (expression.startsWith("@@")) { // rhs is an attribute expression = expression.substring(2, expression.length()); // strip off // "@@" m_rhsIsAttribute = true; } m_rhsOperand = expression.substring(0, expression.indexOf(']')); expression = expression.substring(expression.indexOf(']') + 1, expression.length()); // remove "]" if (expression.charAt(0) == ' ') { expression = expression.substring(1, expression.length()); } return expression; }