ClassNodeComparator.java
01 /**
02  * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
03  */
04 package net.sourceforge.pmd.dcd.graph;
05 
06 import java.util.Comparator;
07 
08 /**
09  * Compares ClassNodes by the name of the class.  Can also compare String class
10  * names to ClassNodes.
11  */
12 public final class ClassNodeComparator implements Comparator {
13 
14   public static final ClassNodeComparator INSTANCE = new ClassNodeComparator();
15 
16   private ClassNodeComparator() {
17   }
18 
19   public int compare(Object obj1, Object obj2) {
20     if (obj1 instanceof String && obj2 instanceof String) {
21       return ((String)obj1).compareTo((String)obj2);
22     else if (obj1 instanceof String) {
23       return ((String)obj1).compareTo(((ClassNode)obj2).getName());
24     else if (obj2 instanceof String) {
25       return ((ClassNode)obj1).getName().compareTo((String)obj2);
26     else {
27       return ((ClassNode)obj1).compareTo((ClassNode)obj2);
28     }
29   }
30 }