001package org.dcm4che3.conf.core.util; 002 003import org.dcm4che3.conf.core.api.ConfigurableClassExtension; 004 005import java.util.ArrayList; 006import java.util.HashMap; 007import java.util.List; 008import java.util.Map; 009 010/** 011 * @author Roman K 012 */ 013public class Extensions { 014 public static Map<Class, List<Class>> getAMapOfExtensionsByBaseExtension(List<ConfigurableClassExtension> allExtensions) { 015 016 Map<Class, List<Class>> extensions = new HashMap<Class, List<Class>>(); 017 018 for (ConfigurableClassExtension extension : allExtensions) { 019 Class baseExtensionClass = extension.getBaseClass(); 020 021 List<Class> extensionsForBaseClass = extensions.get(baseExtensionClass); 022 023 if (extensionsForBaseClass == null) 024 extensions.put(baseExtensionClass, extensionsForBaseClass = new ArrayList<Class>()); 025 026 // don't put duplicates 027 if (!extensionsForBaseClass.contains(extension.getClass())) 028 extensionsForBaseClass.add(extension.getClass()); 029 030 } 031 return extensions; 032 } 033 034 public static Class<?> getExtensionClassBySimpleName(String extensionSimpleName, List allExtensionClasses) throws ClassNotFoundException { 035 036 for (Class aClass : (List<Class>) allExtensionClasses) { 037 if (aClass.getSimpleName().equals(extensionSimpleName)) return aClass; 038 } 039 040 throw new ClassNotFoundException(); 041 } 042}