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}