[jboss-cvs] jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action ...
Christian Bauer
christian at hibernate.org
Mon Aug 27 18:22:29 EDT 2007
User: cbauer
Date: 07/08/27 18:22:29
Modified: examples/wiki/src/main/org/jboss/seam/wiki/core/action
FileHome.java NodeHome.java
Log:
New file importer infrastructure plus first Zip/Jar file importer
Revision Changes Path
1.8 +56 -10 jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action/FileHome.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: FileHome.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action/FileHome.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- FileHome.java 25 Aug 2007 17:59:24 -0000 1.7
+++ FileHome.java 27 Aug 2007 22:22:28 -0000 1.8
@@ -6,26 +6,36 @@
import org.jboss.seam.annotations.*;
import org.jboss.seam.ScopeType;
+import org.jboss.seam.Component;
import org.jboss.seam.wiki.core.ui.FileMetaMap;
import org.jboss.seam.wiki.core.model.File;
import org.jboss.seam.wiki.core.model.ImageMetaInfo;
+import org.jboss.seam.wiki.core.importers.metamodel.Importer;
+import org.jboss.seam.wiki.core.importers.metamodel.AbstractImporter;
+import org.jboss.seam.wiki.core.importers.metamodel.ImporterRegistry;
import org.jboss.seam.wiki.util.WikiUtil;
-import java.util.Map;
+import java.util.*;
+
+import net.sf.jmimemagic.Magic;
+import net.sf.jmimemagic.MagicMatchNotFoundException;
@Name("fileHome")
@Scope(ScopeType.CONVERSATION)
public class FileHome extends NodeHome<File> {
- public static final int PREVIEW_SIZE_MIN = 240;
- public static final int PREVIEW_SIZE_MAX = 1600;
- public static final int PREVIEW_ZOOM_STEP = 240;
+ public static final int PREVIEW_SIZE_MIN = 60;
+ public static final int PREVIEW_SIZE_MAX = 1320;
+ public static final int PREVIEW_ZOOM_STEP = 120;
/* -------------------------- Context Wiring ------------------------------ */
@In
Map<String, FileMetaMap.FileMetaInfo> fileMetaMap;
+ @In
+ ImporterRegistry importerRegistry;
+
/* -------------------------- Request Wiring ------------------------------ */
/* -------------------------- Internal State ------------------------------ */
@@ -34,7 +44,7 @@
private String contentType;
// TODO: This should really use an InputStream and directly stream into the BLOB without consuming server memory
private byte[] filedata;
- private int imagePreviewSize = 240;
+ private int imagePreviewSize = PREVIEW_SIZE_MIN;
public String getFilename() { return filename; }
public void setFilename(String filename) { this.filename = filename; }
@@ -47,6 +57,10 @@
public int getImagePreviewSize() { return imagePreviewSize; }
+ private Importer selectedImporter;
+ public Importer getSelectedImporter() { return selectedImporter; }
+ public void setSelectedImporter(Importer selectedImporter) { this.selectedImporter = selectedImporter; }
+
/* -------------------------- Custom CUD ------------------------------ */
protected boolean preparePersist() {
@@ -67,11 +81,17 @@
}
protected boolean prepareUpdate() {
+
+ if (selectedImporter != null) {
+ AbstractImporter importer = (AbstractImporter) Component.getInstance(selectedImporter.getComponentName());
+ return importer.handleImport(getEntityManager(), getInstance());
+ } else {
// Sync file instance with form data
syncFile();
return true;
}
+ }
/* -------------------------- Internal Methods ------------------------------ */
@@ -82,7 +102,14 @@
getInstance().setFilename(filename);
getInstance().setFilesize(filedata.length); // Don't trust the browsers headers!
getInstance().setData(filedata);
- getInstance().setContentType(contentType);
+
+ String mimeType;
+ try {
+ mimeType = Magic.getMagicMatch(filedata).getMimeType();
+ } catch (Exception ex) {
+ mimeType = contentType; // Default to what the browser tells us
+ }
+ getInstance().setContentType(mimeType);
// Handle image/picture meta info
if (fileMetaMap.get(getInstance().getContentType()) != null &&
@@ -125,12 +152,31 @@
/* -------------------------- Public Features ------------------------------ */
+ public List<Importer> getAvailableImporters() {
+ List<Importer> availableImporters = new ArrayList<Importer>();
+ for (Importer importer : importerRegistry.getImporters()) {
+ List<String> supportedMimeTypes = Arrays.asList(importer.getHandledMimeTypes());
+ List<String> supportedExtensions = Arrays.asList(importer.getHandledExtensions());
+ if (supportedMimeTypes.contains(getInstance().getContentType()) &&
+ supportedExtensions.contains(getInstance().getExtension()) ) {
+ availableImporters.add(importer);
+ }
+ }
+ return availableImporters;
+ }
+
+ public void zoomActualSize() {
+ imagePreviewSize = getInstance().getImageMetaInfo().getSizeX();
+ }
+
public void zoomPreviewIn() {
if (imagePreviewSize < PREVIEW_SIZE_MAX) imagePreviewSize = imagePreviewSize + PREVIEW_ZOOM_STEP;
}
public void zoomPreviewOut() {
- if (imagePreviewSize > PREVIEW_SIZE_MIN) imagePreviewSize = imagePreviewSize - PREVIEW_ZOOM_STEP;
+ if (imagePreviewSize > PREVIEW_SIZE_MIN && (imagePreviewSize - PREVIEW_ZOOM_STEP) > PREVIEW_SIZE_MIN)
+ imagePreviewSize = imagePreviewSize - PREVIEW_ZOOM_STEP;
+ else imagePreviewSize = PREVIEW_SIZE_MIN;
}
}
1.23 +6 -6 jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action/NodeHome.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: NodeHome.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action/NodeHome.java,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -b -r1.22 -r1.23
--- NodeHome.java 25 Aug 2007 17:59:24 -0000 1.22
+++ NodeHome.java 27 Aug 2007 22:22:28 -0000 1.23
@@ -261,37 +261,37 @@
/**
* Called before the superclass does its preparation;
- * @return boolean continue or veto
+ * @return boolean continue processing
*/
protected boolean preparePersist() { return true; }
/**
* Called after superclass did its preparation right before the actual persist()
- * @return boolean continue or veto
+ * @return boolean continue processing
*/
protected boolean beforePersist() { return true; }
/**
* Called before the superclass does its preparation;
- * @return boolean continue or veto
+ * @return boolean continue processing
*/
protected boolean prepareUpdate() { return true; }
/**
* Called after superclass did its preparation right before the actual update()
- * @return boolean continue or veto
+ * @return boolean continue processing
*/
protected boolean beforeUpdate() { return true; }
/**
* Called before the superclass does its preparation;
- * @return boolean continue or veto
+ * @return boolean continue processing
*/
protected boolean prepareRemove() { return true; }
/**
* Called after superclass did its preparation right before the actual remove()
- * @return boolean continue or veto
+ * @return boolean continue processing
*/
protected boolean beforeRemove() { return true; }
More information about the jboss-cvs-commits
mailing list