@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public int compare(PersonWithAddress pwa1, PersonWithAddress pwa2) {
Comparable compareObject1 = null;
Comparable compareObject2 = null;
Address address1 = pwa1.getAddress();
Address address2 = pwa2.getAddress();
switch (colIdx) {
case DataModelConstants.FIRSTNAME_COLUMN_POSITION:
compareObject1 = pwa1.getFirstName();
compareObject2 = pwa2.getFirstName();
break;
case DataModelConstants.LASTNAME_COLUMN_POSITION:
compareObject1 = pwa1.getLastName();
compareObject2 = pwa2.getLastName();
break;
case DataModelConstants.GENDER_COLUMN_POSITION:
compareObject1 = pwa1.getGender().ordinal();
compareObject2 = pwa2.getGender().ordinal();
break;
case DataModelConstants.MARRIED_COLUMN_POSITION:
compareObject1 = pwa1.isMarried();
compareObject2 = pwa2.isMarried();
break;
case DataModelConstants.BIRTHDAY_COLUMN_POSITION:
compareObject1 = pwa1.getBirthday();
compareObject2 = pwa2.getBirthday();
break;
case DataModelConstants.STREET_COLUMN_POSITION:
compareObject1 = address1.getStreet();
compareObject2 = address2.getStreet();
break;
case DataModelConstants.HOUSENUMBER_COLUMN_POSITION:
compareObject1 = address1.getHousenumber();
compareObject2 = address2.getHousenumber();
break;
case DataModelConstants.POSTALCODE_COLUMN_POSITION:
compareObject1 = address1.getPostalCode();
compareObject2 = address2.getPostalCode();
break;
case DataModelConstants.CITY_COLUMN_POSITION:
compareObject1 = address1.getCity();
compareObject2 = address2.getCity();
break;
}
int result = 0;