package com.revolsys.record.code;
import java.util.Comparator;
import com.revolsys.identifier.Identifier;
import com.revolsys.util.CompareUtil;
public class CodeTableValueComparator implements Comparator<Object> {
private final CodeTable codeTable;
public CodeTableValueComparator(final CodeTable codeTable) {
this.codeTable = codeTable;
}
@Override
public int compare(final Object object1, final Object object2) {
final Identifier identifier1 = Identifier.newIdentifier(object1);
final Identifier identifier2 = Identifier.newIdentifier(object2);
if (identifier1 == null) {
if (identifier2 == null) {
return 0;
} else {
return -1;
}
} else if (identifier2 == null) {
return 1;
} else if (identifier1.equals(identifier2)) {
return 0;
} else {
final Object value1 = this.codeTable.getValue(identifier1);
final Object value2 = this.codeTable.getValue(identifier2);
int compare = CompareUtil.compare(value1, value2);
if (compare == 0) {
compare = identifier1.compareTo(identifier2);
}
return compare;
}
}
}