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

package net.sourceforge.pmd.dcd.graph;

import java.util.Comparator;

/**
 * Compares MemberNodes. FieldNodes are smaller than ConstructorNodes which are
 * smaller than MethodNodes.
 */
public final class MemberNodeComparator implements Comparator<MemberNode> {

    public static final MemberNodeComparator INSTANCE = new MemberNodeComparator();

    private MemberNodeComparator() {
    }

    @Override
    public int compare(MemberNode node1, MemberNode node2) {
        if (node1 instanceof FieldNode) {
            if (node2 instanceof FieldNode) {
                return node1.compareTo(node2);
            } else {
                return -1;
            }
        } else if (node1 instanceof ConstructorNode) {
            if (node2 instanceof FieldNode) {
                return 1;
            } else if (node2 instanceof ConstructorNode) {
                return node1.compareTo(node2);
            } else {
                return -1;
            }
        } else {
            if (node2 instanceof MethodNode) {
                return node1.compareTo(node2);
            } else {
                return 1;
            }
        }
    }
}
