package com.idega.block.dictionary.business;
import com.idega.block.category.data.ICCategory;
import com.idega.block.dictionary.data.Word;
import java.rmi.RemoteException;
import java.text.Collator;
import java.util.*;
import java.util.Comparator;
import com.idega.util.IsCollator;
/**
* Title:
* Description:
* Copyright: Copyright (c) 2001
* Company: idega multimedia
* @author <a href="mailto:laddi@idega.is">laddi@idega.is</a>
* @version 1.0
*/
public class DictionaryComparator implements Comparator {
public static final int WORD_NAME = 1;
public static final int CATEGORY_NAME = 2;
private int sortBy;
private Locale _locale;
public DictionaryComparator() {
this(WORD_NAME);
}
public DictionaryComparator(Locale locale, int toSortBy) {
this.sortBy = toSortBy;
this._locale = locale;
}
public DictionaryComparator(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 WORD_NAME:
result = wordSort(o1, o2);
break;
case CATEGORY_NAME:
result = categorySort(o1, o2);
break;
}
return result;
}
private int wordSort(Object o1, Object o2) {
Word p1 = (Word) o1;
Word p2 = (Word) o2;
String one;
String two;
try {
one = p1.getWord()!=null?p1.getWord():"";
}
catch (RemoteException e) {
one = "";
}
try {
two = p2.getWord()!=null?p2.getWord():"";
}
catch (RemoteException e) {
two = "";
}
return IsCollator.getIsCollator().compare(one,two);
}
private int categorySort(Object o1, Object o2) {
Collator collator = null;
if (this._locale != null) {
collator = Collator.getInstance(this._locale);
}
else {
collator = IsCollator.getIsCollator();
}
ICCategory p1 = (ICCategory) o1;
ICCategory p2 = (ICCategory) o2;
String one = p1.getName()!=null?p1.getName():"";
String two = p2.getName()!=null?p2.getName():"";
return collator.compare(one,two);
}
public boolean equals(Object obj) {
/**@todo: Implement this java.util.Comparator method*/
throw new java.lang.UnsupportedOperationException("Method equals() not yet implemented.");
}
}