in client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java [276:305]
public void setVisibleRangeAndClearData(Range range, boolean forceRangeChangeEvent) {
final ColumnSortInfo sortInfo = getColumnSortList().get(0);
List<Message> sortedList = new ArrayList<Message>(getVisibleItems());
Collections.sort(sortedList, new Comparator<Message>() {
public int compare(Message o1, Message o2) {
Column<?, ?> column = sortInfo.getColumn();
Message a = sortInfo.isAscending() ? o1 : o2;
Message b = sortInfo.isAscending() ? o2 : o1;
if (fromCol.equals(column)) {
return a.getFrom().compareToIgnoreCase(b.getFrom());
}
if (attachedCol.equals(column)) {
return Boolean.valueOf(a.hasAttachment()).compareTo(Boolean.valueOf(b.hasAttachment()));
}
if (dateCol.equals(column)) {
return a.getReceivedDate().compareTo(b.getReceivedDate());
}
if (subjectCol.equals(column)) {
// Remove Re & Fwd, using ugly regex since replaceAll is not
// case-insensitive in client side.
String s1 = a.getSubject().replaceAll("^([Rr][Ee]|[Ff][Ww][Dd]): (.+)$", "$2 ");
String s2 = b.getSubject().replaceAll("^([Rr][Ee]|[Ff][Ww][Dd]): (.+)$", "$2 ");
return s1.compareTo(s2);
}
return 0;
}
});
dataProvider.updateRowData(range.getStart(), sortedList);
}