Sorting the Data
To sort the data, we first need
to add a few more things to the
ReportHandler
class:
package com.mycompany.expense; import java.util.Collections; import java.util.Comparator; ... public class ReportHandler { ... private static final Comparator ASC_TITLE_COMPARATOR = new Comparator( ) { public int compare(Object o1, Object o2) { String s1 = ((Report) o1).getTitle( ); String s2 = ((Report) o2).getTitle( ); return s1.compareTo(s2); } }; private static final Comparator DESC_TITLE_COMPARATOR = new Comparator( ) { public int compare(Object o1, Object o2) { String s1 = ((Report) o1).getTitle( ); String s2 = ((Report) o2).getTitle( ); return s2.compareTo(s1); } }; ...
A java.util.Comparator
instance
compares values, for instance, when sorting a collection. Its
compare()
method is called
with the two objects to compare and returns
a negative value if the first is less than the second, zero if they
are equal, or a positive value if the first is greater than the
second.
I create two static Comparator
instances for each
column: one for ascending order and one for descending order. I show
you only the ones for the Title column here, but the others are
identical (with the exception of which Report
property they compare).
To sort the reports list, I add a sortReports()
method:
private void sortReports(List reports) { switch (sortBy) { case SORT_BY_TITLE: Collections.sort(reports, ascending ? ASC_TITLE_COMPARATOR : DESC_TITLE_COMPARATOR); break; case SORT_BY_OWNER: Collections.sort(reports, ...
Get JavaServer Faces now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.