public int compare(Object o1, Object o2) { PropertyDescriptor p1 = (PropertyDescriptor) o1; PropertyDescriptor p2 = (PropertyDescriptor) o2; Integer i1 = (Integer) p1.getValue(SORT_ORDER); Integer i2 = (Integer) p2.getValue(SORT_ORDER); if (i1 == null && i2 == null) { return p1.getName().compareTo(p2.getName()); } else if (i1 != null) { return i1.compareTo(i2); } else { return i2.compareTo(i1) * -1; } }