package jef.database.jsqlparser.expression; import jef.database.jsqlparser.visitor.Expression; import jef.database.jsqlparser.visitor.ExpressionType; import jef.database.jsqlparser.visitor.ExpressionVisitor; /** * 支持用标准的String.format语法进行修饰的表达式。 * * %[argument_index$][flags][width][.precision]conversion * * 常见的如 % 1$ s * 或者 %s * * @author jiyi * */ public class TemplateExpression implements Expression{ private Expression[] exprs; private String template; public TemplateExpression(String format,Expression... exprs){ this.template=format; this.exprs=exprs; } public void accept(ExpressionVisitor expressionVisitor) { for(Expression ex:exprs){ if(ex!=null){ ex.accept(expressionVisitor); } } } @Override public String toString() { return String.format(template, (Object[])exprs); } public void appendTo(StringBuilder sb) { sb.append(String.format(template, (Object[])exprs)); } public ExpressionType getType() { return ExpressionType.complex; } }