package fr.openwide.core.jpa.more.business.localization.util;
import java.io.Serializable;
import java.text.Collator;
import java.util.Comparator;
import java.util.Locale;
import fr.openwide.core.commons.util.ordering.AbstractNullSafeComparator;
import fr.openwide.core.commons.util.ordering.SerializableCollator;
import fr.openwide.core.jpa.more.business.localization.model.AbstractLocalizedText;
public abstract class AbstractLocalizedTextComparator<T extends AbstractLocalizedText> extends AbstractNullSafeComparator<T>
implements Serializable {
private static final long serialVersionUID = -6565287329417568609L;
private final Locale locale;
private final Comparator<String> textComparator;
public AbstractLocalizedTextComparator(Locale locale) {
if (locale == null) {
throw new IllegalStateException("Locale missing.");
}
this.locale = locale;
SerializableCollator collator = new SerializableCollator(locale);
collator.setStrength(Collator.PRIMARY);
this.textComparator = collator.nullsLast();
}
@Override
protected int compareNotNullObjects(T left, T right) {
return textComparator.compare(left.get(locale), right.get(locale));
}
}