public void setVisibleRangeAndClearData()

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);
    }