package fr.inria.lille.repair.expression.factory; import fr.inria.lille.repair.common.config.NopolContext; import fr.inria.lille.repair.expression.Expression; import fr.inria.lille.repair.expression.combination.CombinationExpression; import fr.inria.lille.repair.expression.combination.Operator; import fr.inria.lille.repair.expression.combination.binary.BinaryExpression; import fr.inria.lille.repair.expression.combination.binary.BinaryExpressionImpl; import fr.inria.lille.repair.expression.combination.binary.BinaryOperator; import fr.inria.lille.repair.expression.combination.unary.UnaryExpression; import fr.inria.lille.repair.expression.combination.unary.UnaryExpressionImpl; import fr.inria.lille.repair.expression.combination.unary.UnaryOperator; import java.util.List; public class CombinationFactory { public static CombinationExpression create(Operator operator, List<Expression> expressions, NopolContext nopolContext) { switch (expressions.size()) { case 1: return create((UnaryOperator) operator, expressions.get(0), nopolContext); case 2: return create((BinaryOperator) operator, expressions.get(0), expressions.get(1), nopolContext); default: throw new IllegalArgumentException("Combination expression with " + expressions.size() + " is not supported"); } } public static BinaryExpression create(BinaryOperator operator, Expression first, Expression second, NopolContext nopolContext) { return new BinaryExpressionImpl(operator, first, second, nopolContext); } public static UnaryExpression create(UnaryOperator operator, Expression first, NopolContext nopolContext) { return new UnaryExpressionImpl(operator, first, nopolContext); } }