/**
 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
 */

package net.sourceforge.pmd.dcd.graph;

import java.util.Comparator;

/**
 * Compares ClassNodes by the name of the class. Can also compare String class
 * names to ClassNodes.
 */
public final class ClassNodeComparator implements Comparator {

    public static final ClassNodeComparator INSTANCE = new ClassNodeComparator();

    private ClassNodeComparator() {
    }

    @Override
    public int compare(Object obj1, Object obj2) {
        if (obj1 instanceof String && obj2 instanceof String) {
            return ((String) obj1).compareTo((String) obj2);
        } else if (obj1 instanceof String) {
            return ((String) obj1).compareTo(((ClassNode) obj2).getName());
        } else if (obj2 instanceof String) {
            return ((ClassNode) obj1).getName().compareTo((String) obj2);
        } else {
            return ((ClassNode) obj1).compareTo((ClassNode) obj2);
        }
    }
}
