/** * String format for all operators is the same * {@code '(' [operand] [operator] [operand] ')'}. */ @Override public String toStringAST() { StringBuilder sb = new StringBuilder("("); sb.append(getChild(0).toStringAST()); for (int i = 1; i < getChildCount(); i++) { sb.append(" ").append(getOperatorName()).append(" "); sb.append(getChild(i).toStringAST()); } sb.append(")"); return sb.toString(); }
protected boolean isCompilableOperatorUsingNumerics() { SpelNodeImpl left = getLeftOperand(); SpelNodeImpl right = getRightOperand(); if (!left.isCompilable() || !right.isCompilable()) { return false; } // Supported operand types for equals (at the moment) String leftDesc = left.exitTypeDescriptor; String rightDesc = right.exitTypeDescriptor; DescriptorComparison dc = DescriptorComparison.checkNumericCompatibility( leftDesc, rightDesc, this.leftActualDescriptor, this.rightActualDescriptor); return (dc.areNumbers && dc.areCompatible); }
@Override public String toStringAST() { if (this.children.length < 2) { // unary plus return "+" + getLeftOperand().toStringAST(); } return super.toStringAST(); }
/** * Returns the Mongo expression of the operator. * * @return */ public String getMongoOperator() { if (!OPERATORS.containsKey(operator.getOperatorName())) { throw new IllegalArgumentException(String.format( "Unknown operator name. Cannot translate %s into its MongoDB aggregation function representation.", operator.getOperatorName())); } return OPERATORS.get(operator.getOperatorName()); }
/** * Returns the left operand as {@link ExpressionNode}. * * @return */ public ExpressionNode getLeft() { return from(operator.getLeftOperand()); }
/** * Returns the right operand as {@link ExpressionNode}. * * @return */ public ExpressionNode getRight() { return from(operator.getRightOperand()); } }
/** * Returns whether the operator is unary. * * @return */ public boolean isUnaryOperator() { return operator.getChildCount() == 1; }
@Test public void testOperatorNames() throws Exception { Operator node = getOperatorNode((SpelExpression)parser.parseExpression("1==3")); assertEquals("==",node.getOperatorName()); node = getOperatorNode((SpelExpression)parser.parseExpression("1!=3")); assertEquals("!=",node.getOperatorName()); node = getOperatorNode((SpelExpression)parser.parseExpression("3/3")); assertEquals("/",node.getOperatorName()); node = getOperatorNode((SpelExpression)parser.parseExpression("3+3")); assertEquals("+",node.getOperatorName()); node = getOperatorNode((SpelExpression)parser.parseExpression("3-3")); assertEquals("-",node.getOperatorName()); node = getOperatorNode((SpelExpression)parser.parseExpression("3<4")); assertEquals("<",node.getOperatorName()); node = getOperatorNode((SpelExpression)parser.parseExpression("3<=4")); assertEquals("<=",node.getOperatorName()); node = getOperatorNode((SpelExpression)parser.parseExpression("3*4")); assertEquals("*",node.getOperatorName()); node = getOperatorNode((SpelExpression)parser.parseExpression("3%4")); assertEquals("%",node.getOperatorName()); node = getOperatorNode((SpelExpression)parser.parseExpression("3>=4")); assertEquals(">=",node.getOperatorName()); node = getOperatorNode((SpelExpression)parser.parseExpression("3 between 4")); assertEquals("between",node.getOperatorName()); node = getOperatorNode((SpelExpression)parser.parseExpression("3 ^ 4")); assertEquals("^",node.getOperatorName()); }
/** * Returns the left operand as {@link ExpressionNode}. * * @return */ public ExpressionNode getLeft() { return from(operator.getLeftOperand()); }
/** * Returns the right operand as {@link ExpressionNode}. * * @return */ public ExpressionNode getRight() { return from(operator.getRightOperand()); } }
/** * Returns whether the operator is unary. * * @return */ public boolean isUnaryOperator() { return operator.getChildCount() == 1; }
/** * String format for all operators is the same * {@code '(' [operand] [operator] [operand] ')'}. */ @Override public String toStringAST() { StringBuilder sb = new StringBuilder("("); sb.append(getChild(0).toStringAST()); for (int i = 1; i < getChildCount(); i++) { sb.append(" ").append(getOperatorName()).append(" "); sb.append(getChild(i).toStringAST()); } sb.append(")"); return sb.toString(); }
protected boolean isCompilableOperatorUsingNumerics() { SpelNodeImpl left = getLeftOperand(); SpelNodeImpl right = getRightOperand(); if (!left.isCompilable() || !right.isCompilable()) { return false; } // Supported operand types for equals (at the moment) String leftDesc = left.exitTypeDescriptor; String rightDesc = right.exitTypeDescriptor; DescriptorComparison dc = DescriptorComparison.checkNumericCompatibility( leftDesc, rightDesc, this.leftActualDescriptor, this.rightActualDescriptor); return (dc.areNumbers && dc.areCompatible); }
/** * Returns the Mongo expression of the operator. * * @return */ public String getMongoOperator() { if (!OPERATORS.containsKey(operator.getOperatorName())) { throw new IllegalArgumentException(String.format( "Unknown operator name. Cannot translate %s into its MongoDB aggregation function representation.", operator.getOperatorName())); } return OPERATORS.get(operator.getOperatorName()); }
@Override public String toStringAST() { if (this.children.length < 2) { // unary minus return "-" + getLeftOperand().toStringAST(); } return super.toStringAST(); }
/** * String format for all operators is the same * {@code '(' [operand] [operator] [operand] ')'}. */ @Override public String toStringAST() { StringBuilder sb = new StringBuilder("("); sb.append(getChild(0).toStringAST()); for (int i = 1; i < getChildCount(); i++) { sb.append(" ").append(getOperatorName()).append(" "); sb.append(getChild(i).toStringAST()); } sb.append(")"); return sb.toString(); }
SpelNodeImpl left = getLeftOperand(); SpelNodeImpl right = getRightOperand(); String leftDesc = left.exitTypeDescriptor; String rightDesc = right.exitTypeDescriptor;
@Override public String toStringAST() { if (this.children.length < 2) { // unary plus return "+" + getLeftOperand().toStringAST(); } return super.toStringAST(); }
SpelNodeImpl left = getLeftOperand(); SpelNodeImpl right = getRightOperand(); String leftDesc = left.exitTypeDescriptor; String rightDesc = right.exitTypeDescriptor;
@Override public String toStringAST() { if (this.children.length < 2) { // unary minus return "-" + getLeftOperand().toStringAST(); } return super.toStringAST(); }