/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package org.primefaces.examples.view; import java.util.Comparator; import org.primefaces.examples.domain.Car; import org.primefaces.model.SortOrder; public class LazySorter implements Comparator<Car> { private String sortField; private SortOrder sortOrder; public LazySorter(String sortField, SortOrder sortOrder) { this.sortField = sortField; this.sortOrder = sortOrder; } public int compare(Car car1, Car car2) { try { Object value1 = Car.class.getField(this.sortField).get(car1); Object value2 = Car.class.getField(this.sortField).get(car2); int value = ((Comparable)value1).compareTo(value2); return SortOrder.ASCENDING.equals(sortOrder) ? value : -1 * value; } catch(Exception e) { throw new RuntimeException(); } } }