UserVOComparator.java

package org.andromda.timetracker.vo;

import java.util.Comparator;

/**
 *
 */
public class UserVOComparator implements Comparator<UserVO>
{
    /**
     * Compares two UserVO objects based on their usernames. If the usernames are
     * not available (or null), it compares on id. <p>
     *
     * The comparison is null safe and places null objects less than non-null objects.<p>
     * @param o1
     * @param o2
     * @return result
     */
    @Override
    public int compare(UserVO o1, UserVO o2) {
        int result = 0; // assume equal

        if (o1 == null) {
            result = (o2 == null) ? 0 : -1;
        }
        else if (o2 == null) {
            result = 1;
        }
        else if ((o1.getUsername() != null) && (o2.getUsername() != null)) {
            // Both not-null, compare usernames
            result = o1.getUsername().compareTo(o2.getUsername());
        }
        else if ((o1.getId() != null) && (o2.getId() != null)) {
            // Both not-null but no names, check id's
            result = o1.getId().compareTo(o2.getId());
        }

        return result;
    }
}