public String render(String fragment) {
GeneratedOrderByLexer lexer = new GeneratedOrderByLexer( new StringReader( fragment ) );
OrderByFragmentParser parser = new OrderByFragmentParser( lexer, context );
try {
parser.orderByFragment();
}
catch ( HibernateException e ) {
throw e;
}
catch ( Throwable t ) {
throw new HibernateException( "Unable to parse order-by fragment", t );
}
if ( log.isTraceEnabled() ) {
ASTPrinter printer = new ASTPrinter( OrderByTemplateTokenTypes.class );
log.trace( printer.showAsString( parser.getAST(), "--- {order-by fragment} ---" ) );
}
GeneratedOrderByFragmentRenderer renderer = new GeneratedOrderByFragmentRenderer();
try {
renderer.orderByFragment( parser.getAST() );
}
catch ( HibernateException e ) {
throw e;
}
catch ( Throwable t ) {
throw new HibernateException( "Unable to render parsed order-by fragment", t );
}
return renderer.getRenderedFragment();
}
The main contract, performing the transaction. |