Make CMS image framework more extensible.
[lgpl/argeo-commons.git] / org.argeo.cms.ui / src / org / argeo / cms / ui / internal / JcrFileUploadReceiver.java
index 47eb191f9c1e25bf1ac02656074966f9ab3b2cb6..c2399968b0372b11ce547a7f2cc518faa1d2f855 100644 (file)
@@ -11,43 +11,36 @@ import javax.jcr.RepositoryException;
 import javax.jcr.nodetype.NodeType;
 
 import org.apache.commons.io.FilenameUtils;
-import org.argeo.cms.CmsException;
-import org.argeo.cms.CmsNames;
 import org.argeo.cms.ui.CmsImageManager;
+import org.argeo.cms.ui.widgets.Img;
+import org.argeo.jcr.JcrException;
 import org.argeo.jcr.JcrUtils;
 import org.eclipse.rap.fileupload.FileDetails;
 import org.eclipse.rap.fileupload.FileUploadReceiver;
 
-public class JcrFileUploadReceiver extends FileUploadReceiver implements
-               CmsNames {
+public class JcrFileUploadReceiver extends FileUploadReceiver {
+       private Img img;
        private final Node parentNode;
        private final String nodeName;
        private final CmsImageManager imageManager;
 
        /** If nodeName is null, use the uploaded file name */
-       public JcrFileUploadReceiver(Node parentNode, String nodeName,
-                       CmsImageManager imageManager) {
+       public JcrFileUploadReceiver(Img img, Node parentNode, String nodeName, CmsImageManager imageManager) {
                super();
+               this.img = img;
                this.parentNode = parentNode;
                this.nodeName = nodeName;
                this.imageManager = imageManager;
        }
 
        @Override
-       public void receive(InputStream stream, FileDetails details)
-                       throws IOException {
+       public void receive(InputStream stream, FileDetails details) throws IOException {
                try {
-                       String fileName = nodeName != null ? nodeName : details
-                                       .getFileName();
+                       String fileName = nodeName != null ? nodeName : details.getFileName();
                        String contentType = details.getContentType();
                        if (isImage(details.getFileName(), contentType)) {
-                               imageManager.uploadImage(parentNode, fileName, stream);
+                               imageManager.uploadImage(img.getNode(),parentNode, fileName, stream, contentType);
                                return;
-                               // InputStream inputStream = new ByteArrayInputStream(arr);
-                               // ImageData id = new ImageData(inputStream);
-                               // fileNode.addMixin(CmsTypes.CMS_IMAGE);
-                               // fileNode.setProperty(CMS_IMAGE_WIDTH, id.width);
-                               // fileNode.setProperty(CMS_IMAGE_HEIGHT, id.height);
                        }
 
                        Node fileNode;
@@ -65,14 +58,13 @@ public class JcrFileUploadReceiver extends FileUploadReceiver implements
                        processNewFile(fileNode);
                        fileNode.getSession().save();
                } catch (RepositoryException e) {
-                       throw new CmsException("cannot receive " + details, e);
+                       throw new JcrException("Cannot receive " + details, e);
                }
        }
 
        protected Boolean isImage(String fileName, String contentType) {
                String ext = FilenameUtils.getExtension(fileName);
-               return ext != null
-                               && (ext.equals("png") || ext.equalsIgnoreCase("jpg"));
+               return ext != null && (ext.equals("png") || ext.equalsIgnoreCase("jpg"));
        }
 
        protected void processNewFile(Node node) {