Introduce set mime type.
authorMathieu Baudier <mbaudier@argeo.org>
Sat, 23 Jan 2021 11:39:43 +0000 (12:39 +0100)
committerMathieu Baudier <mbaudier@argeo.org>
Sat, 23 Jan 2021 11:39:43 +0000 (12:39 +0100)
org.argeo.jcr/src/org/argeo/jcr/JcrUtils.java

index d66293d9652c4542713f98e4fd2ca841d6eff484..cb9fe6e471797a9289a7ff945c53d4530221ff33 100644 (file)
@@ -727,7 +727,7 @@ public class JcrUtils {
                Workspace fromWorkspace = fromSession.getWorkspace();
                Workspace toWorkspace = toSession.getWorkspace();
                String errorMsg = "Cannot copy workspace " + fromWorkspace + " to " + toWorkspace + " via XML.";
-               
+
                try (PipedInputStream in = new PipedInputStream(1024 * 1024);) {
                        new Thread(() -> {
                                try (PipedOutputStream out = new PipedOutputStream(in)) {
@@ -1621,6 +1621,7 @@ public class JcrUtils {
                        }
                        binary = contentNode.getSession().getValueFactory().createBinary(in);
                        contentNode.setProperty(Property.JCR_DATA, binary);
+                       updateLastModified(contentNode);
                        return fileNode;
                } catch (RepositoryException e) {
                        throw new JcrException("Cannot create file node " + fileName + " under " + folderNode, e);
@@ -1634,6 +1635,19 @@ public class JcrUtils {
                return fileNode.getNode(Node.JCR_CONTENT).getProperty(Property.JCR_DATA).getBinary().getStream();
        }
 
+       /**
+        * Set the properties of {@link NodeType#MIX_MIMETYPE} on the content of this
+        * file node.
+        */
+       public static void setFileMimeType(Node fileNode, String mimeType, String encoding) throws RepositoryException {
+               Node contentNode = fileNode.getNode(Node.JCR_CONTENT);
+               if (mimeType != null)
+                       contentNode.setProperty(Property.JCR_MIMETYPE, mimeType);
+               if (encoding != null)
+                       contentNode.setProperty(Property.JCR_ENCODING, encoding);
+               // TODO remove properties if args are null?
+       }
+
        /**
         * Computes the checksum of an nt:file.
         *