@Override
public String renderOrderByElement(String expression, String collation, String order, NullPrecedence nullPrecedence) {
if ( nullPrecedence == null || nullPrecedence == NullPrecedence.NONE ) {
return super.renderOrderByElement( expression, collation, order, NullPrecedence.NONE );
}
if ( nullPrecedence == NullPrecedence.FIRST ) {
if ( order == null || "asc".equals( order ) ) {
return super.renderOrderByElement( expression, collation, order, NullPrecedence.NONE );
}
else {
return "order by case when " + expression + " is null then 0 else 1 end, " + expression + " desc";
}
}
else {
if ( order == null || "asc".equals( order ) ) {
return "order by case when " + expression + " is null then 1 else 0 end, " + expression + " asc";
}
else {
return super.renderOrderByElement( expression, collation, order, NullPrecedence.NONE );
}
}
}