// This product is provided under the terms of EPL (Eclipse Public License) // version 1.0. // // The full license text can be read from: http://www.eclipse.org/org/documents/epl-v10.php package org.dtangler.javaengine.dependencyengine; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import org.dtangler.javaengine.types.JavaClass; public class InnerClassNormalizer { public Set<JavaClass> normalize(Set<JavaClass> classes) { Map<String, Set<JavaClass>> allInnerClasses = getInnerClasses(classes); Set<JavaClass> result = new HashSet(); for (JavaClass clazz : classes) { if (clazz.isInnerClass()) continue; Set<JavaClass> innerClasses = allInnerClasses.get(clazz .getBaseClassName()); if (innerClasses != null) clazz.addInnerClasses(innerClasses); result.add(clazz); } return result; } private Map<String, Set<JavaClass>> getInnerClasses(Set<JavaClass> classes) { Map<String, Set<JavaClass>> result = new HashMap(); for (JavaClass clazz : classes) { if (!clazz.isInnerClass()) continue; Set<JavaClass> innerClasses = result.get(clazz.getBaseClassName()); if (innerClasses == null) { innerClasses = new HashSet(); result.put(clazz.getBaseClassName(), innerClasses); } innerClasses.add(clazz); } return result; } }