ImporterRegistry.java :  » JBoss » jboss-seam-2.2.0 » org » jboss » seam » wiki » core » upload » importers » metamodel » Java Open Source

Java Open Source » JBoss » jboss seam 2.2.0 
jboss seam 2.2.0 » org » jboss » seam » wiki » core » upload » importers » metamodel » ImporterRegistry.java
package org.jboss.seam.wiki.core.upload.importers.metamodel;

import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Create;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.Startup;
import org.jboss.seam.annotations.intercept.BypassInterceptors;
import org.jboss.seam.log.LogProvider;
import org.jboss.seam.log.Logging;
import org.jboss.seam.wiki.core.upload.importers.annotations.UploadImporter;
import org.jboss.seam.wiki.util.AnnotationDeploymentHelper;

import java.util.*;

@Name("importerRegistry")
@Scope(ScopeType.APPLICATION)
@Startup
@BypassInterceptors

public class ImporterRegistry {

    private static final LogProvider log = Logging.getLogProvider(ImporterRegistry.class);

    SortedMap<String, UploadImporter> importerComponents = new TreeMap<String, UploadImporter>();

    @Create
    public void startup() {

        log.debug("initializing upload importer registry");

        Set<Class<?>> importerClasses = AnnotationDeploymentHelper.getAnnotatedClasses(UploadImporter.class);
        if (importerClasses == null) return;

        for (Class<?> importerClass : importerClasses) {

            importerComponents.put(
                importerClass.getAnnotation(Name.class).value(),
                importerClass.getAnnotation(UploadImporter.class)
            );
            log.debug("added upload importer to registry: " + importerClass.getAnnotation(Name.class).value());
        }
    }

    public SortedMap<String, UploadImporter> getImporterComponents() {
        return importerComponents;
    }

    public List<String> getImporterComponentNames() {
        return new ArrayList(importerComponents.keySet());
    }

    public List<String> getAvailableImporters(String mimeType, String extension) {
        List<String> availableImporters = new ArrayList<String>();
        for (Map.Entry<String, UploadImporter> importerEntry : importerComponents.entrySet()) {
            List<String> supportedMimeTypes = Arrays.asList(importerEntry.getValue().handledMimeTypes());
            List<String> supportedExtensions = Arrays.asList(importerEntry.getValue().handledExtensions());
            if (supportedMimeTypes.contains(mimeType) && supportedExtensions.contains(extension) ) {
                availableImporters.add(importerEntry.getKey());
            }
        }
        return availableImporters;
    }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.