@Override public void setSubExpressions(Expression... subExpressions) { if (subExpressions.length > 0) super.setSubExpressions(subExpressions[0]); if (subExpressions.length > 1) { log.warn("Tried to add multiple expressions to Negation! Only first subExpression written."); } }
@Override public Expression parseExpression(String expression) { expression = expression.trim(); Expression exp; int indexOfOpening = expression.indexOf("("); int indexOfClosing = expression.lastIndexOf(")"); if (indexOfOpening > -1 && indexOfClosing > -1) { String tmp = expression.substring(0, indexOfOpening); exp = new Expression(tmp.trim()); try { String subExpressions = expression.substring(indexOfOpening + 1, indexOfClosing); List<Expression> expressions = parseExpressions(subExpressions); exp.setSubExpressions(expressions); } catch (Exception e) { log.error("Error while parsing Expression: %s, indexOfOpening: %s, indexOfClosing: %s, message: %s", expression, indexOfOpening, indexOfClosing, e.getLocalizedMessage()); } } else { exp = new Expression(expression); } return expressionFactory.getExpression(exp); }
@Override public Expression getExpression(Expression exp) { try { if (exp != null) { if (expressions.containsKey(exp.getExpressionName())) { Expression tmpExp = exp; exp = (Expression) expressions.get(exp.getExpressionName()).clone(); exp.setSubExpressions(tmpExp.getSubExpressions()); } else { if (exp.getSubExpressions().length == 0 && CharacterUtilities.isNumber(exp.getExpressionName(), false)) { exp = new Value(exp.getExpressionName()); } else { exp = new Expression(exp.getExpressionName(), exp.getSubExpressions()); } } exp.setDomain(exp.getDomain()); } } catch (CloneNotSupportedException e) { log.error(e.getLocalizedMessage(), e); } return exp; } }