*/
public RewrittenStatement rewrite(String sql, Binding params, StatementContext ctx)
{
StringBuilder b = new StringBuilder();
ParsedStatement stmt = new ParsedStatement();
ColonStatementLexer lexer = new ColonStatementLexer(new StringReader(sql));
try {
Token t = lexer.nextToken();
while (t.getType() != EOF) {
switch (t.getType()) {
case LITERAL:
b.append(t.getText());
break;
case NAMED_PARAM:
stmt.addNamedParamAt(t.getText().substring(1, t.getText().length()));
b.append("?");
break;
case QUOTED_TEXT:
b.append(t.getText());
break;
case DOUBLE_QUOTED_TEXT:
b.append(t.getText());
break;
case POSITIONAAL_PARAM:
b.append("?");
stmt.addPositionalParamAt();
break;
}
t = lexer.nextToken();
}
}
catch (TokenStreamException e) {
throw new UnableToCreateStatementException("Exception parsing for named parameter replacement", e);
}