package fr.openwide.core.jpa.security.business.person.util; import fr.openwide.core.jpa.business.generic.util.AbstractGenericEntityComparator; import fr.openwide.core.jpa.security.business.person.model.GenericUser; public class AbstractUserComparator extends AbstractGenericEntityComparator<Long, GenericUser<?, ?>> { private static final long serialVersionUID = 5465095061690808293L; private static final AbstractUserComparator INSTANCE = new AbstractUserComparator(); public static AbstractUserComparator get() { return INSTANCE; } @Override protected int compareNotNullObjects(GenericUser<?, ?> left, GenericUser<?, ?> right) { @SuppressWarnings({ "unchecked", "rawtypes" }) // Hack allowing applications to override user order. Will work as expected as long as there is only one user type. int order = ((GenericUser)left).compareTo((GenericUser)right); if (order == 0) { order = super.compareNotNullObjects(left, right); } return order; } }