package org.quaere.expressions; import java.util.Arrays; import java.util.List; public class MethodCall extends Expression { private final Identifier identifier; private final List<Expression> parameters; private Identifier anonymousIdentifier; private Identifier indexedIdentifier; private Expression lambdaExpression; public MethodCall(Identifier identifier, List<Expression> parameters) { this.identifier = identifier; this.parameters = parameters; } public MethodCall(Identifier identifier, Expression...parameters) { this.identifier = identifier; this.parameters = Arrays.asList(parameters); } public MethodCall(Identifier identifier, List<Expression> parameters, Identifier anonymousIdentifier, Identifier indexedIdentifier, Expression lambdaExpression) { this.identifier = identifier; this.parameters = parameters; this.anonymousIdentifier = anonymousIdentifier; this.indexedIdentifier = indexedIdentifier; this.lambdaExpression = lambdaExpression; } public Identifier getAnonymousIdentifier() { return anonymousIdentifier; } public Identifier getIdentifier() { return identifier; } public Identifier getIndexedIdentifier() { return indexedIdentifier; } public Expression getLambdaExpression() { return lambdaExpression; } public List<Expression> getParameters() { return parameters; } public String toString() { String parameterList = ""; for (Expression e : parameters) { parameterList += e.toString() + ','; } if (parameterList.length() > 0) { parameterList = parameterList.substring(0, parameterList.length() - 1); } return identifier.toString()+'(' + parameterList + ')'; } // --------------------- Interface ExpressionTreeNode --------------------- public void accept(ExpressionTreeVisitor visitor) { visitor.visit(this); } public boolean isNoLambda() { return getLambdaExpression() == null; } public boolean hasAnonymousIdentifier() { return getAnonymousIdentifier() != null; } public boolean hasIndexedIdentifier() { return getIndexedIdentifier() != null; } public int nextIdentifierIndex(int i) { return hasIndexedIdentifier() ? i + 1 : i; } }