package is.idega.idegaweb.golf.service;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Vector;
import com.idega.util.IsCollator;
/**
* Title:
* Description:
* Copyright: Copyright (c) 2001
* Company: idega multimedia
* @author <a href="mailto:aron@idega.is">aron@idega.is</a>
* @version 1.0
*/
public class ReportMemberComparator implements Comparator {
public static final int NAME = 1;
public static final int SOCIAL = 2;
public static final int ADDRESS = 3;
public static final int EMAIL = 4;
public static final int HANDICAP = 5;
public static final int BALANCE = 6;
public static final int PHONE = 7;
public static final int LOCKER = 8;
public static final int STATUS = 9;
private int sortBy;
public ReportMemberComparator() {
sortBy = NAME;
}
public ReportMemberComparator(int toSortBy) {
sortBy = toSortBy;
}
public void sortBy(int toSortBy) {
sortBy = toSortBy;
}
public int compare(Object o1, Object o2) {
ReportMember p1 = (ReportMember) o1;
ReportMember p2 = (ReportMember) o2;
int result = 0;
switch (this.sortBy) {
case NAME : result = nameSort(o1, o2);
break;
case SOCIAL : result = p1.getSocial().compareTo(p2.getSocial());
if(result == 0)
result = nameSort(o1, o2);
break;
case ADDRESS : result = IsCollator.getIsCollator().compare(p1.getAddress(),p2.getAddress());
// result = p1.getAddress().compareTo(p2.getAddress());
if(result == 0)
result = nameSort(o1, o2);
break;
case EMAIL : result = p1.getEmail().compareTo(p2.getEmail());
if(result == 0)
result = nameSort(o1, o2);
break;
case HANDICAP : result = p1.getHandicap().compareTo(p2.getHandicap());
if(result == 0)
result = nameSort(o1, o2);
break;
case BALANCE : result = new Integer(p1.getBalance()).compareTo(new Integer(p2.getBalance()));
if(result == 0)
result = nameSort(o1, o2);
break;
case PHONE : result = p1.getPhone().compareTo(p2.getPhone());
if(result == 0)
result = nameSort(o1, o2);
break;
case LOCKER : result = p1.getLocker().compareTo(p2.getLocker());
if(result == 0)
result = nameSort(o1, o2);
break;
case STATUS : result = p1.getStatus().compareTo(p2.getStatus());
if(result == 0)
result = nameSort(o1, o2);
break;
default:
break;
}
return result;
}
private int nameSort(Object o1, Object o2) {
ReportMember p1 = (ReportMember) o1;
ReportMember p2 = (ReportMember) o2;
// check on first name first...
//int result = p1.getFirstName().compareTo(p2.getFirstName());
int result = IsCollator.getIsCollator().compare(p1.getFirstName(),p2.getFirstName());
// if equal, check middle name...
if (result == 0){
//result = p1.getMiddleName().compareTo(p2.getMiddleName());
result = IsCollator.getIsCollator().compare(p1.getMiddleName(),p2.getMiddleName());
}
// if equal, check last name...
if (result == 0){
//result = p1.getLastName().compareTo(p2.getLastName());
result = IsCollator.getIsCollator().compare(p1.getLastName(),p2.getLastName());
}
return result;
}
public boolean equals(Object obj) {
/**@todo: Implement this java.util.Comparator method*/
throw new java.lang.UnsupportedOperationException("Method equals() not yet implemented.");
}
public Iterator sort(ReportMember[] members, int toSortBy) {
sortBy = toSortBy;
List list = new LinkedList();
for(int i = 0; i < members.length; i++) {
list.add(members[i]);
}
Collections.sort(list, this);
return list.iterator();
}
public Iterator sort(ReportMember[] members) {
List list = new LinkedList();
for(int i = 0; i < members.length; i++) {
list.add(members[i]);
}
Collections.sort(list, this);
return list.iterator();
}
public ReportMember[] sortedArray(ReportMember[] members, int toSortBy) {
sortBy = toSortBy;
List list = new LinkedList();
for(int i = 0; i < members.length; i++) {
list.add(members[i]);
}
Collections.sort(list, this);
Object[] objArr = list.toArray();
for(int i = 0; i < objArr.length; i++) {
members[i] = (ReportMember) objArr[i];
}
return (members);
}
public Vector sortedArray(Vector list) {
Collections.sort(list, this);
return list;
}
public ReportMember[] sortedArray(ReportMember[] members) {
List list = new LinkedList();
for(int i = 0; i < members.length; i++) {
list.add(members[i]);
}
Collections.sort(list, this);
Object[] objArr = list.toArray();
for(int i = 0; i < objArr.length; i++) {
members[i] = (ReportMember) objArr[i];
}
return (members);
}
public ReportMember[] reverseSortedArray(ReportMember[] members, int toSortBy) {
sortBy = toSortBy;
List list = new LinkedList();
for(int i = 0; i < members.length; i++) {
list.add(members[i]);
}
Collections.sort(list, this);
Collections.reverse(list);
Object[] objArr = list.toArray();
for(int i = 0; i < objArr.length; i++) {
members[i] = (ReportMember) objArr[i];
}
return (members);
}
}