1 package org
.argeo
.cms
.internal
;
3 import static javax
.jcr
.nodetype
.NodeType
.NT_FILE
;
5 import java
.io
.IOException
;
6 import java
.io
.InputStream
;
9 import javax
.jcr
.Property
;
10 import javax
.jcr
.RepositoryException
;
11 import javax
.jcr
.nodetype
.NodeType
;
13 import org
.apache
.commons
.io
.FilenameUtils
;
14 import org
.argeo
.cms
.CmsException
;
15 import org
.argeo
.cms
.CmsImageManager
;
16 import org
.argeo
.cms
.CmsNames
;
17 import org
.argeo
.jcr
.JcrUtils
;
18 import org
.eclipse
.rap
.addons
.fileupload
.FileDetails
;
19 import org
.eclipse
.rap
.addons
.fileupload
.FileUploadReceiver
;
21 public class JcrFileUploadReceiver
extends FileUploadReceiver
implements
23 private final Node parentNode
;
24 private final String nodeName
;
25 private final CmsImageManager imageManager
;
27 /** If nodeName is null, use the uploaded file name */
28 public JcrFileUploadReceiver(Node parentNode
, String nodeName
,
29 CmsImageManager imageManager
) {
31 this.parentNode
= parentNode
;
32 this.nodeName
= nodeName
;
33 this.imageManager
= imageManager
;
37 public void receive(InputStream stream
, FileDetails details
)
40 String fileName
= nodeName
!= null ? nodeName
: details
42 String contentType
= details
.getContentType();
43 if (isImage(details
.getFileName(), contentType
)) {
44 imageManager
.uploadImage(parentNode
, fileName
, stream
);
46 // InputStream inputStream = new ByteArrayInputStream(arr);
47 // ImageData id = new ImageData(inputStream);
48 // fileNode.addMixin(CmsTypes.CMS_IMAGE);
49 // fileNode.setProperty(CMS_IMAGE_WIDTH, id.width);
50 // fileNode.setProperty(CMS_IMAGE_HEIGHT, id.height);
54 if (parentNode
.hasNode(fileName
)) {
55 fileNode
= parentNode
.getNode(fileName
);
56 if (!fileNode
.isNodeType(NT_FILE
))
59 fileNode
= JcrUtils
.copyStreamAsFile(parentNode
, fileName
, stream
);
61 if (contentType
!= null) {
62 fileNode
.addMixin(NodeType
.MIX_MIMETYPE
);
63 fileNode
.setProperty(Property
.JCR_MIMETYPE
, contentType
);
65 processNewFile(fileNode
);
66 fileNode
.getSession().save();
67 } catch (RepositoryException e
) {
68 throw new CmsException("cannot receive " + details
, e
);
72 protected Boolean
isImage(String fileName
, String contentType
) {
73 String ext
= FilenameUtils
.getExtension(fileName
);
75 && (ext
.equals("png") || ext
.equalsIgnoreCase("jpg"));
78 protected void processNewFile(Node node
) {