package com.idega.block.trade.stockroom.business;
import com.idega.util.IsCollator;
import com.idega.util.IWTimestamp;
import java.util.*;
import java.util.Comparator;
import com.idega.block.trade.stockroom.data.*;
/**
* 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 TravelAddressComparator implements Comparator {
public static final int NAME = 1;
public static final int TIME = 2;
public static final int NAME_TIME = 3;
private int sortBy;
public TravelAddressComparator() {
this.sortBy = NAME_TIME;
}
public TravelAddressComparator(int toSortBy) {
this.sortBy = toSortBy;
}
public void sortBy(int toSortBy) {
this.sortBy = toSortBy;
}
public int compare(Object o1, Object o2) {
int result = 0;
switch (this.sortBy) {
case NAME : result = nameSort(o1, o2);
break;
case TIME : result = timeSort(o1,o2);
break;
case NAME_TIME : result = nameTimeSort(o1,o2);
break;
}
return result;
}
private int nameSort(Object o1, Object o2) {
TravelAddress p1 = (TravelAddress) o1;
TravelAddress p2 = (TravelAddress) o2;
String one = p1.getStreetName()!=null?p1.getStreetName():"";
String two = p2.getStreetName()!=null?p2.getStreetName():"";
return IsCollator.getIsCollator().compare(one,two);
}
private int timeSort(Object o1, Object o2) {
TravelAddress p1 = (TravelAddress) o1;
TravelAddress p2 = (TravelAddress) o2;
IWTimestamp t1 = new IWTimestamp(p1.getTime());
IWTimestamp t2 = new IWTimestamp(p2.getTime());
if (t1.isLaterThan(t2)) {
return 1;
}else if (t2.isLaterThan(t1)) {
return -1;
}else {
return 0;
}
}
private int nameTimeSort(Object o1, Object o2) {
int returner = 0;
returner = nameSort(o1, o2);
if (returner == 0) {
returner = timeSort(o1, o2);
}
return returner;
}
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(Timeframe[] tFrames, int toSortBy) {
this.sortBy = toSortBy;
List list = new LinkedList();
for(int i = 0; i < tFrames.length; i++) {
list.add(tFrames[i]);
}
Collections.sort(list, this);
return list.iterator();
}
public Iterator sort(Timeframe[] tFrames) {
List list = new LinkedList();
for(int i = 0; i < tFrames.length; i++) {
list.add(tFrames[i]);
}
Collections.sort(list, this);
return list.iterator();
}
public Timeframe[] sortedArray(Timeframe[] tFrames, int toSortBy) {
this.sortBy = toSortBy;
List list = new LinkedList();
for(int i = 0; i < tFrames.length; i++) {
list.add(tFrames[i]);
}
Collections.sort(list, this);
Object[] objArr = list.toArray();
for(int i = 0; i < objArr.length; i++) {
tFrames[i] = (Timeframe) objArr[i];
}
return (tFrames);
}
public Vector sortedArray(Vector list) {
Collections.sort(list, this);
return list;
}
public Timeframe[] sortedArray(Timeframe[] tFrame) {
List list = new LinkedList();
for(int i = 0; i < tFrame.length; i++) {
list.add(tFrame[i]);
}
Collections.sort(list, this);
Object[] objArr = list.toArray();
for(int i = 0; i < objArr.length; i++) {
tFrame[i] = (Timeframe) objArr[i];
}
return (tFrame);
}
public Timeframe[] reverseSortedArray(Timeframe[] tFrame, int toSortBy) {
this.sortBy = toSortBy;
List list = new LinkedList();
for(int i = 0; i < tFrame.length; i++) {
list.add(tFrame[i]);
}
Collections.sort(list, this);
Collections.reverse(list);
Object[] objArr = list.toArray();
for(int i = 0; i < objArr.length; i++) {
tFrame[i] = (Timeframe) objArr[i];
}
return (tFrame);
}
}