package org.objectstyle.wolips.bindings.utils; import java.util.Comparator; import java.util.List; import org.eclipse.jdt.core.IType; import org.objectstyle.wolips.bindings.wod.TypeCache; public class TypeDepthComparator implements Comparator<IType> { private TypeCache _cache; public TypeDepthComparator(TypeCache cache) { _cache = cache; } public int compare(IType o1, IType o2) { int comparison = 0; try { if (o1 == null) { if (o2 == null) { comparison = 0; } else { comparison = -1; } } else if (o2 == null) { comparison = 1; } else { List<IType> o1Types = _cache.getSupertypesOf(o1); List<IType> o2Types = _cache.getSupertypesOf(o2); if (o1Types.size() == o2Types.size()) { comparison = 0; } else if (o1Types.size() < o2Types.size()) { comparison = 1; } else { comparison = -1; } } } catch (Throwable t) { t.printStackTrace(); } return comparison; } }