package org.limewire.ui.swing.table;
import java.util.Comparator;
import org.limewire.core.api.FilePropertyKey;
import org.limewire.core.api.library.PropertiableFile;
/**
* Compares the quality value for a pair of PropertiableFile objects.
*/
public class QualityComparator implements Comparator<PropertiableFile> {
@Override
public int compare(PropertiableFile o1, PropertiableFile o2) {
Object quality1 = o1.getProperty(FilePropertyKey.QUALITY);
Object quality2 = o2.getProperty(FilePropertyKey.QUALITY);
if (quality1 instanceof Number) {
if (quality2 instanceof Number) {
int q1 = ((Number) quality1).intValue();
int q2 = ((Number) quality2).intValue();
return (q1 == q2)? compareBitRate(o1, o2) : (q1 < q2)? -1 : 1;
} else {
return 1;
}
} else {
return (quality2 instanceof Number) ? -1 : 0;
}
}
private int compareBitRate(PropertiableFile o1, PropertiableFile o2){
Object bitRate1 = o1.getProperty(FilePropertyKey.BITRATE);
Object bitRate2 = o2.getProperty(FilePropertyKey.BITRATE);
if (bitRate1 instanceof Number) {
if (bitRate2 instanceof Number) {
int b1 = ((Number) bitRate1).intValue();
int b2 = ((Number) bitRate2).intValue();
return (b1 == b2)? 0 : (b1 < b2)? -1 : 1;
} else {
return 1;
}
} else {
return (bitRate2 instanceof Number) ? -1 : 0;
}
}
}