[jboss-cvs] jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/upload/importers/metamodel ...
Christian Bauer
christian at hibernate.org
Tue Dec 18 23:29:29 EST 2007
User: cbauer
Date: 07/12/18 23:29:29
Added: examples/wiki/src/main/org/jboss/seam/wiki/core/upload/importers/metamodel
Importer.java AbstractImporter.java
ImporterRegistry.java
Log:
Major rewrite of the most of the application
Revision Changes Path
1.1 date: 2007/12/19 04:29:28; author: cbauer; state: Exp;jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/upload/importers/metamodel/Importer.java
Index: Importer.java
===================================================================
package org.jboss.seam.wiki.core.upload.importers.metamodel;
import org.jboss.seam.wiki.core.upload.importers.annotations.UploadImporter;
import org.jboss.seam.annotations.Name;
public class Importer implements Comparable {
private Class clazz;
private String componentName;
private String[] handledMimeTypes;
private String[] handledExtensions;
private String description;
public Importer(Class<?> clazz) {
this.clazz = clazz;
this.componentName = clazz.getAnnotation(Name.class).value();
this.handledMimeTypes = clazz.getAnnotation(UploadImporter.class).handledMimeTypes();
this.handledExtensions = clazz.getAnnotation(UploadImporter.class).handledExtensions();
this.description = clazz.getAnnotation(UploadImporter.class).description();
}
public Class getClazz() {
return clazz;
}
public String getComponentName() {
return componentName;
}
public String[] getHandledMimeTypes() {
return handledMimeTypes;
}
public String[] getHandledExtensions() {
return handledExtensions;
}
public String getDescription() {
return description;
}
public String toString() {
return "importer class: " + getClazz().getName();
}
public int compareTo(Object o) {
Importer other = (Importer)o;
return this.getDescription().compareTo(other.getDescription());
}
}
1.1 date: 2007/12/19 04:29:29; author: cbauer; state: Exp;jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/upload/importers/metamodel/AbstractImporter.java
Index: AbstractImporter.java
===================================================================
package org.jboss.seam.wiki.core.upload.importers.metamodel;
import org.jboss.seam.annotations.Observer;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.ScopeType;
import org.jboss.seam.faces.FacesMessages;
import org.jboss.seam.wiki.core.model.WikiUpload;
import javax.persistence.EntityManager;
import java.util.Set;
@Scope(ScopeType.APPLICATION)
public abstract class AbstractImporter {
@Observer("Importers.addImporter")
public void add(Set<AbstractImporter> importerComponents) {
importerComponents.add(this);
}
protected FacesMessages getFacesMessages() {
return FacesMessages.instance();
}
public abstract boolean handleImport(EntityManager em, WikiUpload file);
}
1.1 date: 2007/12/19 04:29:29; author: cbauer; state: Exp;jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/upload/importers/metamodel/ImporterRegistry.java
Index: ImporterRegistry.java
===================================================================
package org.jboss.seam.wiki.core.upload.importers.metamodel;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.Logger;
import org.jboss.seam.annotations.Observer;
import org.jboss.seam.ScopeType;
import org.jboss.seam.wiki.core.upload.importers.annotations.UploadImporter;
import org.jboss.seam.core.Events;
import org.jboss.seam.log.Log;
import java.util.*;
@Name("importerRegistry")
@Scope(ScopeType.APPLICATION)
public class ImporterRegistry {
@Logger
static Log log;
Map<String, Importer> importersByName = new HashMap<String, Importer>();
List<Importer> importers = new ArrayList<Importer>();
// TODO: Fix importers
//@Observer("Wiki.started")
public void scanForFileImporters() {
log.debug("initializing file importer registry");
importers.clear();
importersByName.clear();
// Fire an event and let all listeners add themself into the given collection
Set<AbstractImporter> importerComponents = new HashSet<AbstractImporter>();
Events.instance().raiseEvent("Importers.addImporter", importerComponents);
log.debug("found file importer components: " + importerComponents.size());
for (AbstractImporter importerComponent : importerComponents) {
if (importerComponent.getClass().isAnnotationPresent(UploadImporter.class)) {
Importer importer = new Importer(importerComponent.getClass());
importers.add(importer);
importersByName.put(importer.getComponentName(), importer);
}
}
log.debug("added file importers to registry: " + importers.size());
// Sort entities
Collections.sort(importers);
if (log.isTraceEnabled()) {
for (Importer importer : importers) {
log.trace(importer);
}
}
}
public Map<String, Importer> getImportersByName() {
return importersByName;
}
public List<Importer> getImporters() {
return importers;
}
public List<Importer> getAvailableImporters(String mimeType, String extension) {
List<Importer> availableImporters = new ArrayList<Importer>();
for (Importer importer : importers) {
List<String> supportedMimeTypes = Arrays.asList(importer.getHandledMimeTypes());
List<String> supportedExtensions = Arrays.asList(importer.getHandledExtensions());
if (supportedMimeTypes.contains(mimeType) && supportedExtensions.contains(extension) ) {
availableImporters.add(importer);
}
}
return availableImporters;
}
}
More information about the jboss-cvs-commits
mailing list