[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