package com.idega.block.book.business;
import java.rmi.RemoteException;
import java.util.Comparator;
import com.idega.block.book.data.Author;
import com.idega.block.book.data.Book;
import com.idega.block.book.data.Publisher;
import com.idega.block.category.data.ICCategory;
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 BookComparator implements Comparator {
public static final int BOOK_NAME = 1;
public static final int AUTHOR_NAME = 2;
public static final int PUBLISHER_NAME = 3;
public static final int CATEGORY_NAME = 4;
public static final int PUBLISH_YEAR = 5;
private int sortBy;
public BookComparator() {
this(BOOK_NAME);
}
public BookComparator(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 BOOK_NAME:
result = bookSort(o1, o2);
break;
case AUTHOR_NAME:
result = authorSort(o1, o2);
break;
case PUBLISHER_NAME:
result = publisherSort(o1, o2);
break;
case CATEGORY_NAME:
result = categorySort(o1, o2);
break;
case PUBLISH_YEAR:
result = yearSort(o1, o2);
break;
}
return result;
}
private int bookSort(Object o1, Object o2) {
Book p1 = (Book) o1;
Book p2 = (Book) o2;
String one;
String two;
try {
one = p1.getName()!=null?p1.getName():"";
}
catch (RemoteException e) {
one = "";
}
try {
two = p2.getName()!=null?p2.getName():"";
}
catch (RemoteException e) {
two = "";
}
return IsCollator.getIsCollator().compare(one,two);
}
private int authorSort(Object o1, Object o2) {
Author p1 = (Author) o1;
Author p2 = (Author) o2;
String one;
String two;
try {
one = p1.getName()!=null?p1.getName():"";
}
catch (RemoteException e) {
one = "";
}
try {
two = p2.getName()!=null?p2.getName():"";
}
catch (RemoteException e) {
two = "";
}
return IsCollator.getIsCollator().compare(one,two);
}
private int publisherSort(Object o1, Object o2) {
Publisher p1 = (Publisher) o1;
Publisher p2 = (Publisher) o2;
String one;
String two;
try {
one = p1.getName()!=null?p1.getName():"";
}
catch (RemoteException e) {
one = "";
}
try {
two = p2.getName()!=null?p2.getName():"";
}
catch (RemoteException e) {
two = "";
}
return IsCollator.getIsCollator().compare(one,two);
}
private int categorySort(Object o1, Object o2) {
ICCategory p1 = (ICCategory) o1;
ICCategory p2 = (ICCategory) o2;
String one = p1.getName()!=null?p1.getName():"";
String two = p2.getName()!=null?p2.getName():"";
return IsCollator.getIsCollator().compare(one,two);
}
private int yearSort(Object o1, Object o2) {
Book p1 = (Book) o1;
Book p2 = (Book) o2;
int year1;
int year2;
try {
year1 = p1.getYear();
}
catch (RemoteException e) {
year1 = 0;
}
try {
year2 = p2.getYear();
}
catch (RemoteException e) {
year2 = 0;
}
if ( year1 > year2 ) {
return 1;
}
else if ( year1 < year2 ) {
return -1;
}
else {
return bookSort(p1,p2);
}
}
public boolean equals(Object obj) {
/**@todo: Implement this java.util.Comparator method*/
throw new java.lang.UnsupportedOperationException("Method equals() not yet implemented.");
}
}