This scenario can be a very specific requirement. In fact, by using a database query, you should be able to achieve this by using NULLS LAST or FIRST in the order by clause. Unfortunately you can't do this on a programmatic ViewObject thus this blog hehehe.
Let's say you have a programmatic viewObject which doesn't rely on a sql query at all for sorting.
But what we want is for DepartmentName to be ordered but anything that does not have a description should be the last one. Take note, we are not using panelCollection here where we can sort multiple columns at once.
So let's add one column to tell us whether this department value is null or not.
Then let's override the setSortBy method on the viewImpl to append our extra sort parameter.
with this, any sort we do will always consider sorting the null descriptions to be the last rows.