// $HeadURL$ // $Id$ // // Copyright © 2006, 2010, 2011, 2012 by the President and Fellows of Harvard College. // // Screensaver is an open-source project developed by the ICCB-L and NSRB labs // at Harvard Medical School. This software is distributed under the terms of // the GNU General Public License. package edu.harvard.med.screensaver.model.users; import edu.harvard.med.screensaver.util.ComparableNullSafeComparator; import edu.harvard.med.screensaver.util.NullSafeComparator; public class ScreensaverUserComparator<U extends ScreensaverUser> extends NullSafeComparator<U> { private static final NullSafeComparator<Integer> NullSafeEntityIdComparator = new ComparableNullSafeComparator<Integer>(); public static <U extends ScreensaverUser> ScreensaverUserComparator<U> getInstance() { return new ScreensaverUserComparator<U>(); } @Override protected int doCompare(U u1, U u2) { int result = u1.getFullNameLastFirst().compareTo(u2.getFullNameLastFirst()); if (result == 0) { if (u1.getEntityId() == null && u2.getEntityId() == null && u1 != u2) { throw new IllegalStateException("cannot determine ordering of ScreensaverUsers that are missing entity IDs"); } result = NullSafeEntityIdComparator.compare(u1.getEntityId(), u2.getEntityId()); } return result; } }