package is.idega.idegaweb.campus.business;
import java.text.Collator;
import java.util.Comparator;
import java.util.Locale;
/**
* Title:
* Description:
* Copyright: Copyright (c) 2001
* Company:
* @author
* @version 1.0
*/
public class HabitantsComparator implements Comparator {
public static final int NAME = 1;
public static final int APARTMENT = 2;
public static final int FLOOR = 3;
public static final int ADDRESS = 4;
private Locale locale = Locale.ENGLISH;
private Collator collator = null;
private int sortBy;
public HabitantsComparator(Locale locale) {
sortBy = NAME;
this.locale = locale;
this.collator = Collator.getInstance(locale);
}
public HabitantsComparator(Locale locale,int toSortBy) {
sortBy = toSortBy;
this.locale = locale;
this.collator = Collator.getInstance(locale);
}
public void sortBy(int toSortBy) {
sortBy = toSortBy;
}
public int compare(Object o1, Object o2) {
int result = 0;
switch (sortBy) {
case NAME :
result = nameCompare(o1,o2);
break;
case APARTMENT :
result = apartmentCompare(o1,o2);
if (result == 0)
result = nameCompare(o1,o2);
break;
case ADDRESS :
result = addressCompare(o1,o2);
if (result == 0)
result = apartmentCompare(o1,o2);
if (result == 0)
result = nameCompare(o1,o2);
break;
case FLOOR :
result = floorCompare(o1,o2);
if (result == 0)
result = addressCompare(o1,o2);
if (result == 0)
result = apartmentCompare(o1,o2);
if (result == 0)
result = nameCompare(o1,o2);
break;
}
return(result);
}
public boolean equals(Object obj) {
if (compare(this,obj) == 0)
return(true);
else
return(false);
}
public int nameCompare(Object o1, Object o2) {
HabitantsCollector r1 = (HabitantsCollector) o1;
HabitantsCollector r2 = (HabitantsCollector) o2;
int result = 0;
String one = r1.getName()!=null?r1.getName():"";
String two = r2.getName()!=null?r2.getName():"";
result = collator.compare(one,two);
/*
String one = r1.getFirstName()!=null?r1.getFirstName():"";
String two = r2.getFirstName()!=null?r2.getFirstName():"";
result = IsCollator.getIsCollator().compare(one,two);
if (result == 0){
one = r1.getLastName()!=null?r1.getLastName():"";
two = r2.getLastName()!=null?r2.getLastName():"";
result = IsCollator.getIsCollator().compare(one,two);
}
if (result == 0){
one = r1.getMiddleName()!=null?r1.getMiddleName():"";
two = r2.getMiddleName()!=null?r2.getMiddleName():"";
result = IsCollator.getIsCollator().compare(one,two);
}
*/
return result;
}
public int apartmentCompare(Object o1, Object o2) {
HabitantsCollector r1 = (HabitantsCollector) o1;
HabitantsCollector r2 = (HabitantsCollector) o2;
int result = 0;
String one = r1.getApartment()!=null?r1.getApartment():"";
String two = r2.getApartment()!=null?r2.getApartment():"";
result = collator.compare(one,two);
return result;
}
public int floorCompare(Object o1, Object o2) {
HabitantsCollector r1 = (HabitantsCollector) o1;
HabitantsCollector r2 = (HabitantsCollector) o2;
int result = 0;
String one = r1.getFloor()!=null?r1.getFloor():"";
String two = r2.getFloor()!=null?r2.getFloor():"";
result = collator.compare(one,two);
return result;
}
public int addressCompare(Object o1, Object o2) {
HabitantsCollector r1 = (HabitantsCollector) o1;
HabitantsCollector r2 = (HabitantsCollector) o2;
int result = 0;
String one = r1.getAddress()!=null?r1.getAddress():"";
String two = r2.getAddress()!=null?r2.getAddress():"";
result = collator.compare(one,two);
return result;
}
}